7133 lines
295 KiB
HTML
7133 lines
295 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. To subscribe to <I>Linux Journal</I>, click
|
||
<A HREF="http://www.linuxjournal.com/subform.html">here</A>.
|
||
|
||
<P> <HR> <P>
|
||
<!--=================================================================-->
|
||
<H1 align="center">Table of Contents <BR>January 1998 Issue #24</H1>
|
||
|
||
<P> <HR> <P>
|
||
<table><tr>
|
||
<td rowspan=4>
|
||
<UL>
|
||
<LI><A HREF="../index.html">The Front Page</A>
|
||
<LI><A HREF="./lg_mail24.html">The MailBag</A>
|
||
<ul>
|
||
<li><a HREF="./lg_mail24.html#help">Help Wanted</a>
|
||
<li><a HREF="./lg_mail24.html#gen">General Mail</a>
|
||
</ul>
|
||
<LI><A HREF="./lg_tips24.html">More 2 Cent Tips</A>
|
||
<ul>
|
||
<li><a HREF="./lg_tips24.html#ps/vc">Followup to PostScript and VC Key
|
||
Sequences (LG#23)</a>
|
||
<li><a HREF="./lg_tips24.html#ps/fu">PostScript $0.02 follow-up</a>
|
||
<li><a HREF="./lg_tips24.html#cheap">Yet another cheap tip</a>
|
||
<li><a HREF="./lg_tips24.html#dose">2 cent tip - dosemu</a>
|
||
<li><a HREF="./lg_tips24.html#find1">Re: 2c Tip "Finding What You Want
|
||
with find"</a>
|
||
<li><a HREF="./lg_tips24.html#find2">Re: Finding What You Want with find</a>
|
||
<li><a HREF="./lg_tips24.html#find3">Finding What You Want with find Part
|
||
III</a>
|
||
<li><a HREF="./lg_tips24.html#find4">More on finding</a>
|
||
<li><a HREF="./lg_tips24.html#find5">Another way to find</a>
|
||
<li><a HREF="./lg_tips24.html#find6">Yet another way to find</a>
|
||
<li><a HREF="./lg_tips24.html#find7">A final(?) way to find</a>
|
||
<li><a HREF="./lg_tips24.html#mozilla">Re: I need some help</a>
|
||
<li><a HREF="./lg_tips24.html#spin">Spinning Down Unused HDs</a>
|
||
<li><a HREF="./lg_tips24.html#egg1">LG Tips and Tricks (Netscape)</a>
|
||
<li><a HREF="./lg_tips24.html#egg2">Easter Eggs in Netscape</a>
|
||
<li><a HREF="./lg_tips24.html#calc">Calculator Tip</a>
|
||
<li><a HREF="./lg_tips24.html#nohack">Security script</a>
|
||
<li><a HREF="./lg_tips24.html#cron">Controlling cron.hourly</a>
|
||
<li><a HREF="./lg_tips24.html#ping">Syslog and ping</a>
|
||
</ul>
|
||
<LI><A HREF="./lg_bytes24.html">News Bytes</A>
|
||
<ul>
|
||
<li><a HREF="./lg_bytes24.html#general">News in General</a>
|
||
<li><a HREF="./lg_bytes24.html#software">Software Announcements</a>
|
||
</ul>
|
||
<LI><A HREF="./lg_answer24.html">The Answer Guy</A>, by James T. Dennis
|
||
<ul>
|
||
<li><a HREF="./lg_answer24.html#net1">Netscape Mail Crashing</a>
|
||
<li><a HREF="./lg_answer24.html#slack">Slackware Help</a>
|
||
<li><a HREF="./lg_answer24.html#net2">Netscape /var/spool/USER </a>
|
||
<li><a HREF="./lg_answer24.html#virtual">Getting Rid of Virtual Screens</a>
|
||
<li><a HREF="./lg_answer24.html#diald">diald's niche</a>
|
||
<li><a HREF="./lg_answer24.html#redh1">Upgrade to Red Hat 5.0?</a>
|
||
<li><a HREF="./lg_answer24.html#redh2">Red Hat Linux and WABI and other things</a>
|
||
<li><a HREF="./lg_answer24.html#pdt">Linux as a PDT</a>
|
||
</ul>
|
||
<LI><A HREF="./nielsen.html">Quick autofs Tutorial</a>, by Mark Nielsen
|
||
<LI><A HREF="./jaeggli.html">Buying A Laptop</a>, by Joel Jaeggli
|
||
<LI><A HREF="./bavendiek.html">Copying Files Using Mirror</a>, by Gerd
|
||
Bavendiek
|
||
<LI><A HREF="./Article3e.html">Linux Benchmarking: Part 3 -- Interpreting
|
||
Benchmark Results</a>,
|
||
by André D. Balsa
|
||
<LI><A HREF="./smith.html">LXNY at UNIX EXPO '97</a>, by Michael E. Smith
|
||
<LI><A HREF="./nelson.html">More Adventures with SAMBA </a>, by Dave Nelson
|
||
<LI><A HREF="./campo.html">My Linux Revolution</a>, by Ylian Saint-Hilaire
|
||
& Erik Campo
|
||
<LI><A HREF="./ayers.html">New Release Reviews</A>, by Larry Ayers
|
||
<ul>
|
||
<li><A HREF="./ayers.html">KDE and Gnome</a>
|
||
<li><A HREF="./ayers2.html">Updates and Correspondence</A>
|
||
</ul>
|
||
<LI><A HREF="./moore.html">Product Review: Applixware</A>, by Gary Moore
|
||
<LI><A HREF="./berglund.html">A Bit About Security</A>, by Marcus Berglund
|
||
<LI><A HREF="./rogers.html">The Standard C Library for Linux, Part one</A>,
|
||
by James M. Rogers
|
||
<LI><A HREF="./zawinski.html">xscreensaver</A>, by Jamie Zawinski
|
||
<LI><A HREF="./lg_backpage24.html">The Back Page</A>
|
||
<ul>
|
||
<li><a HREF="./lg_backpage24.html#authors">About This Month's Authors</a>
|
||
<li><a HREF="./lg_backpage24.html#notlinux">Not Linux</a>
|
||
</UL>
|
||
</UL>
|
||
</td>
|
||
</tr><tr>
|
||
<td align=center>
|
||
<A HREF="lg_answer24.html">
|
||
<img src="../gx/wizard2.gif" border=0 alt="">
|
||
</a>
|
||
<A HREF="lg_answer24.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="">
|
||
<BR>
|
||
<!-- </a> -->
|
||
<I>The Graphics Muse</I> will return next month.
|
||
</td>
|
||
</tr><tr>
|
||
<td align=center>
|
||
<img src="../gx/fisk/attndant.gif" border=0 alt=""><BR>
|
||
<!-- <A HREF="./wkndmech_dec97/wkndmech.html"><I>The Weekend
|
||
Mechanic</I></a> -->
|
||
<I>The Weekend Mechanic</I> will return next month.
|
||
</td>
|
||
</tr><tr>
|
||
</table>
|
||
|
||
<P> <HR><P>
|
||
<!--=============================================================-->
|
||
<A HREF="./issue24.txt">TWDT 1 (text)</A><BR>
|
||
<A HREF="./issue24.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_mail24.html#help">Help Wanted -- Article Ideas</a>
|
||
<li><a HREF="./lg_mail24.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: Sun, 30 Nov 1997 14:08:24 +0000<br>
|
||
From: David Stern <a
|
||
href="mailto:kotsya@mailhost2.cac.washington.edu">kotsya@mailhost2.cac.washington.edu</a><br>
|
||
Subject: Help Wanted -- Article Ideas
|
||
<p>
|
||
I'm at that point in my Linux development where I'm comfortable with
|
||
the basics, and am venturing out to learn and discover the myriad of
|
||
alternatives which exist. While I appreciate the many alternatives, it
|
||
can be difficult for someone with little experience to decide which
|
||
MUA, MTA, proxy..is most suitable. When each individual must
|
||
personally begin anew to evaluate the field, unnecessary repetion of
|
||
efforts results and often a selection is made based on incomplete
|
||
information. When the user later discovers a more suitable
|
||
alternative, and possibly later another, a glutton of inefficiency
|
||
results.
|
||
<p>
|
||
On that note, I'd like to suggest "head-to-head" comparision articles
|
||
of similar programs. A chart with columns and rows which represent the
|
||
programs and the features would be invaluable for Linux users ranging
|
||
from completely new to advanced, thus I would consider that a
|
||
necessity. Optionally, different recognitions may be given for
|
||
exceptional achievement. Notes on individual programs or categories,
|
||
and a brief summary would probably be required.
|
||
<p>
|
||
If thorough analytical evaluations were performed, this may exceed the
|
||
resources and other imposed limitations of Linux Gazzette, but I'm not
|
||
asking for that much depth. I'm just looking for a cursory examination
|
||
of programs with a comparison of features in a "side-by-side" format.
|
||
<p>
|
||
While I appreciate the reviews of individual programs, and enjoy the
|
||
deeper attention which can be given, there is an ever-increasing number
|
||
of alternatives available to the Linux user, and summary comparisons of
|
||
programs is now a very real need, and the importance will only increase
|
||
with time.
|
||
<p>
|
||
Please consider adding a side by side summary comparison of programs
|
||
feature article. I think this would not only make Linux Gazzette
|
||
better than it already is, but also expand the readership. Thanks and
|
||
sincerely,
|
||
<p>
|
||
David Stern
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Fri, 28 Nov 1997 08:35:04<br>
|
||
From: Erwin Penders <a
|
||
href="mailto:ependers@cobweb.nl">ependers@cobweb.nl</a><br>
|
||
Subject: passwd shadow convert problem
|
||
<p>
|
||
I am running RedHat 4.2 with normal passwords since a couple
|
||
of month's. Now i read the shadow-password howto and i
|
||
wanted this also to work on my system. After reading the manual
|
||
i went to a 'blank' redhat system with a couple of users and i
|
||
ran /usr/sbin/pwconv5 and the shadow was up and running fine.
|
||
BUT on another system (same as the first) but with a lot more
|
||
users the pwconv5 runs but won't stop. It makes an empty shadow
|
||
file and i have to kill pwconv5 because it isn't doing anything.
|
||
<p>
|
||
I then copied the passwd file from the second to the first system
|
||
and tried on the first system... and the same problem.. no shadow.
|
||
<p>
|
||
Can anybody tell me what i do wrong !?
|
||
<p>
|
||
Thanks everybody.
|
||
<p>
|
||
Erwin Penders
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Fri, 21 Nov 1997 01:39:51<br>
|
||
From: Manish Oberoi <a
|
||
href="mailto:oberoi@coeibm.rutgers.edu">oberoi@coeibm.rutgers.edu</a><br>
|
||
Subject: printing problems
|
||
<p>
|
||
Anyone that can help me. I'd love to hear it. I try running the lpr,
|
||
but everytime I get no name for local machine. How do I set this and/or
|
||
what is the problem.
|
||
<p>
|
||
Manish Oberoi
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Wed, 10 Dec 1997 20:33:38 -0800<br>
|
||
From: Nolan Zak <a href="mailto:nzak@uniserve.com">nzak@uniserve.com</a><br>
|
||
Subject: Help Wanted!
|
||
<p>
|
||
I'm running RH 4.2 with kernel 2.0.30 on an Intel P90, I've only been at
|
||
this for a couple weeks so go easy on me if this is a stupid question. :)
|
||
<p>
|
||
I'm trying to get ppp to working for dialing into my ISP, but no matter
|
||
what I do it disconnects.
|
||
<p>
|
||
Here's a small description of what is going on:
|
||
I set up /dev/modem --> /dev/cua1 and enabled full permissions on both.
|
||
Set the jumpers on my modem for com2, irq3.
|
||
Ran setserial to setup the proper device settings.
|
||
Re-compiled the kernel for ppp.
|
||
checked my modem init strings.
|
||
<p>
|
||
Now, no matter what I use (minicom, shell scripts, netcfg), the chat script
|
||
goes through the proper procedure and starts up ppp on the server side,
|
||
passes control to pppd, which connects ppp0 <--> /dev/modem, and after
|
||
that, the modem hangs up (within about 2 seconds).
|
||
<p>
|
||
I've tried all kinds of command line args to pppd, with no luck. Can
|
||
anyone help me out here?
|
||
<p>
|
||
Later,
|
||
Nolan
|
||
<p>
|
||
My webpage--> http://users.uniserve.com/~nzak/welcome.htm
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Thu, 11 Dec 1997 22:20:54 -0500<br>
|
||
From: "atm" <a href="mailto:atm@dapa.com">atm@dapa.com</a><br>
|
||
Subject: Linux and routing
|
||
<p>
|
||
I have heard that you can connect a LAN to the internet via just 1
|
||
assigned IP address. This is what I am planning on doing, however, I do
|
||
not know how one would go about doing it, and I would like to ask you if
|
||
you could do an article about it. <i>(Any takers among our readers?
|
||
--Editor)</i>
|
||
<p>
|
||
I plan on getting a cable modem soon, so the bandwidth would be pretty
|
||
high, so that is why I have decided to try to make this connection
|
||
provide for my whole house via a LAN connection in my home. What I have
|
||
read is that you could use the private IPs, meaning the 10.x.x.x or so,
|
||
192.168.x.x and some others for the IP of the LAN and have these connect
|
||
to some box (the LINUX box?) that would provide its connection to the
|
||
internet to the inside LAN connected to the box. Is the problem that
|
||
you would have to route the assigned address to the private IPs for the
|
||
LAN use. I have also read that this would slow down the connection a
|
||
bit or something, but that is a price I am willing to pay. So, the
|
||
summary of the question is how would I be able to connect many computers
|
||
to the internet via just 1 assigned IP address? I would like to be able
|
||
to do it using my LINUX box connected to the internet via cable modem,
|
||
and to my LAN via an Ethernet link. Any help is much appreciated,
|
||
thanks.
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Fri, 12 Dec 1997 10:41:54 +0000<br>
|
||
From: John Fisher <a
|
||
href="mailto:john@Atropos.apana.org.au">john@Atropos.apana.org.au</a><br>
|
||
Subject: Of Mouse and Men (no Cheese)
|
||
<p>
|
||
A very new boy to all this I am :-)
|
||
<p>
|
||
Problem--
|
||
<p>
|
||
Using a 486 pc & Slackware I'm unable to use my mouse due to this
|
||
error:
|
||
<p>
|
||
Too many symbolic links encountered /dev/console
|
||
<p>
|
||
Would very much apprecaite some help.
|
||
<p>
|
||
Regards
|
||
<p>
|
||
John Fisher
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Fri, 12 Dec 1997 09:23:14 -0500<br>
|
||
From: <a
|
||
href="mailto:Wenhao_Meng@dadebehring.com">Wenhao_Meng@dadebehring.com</a><br>
|
||
Subject: try to use a 386 computer
|
||
<p>
|
||
I am new in the Linux world. How new? I am so new that I have just ordered
|
||
a Redhat release 5.0. Though this is a new world I am very glad I am one of
|
||
you, the Linux lovers.
|
||
<p>
|
||
I used to have a 386 25 MHz computer. Not long time ago I bought a Pentium
|
||
200 MHz computer. Since then I have not played with 386. Is there any easy
|
||
and economical way to connect the 386 to the Pentinum computer where I will
|
||
install the Release 5.0. If so, what I can do with it or at lease what I
|
||
can learn from it.
|
||
<p>
|
||
Thank you very much. Waiting for talking to you.
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Tue, 16 Dec 1997 08:44:15 -0700<br>
|
||
From: Doug Milligan <a href="mailto:doug@nwrks.com">doug@nwrks.com</a><br>
|
||
Subject: Help Wanted: RedHat 5.0 sound
|
||
<p>
|
||
Have installed RedHat 5.0 and configured the sound card using sndconfig.
|
||
All went well and I heard the demo sound bite of Linus. However, I have
|
||
never heard another sound since. When browsing web sites with sound, no
|
||
audio is played. Anyone have any ideas?
|
||
<p>
|
||
Doug Milligan
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Thu, 25 Dec 1997 12:45:29 -0800 (PST)<br>
|
||
From: karl rossing <a
|
||
href="mailto:unixb0y@yahoo.com">unixb0y@yahoo.com</a><br>
|
||
Subject: LINUX AS A PDT
|
||
<p>
|
||
I was wondering if it is possble to get windows 95/NT to authenticate
|
||
to LINUX (using nis or nis+). I'm really getting tired of adding
|
||
accounts on the nt boxes for the linux boxes (for smb)...Is there any
|
||
commercial software availible?
|
||
<p>
|
||
I know of d-sync [http://www.m-tech.ab.ca/psynch/index.html]
|
||
and NSGINA
|
||
[http://www.dcs.qmw.ac.uk/~williams/]
|
||
which seems a bit of work to setup...
|
||
<p>
|
||
I'm not really looking for passwd syncronisation, i'd like to
|
||
consolidate it to the linux box, because the users use both linux/95/nt.
|
||
<p>
|
||
nuff said
|
||
<p>
|
||
Thanks,<br>
|
||
Karl Rossing
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
Date: Sun, 04 Jan 1998 23:54:37 +0100<BR>
|
||
From: Gabriele Giansante <A
|
||
HREF="mailto:gvgsoft@madnet.it">gvgsoft@madnet.it</A> <BR>
|
||
Subject: Perl and HTML
|
||
<P>
|
||
please pardon me for my bad english.
|
||
I need help for one exam in my university. I have to do a script CGI in
|
||
Perl and I have to recall with HTML. I have done all. Perl compile
|
||
without errors the script but when I run the HTML page and choose the
|
||
link to the script, I obtain only a list of script. Why is it? I put in
|
||
the Perl script the line #!/usr/local/bin/perl. I know this is used to
|
||
indicate the Perl compiler. I work on Linux RedHat 4.1 trying to execute
|
||
the script with browser ARENA and NETSCAPE.
|
||
I enjoy if you can help me.
|
||
I see Linux Gazette now the first time and like it because I find many
|
||
help on my questions. Pardon my english and
|
||
Thank you.
|
||
|
||
<a name="gen"></a>
|
||
<P> <hr> <P>
|
||
<!--===================================================================-->
|
||
<center><H3> General Mail </H3></center>
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Sun, 7 Dec 1997 11:15:36 PST<br>
|
||
From: Marty Leisner <a
|
||
href="mailto:leisner@sdsp.mc.xerox.com">leisner@sdsp.mc.xerox.com</a><br>
|
||
Subject: some requests
|
||
<p>
|
||
When including more than a few lines of code, include a link
|
||
to the code (i.e. the original source files).
|
||
<p>
|
||
In issue 22, I had problems with the line breaks cutting and
|
||
pasting a program from netscape into a window, saving and
|
||
recompiling.
|
||
<p>
|
||
Marty
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Wed, 10 Dec 1997 13:36:05 -0600 (CST)<br>
|
||
From: Justin Dossey <a href="mailto:dossey@ou.edu">dossey@ou.edu</a><br>
|
||
Subject: Help for trival problems
|
||
<p>
|
||
I notice that a lot of people write the Gazette with fairly trivial
|
||
problems that are difficult to solve via non-interactive media
|
||
(email). I'd like to remind some and inform others of the Linux
|
||
Internet Support Cooperative. An excerpt from the LISC home page
|
||
(http://www.linpeople.org) says:
|
||
<p>
|
||
"Since 1994, a small and somewhat foolish group of Linux system users
|
||
and administrators have been giving free technical support for Linux
|
||
under the name LinPeople, on Internet Relay Chat (IRC). With Linux
|
||
being a free operating system, it only seemed appropriate to provide a
|
||
free means of supporting it.Since 1994, a small and somewhat foolish
|
||
group of Linux system users and administrators have been giving free
|
||
technical support for Linux under the name LinPeople, on Internet
|
||
Relay Chat (IRC). With Linux being a free operating system, it only
|
||
seemed appropriate to provide a free means of supporting it."
|
||
<p>
|
||
It sometimes seems to linux users with problems that no one is
|
||
interested in helping them. They post to news and don't get a reply,
|
||
they send email to the Gazette and feel ignored. When you have a
|
||
problem, especially if you suspect that others might have the same,
|
||
try LISC. With most internet-connected Linux boxen, it's just a
|
||
matter of typing:
|
||
<p>
|
||
ircii irc.linpeople.org
|
||
/join #linpeople
|
||
<p>
|
||
and then asking the question.
|
||
<p>
|
||
The people at LISC will do what they can to solve your problem,
|
||
teaching you about Linux at the same time.
|
||
<p>
|
||
Justin Dossey
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Thu, 11 Dec 1997 06:35:00 -0500 (EST)<br>
|
||
From: Benjmin Lee Adamson <a
|
||
href="mailto:ladamson@itd.nrl.navy.mil">ladamson@itd.nrl.navy.mil</a><br>
|
||
Subject: Ah... Goodstuff...
|
||
<p>
|
||
I just found the Linux Gazette... I haven't read all of them yet, but I
|
||
really dig what I've found so far... :)
|
||
<p>
|
||
Really really really really goodstuff. :)
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Fri, 12 Dec 1997 01:03:04 +0100<br>
|
||
From: Diego Cortassa <a
|
||
href="mailto:cortassa.diego@usa.net">cortassa.diego@usa.net</a><br>
|
||
Subject: Netscape Hidden tips:w
|
||
|
||
<p>
|
||
I saw Ivan Griffin's 'Netscape Hidden "Easter Eggs"' tip on Linux Gazette
|
||
Issue 23 and I've got one more cool special URL:
|
||
<p>
|
||
about:mozilla
|
||
<p>
|
||
Read the message and take a look to the N animation while downloading a web
|
||
page ! :-)
|
||
<p>
|
||
P.S.
|
||
Linux Gazette is GREAT !!!!!!!!!
|
||
<p>
|
||
Diego Cortassa
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Sat, 20 Dec 1997 06:13:59 -0700<br>
|
||
From: Sengan Baring-Gould <a
|
||
href="mailto:senganb@cyrix.com">senganb@cyrix.com</a><br>
|
||
Subject: Loading times
|
||
<p>
|
||
Hi,
|
||
<p>
|
||
Thanks for the great work at linuxgazette.com.
|
||
I'd like to suggest an improvement: that the loading
|
||
does not get paused while the massive Linux Gazette
|
||
banner at the top of the page gets loaded... it's a pain
|
||
on a slow link.
|
||
<p>
|
||
Thanks
|
||
<p>
|
||
Sengan
|
||
<p>
|
||
<blockquote><i>(You might try turning off the display of graphical images
|
||
using your browser. Alternatively, you can wait a short while and then stop
|
||
the loading. Although the graphics may be incomplete, the text should be
|
||
there. --Editor)</i></blockquote>
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Sun, 21 Dec 1997 20:03:32 +0100<br>
|
||
From: Ingo Oeser <a
|
||
href="mailto:ioe@informatik.tu-chemnitz.de">ioe@informatik.tu-chemnitz.de</a><br>
|
||
Subject: Kewl new cover image
|
||
<p>
|
||
The subject just says what I would like to tell you: The cover image
|
||
(the one with "Linux Gazette" inside) really looks great!
|
||
<p>
|
||
cu<br>
|
||
Ingo
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Tue, 30 Dec 1997 09:52:10 -0500 (EST)<br>
|
||
From: Kragen Sittler <a
|
||
href="mailto:sittler@erim-int.com">sittler@erim-int.com</a><br>
|
||
Subject: http://www.operasoftware.com/alt_os.html
|
||
<p>
|
||
Using WinNT at work, I discovered this fabulous browser called Opera.
|
||
It's the fastest web browser I've ever used, including Lynx, but has most
|
||
of the features I want from Netscape. Also, it's fairly small -- right
|
||
now, my Opera process is under 5000K, even though it has six fairly heavy
|
||
web-pages open, and the download size just grew over one megabyte.
|
||
<p>
|
||
They're doing this funky pledge-drive thing where they ask people to
|
||
promise to buy copies of Opera for $35 for other platforms -- Mac, Be,
|
||
OS/2, and Linux -- before they've started developing Opera for those
|
||
platforms. They say they haven't gotten much support from the Linux
|
||
community -- perhaps it's because not many people have heard of them?
|
||
<p>
|
||
(I learned about Opera from Borland's web pages, btw.)
|
||
<p>
|
||
Kragen
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Tue, 30 Dec 1997 20:37:26 +0530<br>
|
||
From: Sudhir Krishnan <a
|
||
href="mailto:sudhir@kaveri.tifr.res.in">sudhir@kaveri.tifr.res.in</a><br>
|
||
Subject: Can I help you?
|
||
<p>
|
||
I have been using Linux for more than
|
||
a year now. There's no other OS that fascinates me more than Linux! I
|
||
have been programming in Linux using gcc. I have made my own text editor
|
||
for Linux, with various modes for emulating emacs, vi and turbo c
|
||
editor keystrokes. Also there are modes for C, C++ and Pascal programs
|
||
so that the keywords are highlighted. My home page's location is:
|
||
<p>
|
||
<a
|
||
href="http://www.geocities.com/SiliconValley/Pines/9147/">http://www.geocities.com/SiliconValley/Pines/9147/</a>
|
||
<p>
|
||
Here I have an entire page dedicated to Linux tips and help, meant for
|
||
the Linux newbie. There are sections regarding
|
||
PPP configuration, kernel compilation, installation and partitioning
|
||
etc. Please let me know if any of these could be
|
||
of help in any way.
|
||
<p>
|
||
regards,<br>
|
||
- sud -
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Wed, 31 Dec 1997 14:23:26 PST<br>
|
||
From: Marty Leisner <a
|
||
href="mailto:leisner@sdsp.mc.xerox.com">leisner@sdsp.mc.xerox.com</a><br>
|
||
Subject: Troff/Tex debate
|
||
<p>
|
||
I read Andrew Young's (aty@mintaka.sdsu.edu) letter in December,
|
||
then read Larry Ayers Issue 22 column...
|
||
<p>
|
||
I take issue with two of Larry's statements:
|
||
"Groff is the epitome of the non-user-friendly and cryptic unix
|
||
command-line tool."
|
||
Larry also says:
|
||
"Learning to use Groff on a Linux system might be an uphill battle, though Linux software developers must have
|
||
learned enough of it at one time or other, as most programs come with Groff-tagged man-page files. Groff's
|
||
apparent opacity and difficulty make LaTeX look easy in contrast!"
|
||
<p>
|
||
I'm not sure LaTeX is an improvement in these areas. I've used troff
|
||
for over 10 years and recently started to use LaTeX
|
||
(in fact, many
|
||
times LaTeX is far more obscure then troff). And there are a
|
||
few features in LaTeX I miss (like:
|
||
<p>
|
||
.sy stat \n(.F | fgrep Change >change.time
|
||
.so change.time
|
||
.sy rm change.time
|
||
<p>
|
||
to get the document time into the document (as opposed to the "TeX"
|
||
time, or having to manually change the date, which is invariably wrong.
|
||
I have a makefile which puts this in a file, then includes the file)
|
||
<p>
|
||
The biggest problem is the lack of reference materials for troff.
|
||
I've used Unix Text Processing (Dougherty/O'Reilly) which
|
||
Andrew mentions...I've never seen or heard of the other book...
|
||
<p>
|
||
There are some references for troff/pic/indexing tools on:
|
||
http://cm.bell-labs.com/cm/cs/cstr.html (including the one mentioned later)
|
||
There are also good papers on troff in:
|
||
4.4BSD User's Supplementary Documents (I'm not sure
|
||
which ones can be redistributed and which ones are only in the
|
||
book).
|
||
<p>
|
||
FYI, from Eric Raymond's online jargon file:
|
||
:troff:: /T'rof/ or /trof/ /n./ [Unix] The gray
|
||
eminence of Unix text processing; a formatting and phototypesetting
|
||
program, written originally in PDP-11 assembler and then in
|
||
barely-structured early C by the late Joseph Ossanna, modeled after
|
||
the earlier ROFF which was in turn modeled after Multics' RUNOFF by
|
||
Jerome Saltzer (*that* name came from the expression "to run
|
||
off a copy"). A companion program, {nroff}, formats output for
|
||
terminals and line printers.
|
||
<p>
|
||
In 1979, Brian Kernighan modified troff so that it could drive
|
||
phototypesetters other than the Graphic Systems CAT. His paper
|
||
describing that work ("A Typesetter-independent troff," AT&T CSTR
|
||
#97) explains troff's durability. After discussing the program's
|
||
"obvious deficiencies -- a rebarbative input syntax, mysterious
|
||
and undocumented properties in some areas, and a voracious appetite
|
||
for computer resources" and noting the ugliness and extreme
|
||
hairiness of the code and internals, Kernighan concludes:
|
||
<p>
|
||
<blockquote>
|
||
None of these remarks should be taken as denigrating Ossanna's
|
||
accomplishment with TROFF. It has proven a remarkably robust
|
||
tool, taking unbelievable abuse from a variety of preprocessors
|
||
and being forced into uses that were never conceived of in the
|
||
original design, all with considerable grace under fire.
|
||
</blockquote>
|
||
The success of {{TeX}} and desktop publishing systems have
|
||
reduced `troff''s relative importance, but this tribute
|
||
perfectly captures the strengths that secured `troff' a place
|
||
in hacker folklore; indeed, it could be taken more generally as an
|
||
indication of those qualities of good programs that, in the long
|
||
run, hackers most admire.
|
||
<p>
|
||
marty
|
||
|
||
<P> <HR> <P>
|
||
<!--====================================================================-->
|
||
<IMG ALT=" " SRC="../gx/envelope.gif">
|
||
|
||
Date: Fri, 02 Jan 1998 15:33:15 +0100<br>
|
||
From: Wolfgang Laun <a href="mailto:Wolfgang Laun@aut.alcatel.at">Wolfgang
|
||
Laun@aut.alcatel.at</a><br>
|
||
Subject: Linux Gazette/GNU/Linux Benchmarking
|
||
<p>
|
||
A recent <i>LG</i> article by André Balsa on benchmarking provided interesting material to me.
|
||
<p>
|
||
Having a little experience with benchmarks myself (some of it while
|
||
checking optimizing efforts myself on a compiler) I have found
|
||
that caching on Intel CPUs can significantly distort results.
|
||
In the first part you mention that caching can be disabled via
|
||
the BIOS setup. If you write your own benchmarks (or have the source),
|
||
you could also consider using the pertaining CPU instructions, easily
|
||
inserted using gcc's _asm_. This could be used to keep caching up while
|
||
running the code you want to measure and to flush between cycles, in
|
||
order
|
||
not to "carry over" a cache bonus from the previous iteration.
|
||
<p>
|
||
Wolfgang
|
||
<p>
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
<center>Published in Linux Gazette Issue 24, January 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_tips24.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> <HR> <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_tips24.html#ps/vc">Followup to PostScript and VC Key
|
||
Sequences (LG#23)</a>
|
||
<li><a HREF="./lg_tips24.html#ps/fu">PostScript $0.02 follow-up</a>
|
||
<li><a HREF="./lg_tips24.html#cheap">Yet another cheap tip</a>
|
||
<li><a HREF="./lg_tips24.html#dose">2 cent tip - dosemu</a>
|
||
<li><a HREF="./lg_tips24.html#find1">Re: 2c Tip "Finding What You Want
|
||
with find"</a>
|
||
<li><a HREF="./lg_tips24.html#find2">Re: Finding What You Want with find</a>
|
||
<li><a HREF="./lg_tips24.html#find3">Finding What You Want with find Part
|
||
III</a>
|
||
<li><a HREF="./lg_tips24.html#find4">More on finding</a>
|
||
<li><a HREF="./lg_tips24.html#find5">Another way to find</a>
|
||
<li><a HREF="./lg_tips24.html#find6">Yet another way to find</a>
|
||
<li><a HREF="./lg_tips24.html#find7">A final(?) way to find</a>
|
||
<li><a HREF="./lg_tips24.html#mozilla">Re: I need some help</a>
|
||
<li><a HREF="./lg_tips24.html#spin">Spinning Down Unused HDs</a>
|
||
<li><a HREF="./lg_tips24.html#egg1">LG Tips and Tricks (Netscape)</a>
|
||
<li><a HREF="./lg_tips24.html#egg2">Easter Eggs in Netscape</a>
|
||
<li><a HREF="./lg_tips24.html#calc">Calculator Tip</a>
|
||
<li><a HREF="./lg_tips24.html#nohack">Security script</a>
|
||
<li><a HREF="./lg_tips24.html#cron">Controlling cron.hourly</a>
|
||
<li><a HREF="./lg_tips24.html#ping">Syslog and ping</a>
|
||
</ul>
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="ps/vc"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Followup to PostScript and VC Key Sequences (LG#23)
|
||
</H3>
|
||
<p>
|
||
Date: Thu, 4 Dec 1997 16:43:47 +0000 (GMT)<br>
|
||
From: Ivan Griffin <a
|
||
href="mailto:ivan.griffin@ul.ie">ivan.griffin@ul.ie</a>
|
||
<p>
|
||
I just wanted to point out that some of my 2cent tips in Issue 23 of the
|
||
Linux Gazettte (December, 1997) were a little funky in their appearance.
|
||
<p>
|
||
While it doesn't really matter at all with the VC key sequences, it may
|
||
affect someone's understanding of the bad (imho) PostScript generated by
|
||
the Microsoft PS driver.
|
||
<p>
|
||
In this, the PostScript should have been pre-formatted using the
|
||
appropriate HTML tags. Basically, the line
|
||
<pre>
|
||
30000 VM?
|
||
</pre>
|
||
Is on its own, and not part of any other line.
|
||
All that you have to do to remove this artificial restriction on
|
||
viewing/converting the PostScript with ghostscript is to delete this line.
|
||
<p>
|
||
On another note, someone asked me where those key sequences come from.
|
||
If you check either keyboard.c or keyb_m68k.c, you will find an array of
|
||
function pointers called spec_fn_table[].
|
||
<p>
|
||
This array contains a list of functions to execute when certain key
|
||
combinations are received... The key combinations listed in the
|
||
2cent tips execute the functions show_state(), show_mem() and show_regs()
|
||
<p>
|
||
You will find the source for function show_state() in
|
||
/usr/src/linux/kernel/sched.c
|
||
<p>
|
||
show_mem() is in
|
||
/usr/src/linux/arch/i386/mm/init.c
|
||
<p>
|
||
and show_regs() is in
|
||
/usr/src/linux/arch/i386/kernel/process.c
|
||
<p>
|
||
Best Regards,<br>
|
||
Ivan.
|
||
<p>
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="ps/fu"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
PostScript $0.02 follow-up
|
||
</H3>
|
||
<p>
|
||
Date: Wed, 3 Dec 1997 13:51:48 -0500 (EST)<br>
|
||
From: Kyle Ferrio <a href="mailto:kbf@phy.duke.edu">kbf@phy.duke.edu</a>
|
||
<p>
|
||
In the December issue of LG, Ivan Griffin suggests using pstops from the
|
||
psutils package to accomplish two-up printing, gives a helpful example for
|
||
A4 paper, and points out that the command line needs to be tweaked for US
|
||
letter. If you're using US letter paper, then psnup (also part of
|
||
psutils) already does the job nicely with no uncomfortable thinking. It
|
||
might even work for A4, but I haven't checked. The psutils are generally
|
||
very handy, so folks might want to have a look. An RPM is available in
|
||
/contrib at ftp.redhat.com, for instance. Be advised that there seem to
|
||
be at least two very distinct packages called psutils floating around
|
||
Net-space.
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="cheap"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Yet another cheap tip.
|
||
</H3>
|
||
<p>
|
||
Date: Sun, 30 Nov 1997 03:48:40 -0800 (PST)<br>
|
||
From: Gary Johnson <a
|
||
href="mailto:gjohnson@season.com">gjohnson@season.com</a>
|
||
<p>
|
||
Sorry if it has been mentioned before, I thought I would throw
|
||
it in the Gazette pile just in case it hasn't . . .
|
||
<p>
|
||
Cat proof keyboard.
|
||
<p>
|
||
Switching to an unused virtual console is a quick way to blank
|
||
the screen and disable the keyboard. To make one available try
|
||
<pre>
|
||
setterm -clear > /dev/tty12
|
||
</pre>
|
||
on startup. ALT F12 flips to it, or ALT CTRL F12 from X.
|
||
Because there (probably) isn't a login running on that VC it
|
||
doesn't do much, which can be a feature. A smart cat may still
|
||
luck into a troublesome key sequence.
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="dose"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
2 cent tip - dosemu
|
||
</H3>
|
||
<p>
|
||
Date: Fri, 5 Dec 1997 00:55:55 -0500<br>
|
||
From: Joey Hess <a href="mailto:joey@kitenet.net">joey@kitenet.net</a>
|
||
<p>
|
||
I occasionally use dosemu, mainly to run some games I can't live without,
|
||
but I hate seeing the C:\> prompt. So I thought it'd be nice if there were a
|
||
way to tell dosemu what dos command to run, and it would run that command on
|
||
bootup. Here's a perl script that does just that. Read the comments at the
|
||
top, they explain some changes you need to make on the dos side of this. The
|
||
basic idea is, make a ~/dos_do.bat file, that contains the command you want
|
||
to run, and use lredir to let dosemu see your home directory. Then run the
|
||
batch file.
|
||
<pre>
|
||
#!/usr/bin/perl
|
||
#
|
||
# This runs dosemu.
|
||
#
|
||
# Any parameters psecified after "--" will be passed in to dosemu to be
|
||
# run as dos commands.
|
||
#
|
||
# Setup: add to autoexec.emu:
|
||
# lredir.com h: linux\fs\${home}
|
||
# if exist h:\dos_do.bat call h:\dos_do.bat
|
||
#
|
||
# GPL Copyright 1996, 1997 Joey Hess
|
||
|
||
# Split params into dosemu parameters and dos commands.
|
||
while ($a=shift @ARGV) {
|
||
if ($a=~m/--/ ne undef) { last }
|
||
$dosemu_command_line.="$a ";
|
||
}
|
||
$dos_command_line=join(' ',@ARGV);
|
||
$dos_command_line=~s/;/\r\n/g;
|
||
|
||
open (OUT,">$ENV{HOME}/dos_do.bat") || exit print "$ENV{HOME}/dos_do.bat:
|
||
$!";
|
||
if ($dos_command_line) {
|
||
print OUT "$dos_command_line\r\n"; # note dos CR LF
|
||
print OUT "exitemu\r\n";
|
||
}
|
||
close OUT;
|
||
system "/usr/bin/dos $dosemu_command_line";
|
||
unlink "$ENV{HOME}/dos_do.bat";
|
||
</pre>
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="find1"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Re: 2c Tip "Finding What You Want with find"
|
||
</H3>
|
||
<p>
|
||
Date: Wed, 03 Dec 1997 16:03:30 +0100<br>
|
||
From: Mike Neuhauser <a href="mailto:mike@gams.co.at">mike@gams.co.at</a>
|
||
<p>
|
||
Jon Rabone, jkr@camcon.co.uk, wrote in the December 97 issue of LG:
|
||
<p>
|
||
> In the October 97 issue, Dave Nelson suggests using<br>
|
||
><code> find . -type f -exec grep "string" /dev/null {} \;</code><br>
|
||
> to persuade grep to print the filenames that it finds the search<br>
|
||
> expression in. This starts up a grep for each file, however. A<br>
|
||
> shorter
|
||
and more efficient way of doing it uses backticks:<br>
|
||
><br>
|
||
><code> grep "string" `find . -type f`</code><br>
|
||
><br>
|
||
> Note however, that if the find matches a large number of files you<br>
|
||
> may
|
||
exceed a command line buffer in the shell and cause it to complain.
|
||
<p>
|
||
To avoid an overflow of the command line buffer use:
|
||
<pre>
|
||
find . -type f | xargs grep "string"
|
||
</pre>
|
||
This may give problems if filenames contain white space (e.g. touch
|
||
"test file") -- to avoid use:
|
||
<pre>
|
||
find . -type f -print0 | xargs -0 grep "string"
|
||
</pre>
|
||
Note also that find doesn't follow symbolic links to directories per
|
||
default. Using find with the option -follow does the trick (find .
|
||
-follow ...).
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="find2"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Re: Finding What You Want with find
|
||
</H3>
|
||
<p>
|
||
Date: 5 Dec 1997 17:47:50 -0000<br>
|
||
From: Dale K. Hawkins <a
|
||
href="mailto:dhawkins@mines.edu">dhawkins@mines.edu</a>
|
||
<p>
|
||
<code> find . -type f -exec grep "string" /dev/null {} \;</code>
|
||
<p>
|
||
That is how I used to run things too, but a friend showed me the xargs
|
||
program. Very nice. So one could turn the above statement to
|
||
something like:
|
||
<pre>
|
||
find . -type f | xargs fgrep "string" /dev/null
|
||
</pre>
|
||
Again, the /dev/null will force the name of the file to be printed (in
|
||
the unlikely case that find only found one file name). This has the
|
||
benefit of not invoking a new grep process each time.
|
||
<p>
|
||
But for a really slick (and much faster search) try this:
|
||
<pre>
|
||
locate $PWD | grep "^$PWD" |xargs fgrep "string" /dev/null
|
||
</pre>
|
||
This assumes that your locate database is current for the directory to
|
||
be searched. It does have a problem though: it tries to grep
|
||
everything, including directories!
|
||
<pre>
|
||
locate $PWD | grep "^$PWD" |xargs -ifilename sh -c \
|
||
"if [ -f filename ]; then echo filename; fi " | \
|
||
xargs fgrep "string" /dev/null
|
||
</pre>
|
||
And as an exercise for the reader: Take a look at lesspipe.sh (if it is
|
||
installed; download it
|
||
otherwise!)
|
||
See if you can create a shell script called supercat (or something)
|
||
which preprocesses the input to prevent grep'ing binary files, etc.
|
||
<p>
|
||
You gotta love UNIX and especially Linux!
|
||
<p>
|
||
-Dale K. Hawkins
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="find3"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Finding What You Want with find Part III
|
||
</H3>
|
||
<p>
|
||
Date: Thu, 11 Dec 1997 17:12:46 +0100 (MET)<br>
|
||
From: Axel Dietrich <a
|
||
href="mailto:Axel.Dietrich@neuroinformatik.ruhr-uni-bochum.de">Axel.Dietrich@neuroinformatik.ruhr-uni-bochum.de</a>
|
||
<p>
|
||
>In the October 97 issue, Dave Nelson suggests using<br>
|
||
><br>
|
||
><code> find . -type f -exec grep "string" /dev/null {} \;</code><br>
|
||
><br>
|
||
>to persuade grep to print the filenames that it finds the search<br>
|
||
>expression in.
|
||
<p>
|
||
Besides Jon Rabone's "shorter and more efficient" version in the
|
||
December 97 issue using backticks:
|
||
<pre>
|
||
grep "string" `find . -type f`
|
||
</pre>
|
||
the following variant can be used without the danger of exceeding
|
||
a command line buffer limit:
|
||
<pre>
|
||
find . -type f -exec grep -l "string" {} \;
|
||
</pre>
|
||
The "-l" switch tells grep to show the name of the file in which
|
||
"string" was found.
|
||
<p>
|
||
To limit such a search on selected files I use a combination of
|
||
the -type and -name switches.
|
||
<pre>
|
||
find . \( -type f -name "*\.html" \) -exec grep -l "string" {} \;
|
||
</pre>
|
||
This searches in all files with the suffix "html" for the string
|
||
"string" and outputs the name(s) of the file(s) in which "string"
|
||
was found.
|
||
<p>
|
||
Axel
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="find4"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
More on finding
|
||
</H3>
|
||
<p>
|
||
Date: Tue, 16 Dec 1997 14:12:57 +0100 (MET)<br>
|
||
From: Alexander Larsson <a
|
||
href="mailto:alla@lysator.liu.se">alla@lysator.liu.se</a>
|
||
<p>
|
||
In the December 97 issue Jon Rabone wrote:
|
||
<p>
|
||
------------------------------------<br>
|
||
This starts up a grep for each file, however. A shorter and
|
||
more efficient way of doing it uses backticks:
|
||
<pre>
|
||
grep "string" `find . -type f`
|
||
</pre>
|
||
Note however, that if the find matches a large number of files you may
|
||
exceed a command line buffer in the shell and cause it to complain.<br>
|
||
------------------------------------
|
||
<p>
|
||
A better way would be to use:
|
||
<pre>
|
||
find . -type f | xargs grep "string"
|
||
</pre>
|
||
which starts up a new grep everytime the command line buffer is full.
|
||
<p>
|
||
/ Alex
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="find5"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Another way to find
|
||
</H3>
|
||
<p>
|
||
Date: Sat, 27 Dec 1997 12:06:47 -0500<br>
|
||
From: <a href="mailto:rchandra@letter.com">rchandra@letter.com</a>
|
||
<p>
|
||
In an article in the LG, it was suggested that, in order to cut down
|
||
on having to fork(2)/exec(2) for each grep when you're searching
|
||
through a tree of files, you use the shell's capability of command
|
||
substitution (for the file names paramaters to the grep command) with
|
||
"backquotes," "grave accents," "backticks," etc. as they are commonly
|
||
called ("`"). In that little tidbit, it is noted that it has the
|
||
limitation of the system-wide imposed limit on number of arguments,
|
||
and I possibly think there might be a length issue as well (too many
|
||
total bytes). Enter xargs(1).
|
||
<p>
|
||
The job of the xargs command is to read its stdin and use the
|
||
resultant strings as arguments to some command prefix (such as "grep
|
||
-n somestring"), much like backquotes work. However, the xargs
|
||
program is "aware of" the limitations imposed by the system, and will
|
||
run the command prefix as many times as necessary to exhaust the list
|
||
provided on stdin, while on each run giving the command only the
|
||
maximum number of arguments and the maximum byte count (?) that an
|
||
exec(2) call can handle. Thus, provided that the program named in the
|
||
command prefix follows the UNIX program protocol of iterating over its
|
||
non-option arguments, one can search one, hundreds, thousands, even
|
||
millions of files with a line like:
|
||
<pre>
|
||
find / -type f -print | xargs grep -n 'where is that string?'
|
||
</pre>
|
||
As usual, consult your favorite source of documentation, such as your
|
||
local man pages, for ways to get even craftier with xargs.
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="find6"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Yet another way to find
|
||
</H3>
|
||
<p>
|
||
Date: Mon, 29 Dec 1997 10:49:52 +0100<br>
|
||
From: Guido Socher <a
|
||
href="mailto:eedgus@aken104.eed.ericsson.se">eedgus@aken104.eed.ericsson.se</a>
|
||
<p>
|
||
In recent Linux Gazette issues there were a couple of ideas on how
|
||
to recursively grep around files and directories. Very useful, but it can
|
||
cause problems when you have binaries (e.g some executable) in the
|
||
directories that contain somewhere the string that you are looking
|
||
for.
|
||
The result is most of the time an unusable terminal because some control
|
||
character from the binary file has set it to graphics mode.
|
||
There are, of course, ways to make the terminal readable again but
|
||
the best is to avoid it in the first place.
|
||
<p>
|
||
Let's just remove the unprintable characters. They are unreadable anyway!
|
||
The command
|
||
<pre> sed -e 's/[^ -~][^ -~]*/ /g'</pre>
|
||
removes multiple occurrences of non printable/control characters and
|
||
replaces them by a single space. The [^ -~] matches all characters not
|
||
in the ASCII range from SPACE to Tilde.
|
||
This command can be easily combined (using a pipe) with the find and grep.
|
||
Here is a little script, I called it grepfind, that does it all:
|
||
<pre>
|
||
#!/bin/sh
|
||
#save this in a file called grepfind and do a "chmod 755 grepfind"
|
||
#
|
||
if test $# = 0 -o "$1" = "-h" -o "$1" = "--help" ; then
|
||
echo ' grepfind -- recursively descends directories and egrep all files '
|
||
echo ''
|
||
echo ' Usage: grepfind [--help][-h][start_directory] egrep_search_pattern'
|
||
echo ''
|
||
echo ' The current directory is used as start_directory if parameter'
|
||
echo ' start_directory is omitted. The search is case insensitive.'
|
||
echo ' Multiple occurrences of control characters are replaced by a single'
|
||
echo ' space. This makes it possible to grep around in files that contain'
|
||
echo ' binary data and strings without setting the terminal accidently '
|
||
echo ' to graphics mode.'
|
||
echo ''
|
||
echo ' Example: grepfind /home "hello world" '
|
||
else
|
||
if [ "$2" = "" ]; then
|
||
find . -type f -exec egrep -i "$1" /dev/null {} \; | sed -e 's/[^ -~][^
|
||
-~]*/ /g'
|
||
else
|
||
if [ -d "$1" ];then
|
||
find $1 -type f -exec egrep -i "$2" /dev/null {} \; | sed -e 's/[^
|
||
-~][^ -~]*/ /g'
|
||
else
|
||
echo "ERROR: $1 is not a directory"
|
||
fi
|
||
fi
|
||
fi
|
||
#__END__OF_grepfind
|
||
</pre>
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="find7"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
A final(?) way to find
|
||
</H3>
|
||
<p>
|
||
Date: Wed, 31 Dec 1997 14:31:57 PST<br>
|
||
From: Marty Leisner <a
|
||
href="mailto:leisner@sdsp.mc.xerox.com">leisner@sdsp.mc.xerox.com</a>
|
||
<p>
|
||
In the last few months, there's been a few letters (by Dave Nelson,
|
||
Jon Rabone, some more) on how to grep with file names.
|
||
<p>
|
||
Instead of using the trick:
|
||
<pre>
|
||
find . type f -exec grep "string" /dev/null {} \;
|
||
</pre>
|
||
and other variatiants, or doing
|
||
<pre>
|
||
grep "string" $(find . -type f)
|
||
</pre>
|
||
1) use the -H option of grep 2.1 (to print file names, not in 2.0)<br>
|
||
2) use xargs to overcome problems with buffer size
|
||
<pre>
|
||
find . -type f | xargs grep <pattern> -H
|
||
</pre>
|
||
Marty
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="mozilla"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Re: I need some help
|
||
</H3>
|
||
<p>
|
||
Date: Sun, 7 Dec 1997 14:25:25 +0100 (MET)<br>
|
||
From: Roland Smith <a href="mailto:rsmit06@ibm.net">rsmit06@ibm.net</a>
|
||
<p>
|
||
Javier,
|
||
<p>
|
||
In response to your article in the mailbag of the dec. 97 Linux Gazette:
|
||
<p>
|
||
You need to set the environment variable MOZILLA to the directory
|
||
containing Netscape's files.
|
||
<p>
|
||
There are two ways of doing this:
|
||
You can type `export MOZILLA_HOME=/usr/local/netscape' every time you
|
||
start your computer, or you can edit /etc/profile. This is a
|
||
file read by the bash shell. Add the following to this file
|
||
(assuming the Netscape stuff is in /usr/local/netscape):
|
||
<pre>
|
||
MOZILLA_HOME="/usr/local/netscape"
|
||
export MOZILLA_HOME
|
||
</pre>
|
||
You also need to add an entry for Netscape to your window-manager's
|
||
initialization file, so it shows on the toolbar and/or menu. How to do
|
||
this depends on the window manager you use.
|
||
<p>
|
||
If you're using fvwm2-95, add the following to the .fvwm2rc95 file in your
|
||
home directory:
|
||
<pre>
|
||
# add to this menu:
|
||
AddToMenu "Utilities" "Utilities" Title
|
||
+ "Netscape%mini-nscape.xpm%" Exec netscape -geometry 931x683+54+9 &
|
||
</pre>
|
||
Regards, Roland
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="spin"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Spinning Down Unused HDs
|
||
</H3>
|
||
<p>
|
||
Date: Mon, 08 Dec 1997 14:21:31 -0500<br>
|
||
From: Peter S Galbraith <a
|
||
href="mailto:galbraith@mixing.qc.dfo.ca">galbraith@mixing.qc.dfo.ca</a>
|
||
<p>
|
||
In the December issue of LG tips, you discuss the hdparm command to spin
|
||
down disks. I tried this on my old SCSI disk:
|
||
<pre>
|
||
bash-2.01# hdparm -S6 /dev/sdb
|
||
|
||
/dev/sdb:
|
||
operation not supported on SCSI disks
|
||
</pre>
|
||
Too bad!
|
||
I use the `scsi-idle' kernel patch to do this very same thing on SCSI,
|
||
and I was eager to try your trick to finally stop having to patch the
|
||
kernel at evey upgrade.
|
||
<p>
|
||
Too bad it don't seem to work on SCSI disks (it's also strange that the man
|
||
page doesn't say this...)
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="egg1"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
LG Tips and Tricks (Netscape)
|
||
</H3>
|
||
<p>
|
||
Date: Fri, 12 Dec 1997 02:56:16 -0600<br>
|
||
From: Christian J Carlson <a
|
||
href="mailto:ccarlson@means.net">carlson@means.net</a>
|
||
<p>
|
||
* Date: Sun, 9 Nov 1997 22:00:31 +0000 (GMT)<br>
|
||
* From: Ivan Griffin ivan.griffin@ul.ie<br>
|
||
*<br>
|
||
* These special URLs do interesting things in Netscape Navigator and
|
||
Communicator.<br>
|
||
*<br>
|
||
* about:cache gives details on your cache<br>
|
||
* about:global gives details about global history<br>
|
||
* about:memory-cache<br>
|
||
* about:image-cache<br>
|
||
* about:document<br>
|
||
* about:hype<br>
|
||
* about:plugins<br>
|
||
* about:editfilenew<br>
|
||
*<br>
|
||
* view-source:URL opens source window of the URL<br>
|
||
*<br>
|
||
* Ctrl-Alt-F take you to an interesting site :-)<br>
|
||
<p>
|
||
This appeared in Linux Gazette, December 1997.
|
||
There is one more way cool easter egg that's in Netscape.
|
||
<p>
|
||
First, type "about:mozilla" to get the Mozilla easter egg. Then,
|
||
watch your "N" in the upper right hand corner of Netscape. Whenever
|
||
you access a website, Mozilla himself will appear instead of the
|
||
boring flying stars, etc. As far as I know, this has been in every
|
||
version of Netscape since at least version 2.0.
|
||
Of course, this only works in the Linux version (I don't know about
|
||
other *nix versions) of Netscape, NOT Windows95 :).
|
||
<p>
|
||
Christian J. Carlson
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="egg2"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Easter Eggs in Netscape
|
||
</H3>
|
||
<p>
|
||
Date: Tue, 30 Dec 1997 0:47:12 +1100 (EADT)<br>
|
||
From: Michael Lake <a
|
||
href="mailto:mikel@BlueSky.com.au">mikel@BlueSky.com.au</a>
|
||
<p>
|
||
I have just been reading the Linux gazette Issue 23 about the
|
||
easter eggs in Netscape and thought that I would try some URL's
|
||
of my own. I am using Netscape 3.01 for Linux. A little
|
||
experimentation found the following--
|
||
<p>
|
||
about:foo
|
||
<p>
|
||
The message that is returned is: Whatchew talkin' 'bout, Willis?
|
||
Instead of foo you can use anything that is not understandable to Netscape.
|
||
<p>
|
||
A more interesting one that I tried is--
|
||
<p>
|
||
about:mozilla
|
||
<p>
|
||
This gives a very interesting quotation which I will leave to the reader
|
||
to discover.
|
||
<p>
|
||
Enjoying the Linux Gazette immensely,
|
||
<p>
|
||
Best Regards,<br>
|
||
Michael Lake<br>
|
||
Sydney, Australia
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="calc"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Calculator Tip
|
||
</H3>
|
||
<p>
|
||
Date: Sun, 14 Dec 1997 19:23:55 -0500<br>
|
||
From: Michael McLay <a href="mailto:mclay@nist.gov">mclay@nist.gov</a>
|
||
<p>
|
||
The Issue #21 and #23 tips column gave tips for doing calculations
|
||
without having to fire up a heavyweight GUI calculator. It is very
|
||
handy to be able to do all the number entry through the command line,
|
||
but I was surprised to see perl and awk used in the two examples. The
|
||
bc has been around forever in Unix and would be the logical first
|
||
choice to many oldtimers. And bc can do the calculations to any
|
||
precision desired if that is important.
|
||
<p>
|
||
Another good option is Python. Python can be run in an interactive
|
||
mode like bc, so previous calculations can saved as variables and
|
||
reused. Python also can be built so that past lines can be edited
|
||
using the standard GNU readline library editing operations. For
|
||
instance, in the following interactive sequence the previous-line key
|
||
will restore the last executed line to the prompt and the line edit
|
||
keys, such as backward-char and delete can then be used to edit the
|
||
line.
|
||
<pre>
|
||
~: python
|
||
Python 1.5b2 (#2, Dec 12 1997, 16:13:12) [GCC 2.7.2] on linux2
|
||
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
|
||
>>> a = (10+3)/7
|
||
>>> a
|
||
1
|
||
>>> a = (10.+3)/7
|
||
>>> a
|
||
1.85714285714
|
||
>>> a/32
|
||
0.0580357142857
|
||
>>> "it takes %7.2f percent" % a
|
||
'it takes 1.86 percent'
|
||
>>> "it takes %-7.2f percent" % a
|
||
'it takes 1.86 percent'
|
||
>>> from Numeric import *
|
||
>>> b = array(arange(12))
|
||
>>> b.shape = 3,4
|
||
>>> b
|
||
array([[ 0, 1, 2, 3],
|
||
[ 4, 5, 6, 7],
|
||
[ 8, 9, 10, 11]])
|
||
>>> b/a
|
||
array([[ 0. , 0.53846154, 1.07692308, 1.61538462],
|
||
[ 2.15384615, 2.69230769, 3.23076923, 3.76923077],
|
||
[ 4.30769231, 4.84615385, 5.38461538, 5.92307692]])
|
||
>>>
|
||
</pre>
|
||
This example also shows the Python Numeric[1] module being used at the
|
||
command line. Any Python module that is installed with the
|
||
interpreter can be imported and used in the interactive mode.
|
||
<p>
|
||
Of course if you want to make Python do a one-liner from the command
|
||
line that is possible also:
|
||
<pre>
|
||
~: python -c "print 34./33"
|
||
1.0303030303
|
||
</pre>
|
||
or to format the output:
|
||
<pre>
|
||
~: python -c "print 'eat %3.4f %s' % (1.444e5/32,'more fish')"
|
||
eat 4512.5000 more fish
|
||
</pre>
|
||
[1] The Numeric module in this example is not built into the standard
|
||
distribution. See the matrix-sig page for details on how to add it to
|
||
the module library if you can't find it on your system.
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="nohack"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Security script
|
||
</H3>
|
||
<p>
|
||
Date: Mon, 15 Dec 1997 20:49:53 -0600 (CST)<br>
|
||
From: Corey G <a
|
||
href="mailto:cgaff@interaccess.com">cgaff@interaccess.com</a>
|
||
<p>
|
||
Often when I leave my machine connected to the Internet for prolonged
|
||
periods I worry about hackers. I wanted a program that would know if
|
||
a process was started by anyone, including root, that was not originally
|
||
on the machine.
|
||
<p>
|
||
This caused me to program this script. I dont know if something similar
|
||
exists but I have tested this very throughly and it works rather well. It
|
||
can be frustrating at times when you are active on the machine but works
|
||
very well for idle times.
|
||
<p>
|
||
HOW IT WORKS:
|
||
<p>
|
||
This scripts grabs all the processes when first invoked and saves them to
|
||
a temporary file. After a default of 10 seconds the process table is
|
||
checked against any new processes that were started. If these processes
|
||
were not listed in the "TRUSTED_ITEMS" variable they will be killed
|
||
immediately.
|
||
<p>
|
||
USAGE:
|
||
<p>
|
||
Once you have all the necessary processes running on your machine start
|
||
the script as root. It will make the necessary directories on the machine
|
||
in a safer place than just /tmp. I have created two variables named
|
||
"TRUSTED_ITEMS" and "TRUSTED_USERS". These can be used to ignore some
|
||
users or programs that you never want killed. Be careful since sometimes
|
||
you will need to include more than one item for some programs. For
|
||
example, if you dont want xterms killed you must add "xterm" and "bash" if
|
||
you are running bash as your default shell.
|
||
<p>
|
||
Note: When testing this script make certain that nothing important is
|
||
running. I take no blame for any wrong doing from this script.
|
||
<p>
|
||
To start the script:<code> nohup ./secmach &</code>
|
||
<p>
|
||
I am always looking for ways to improve this script so feel free to e-mail
|
||
your comments or suggestions to me.
|
||
<p>
|
||
Good Luck !!!
|
||
<pre>
|
||
#!/bin/sh
|
||
# Secmach - security program
|
||
# v1.0 12-14-97
|
||
# By: Corey Gaffney
|
||
|
||
export PATH=/usr/bin:/bin:/sbin
|
||
|
||
COUNTER=0
|
||
LOCATION=/usr/secmach
|
||
CHECK_TIME=10
|
||
TRUSTED=/usr/secmach/trusted
|
||
UNTRUSTED=/usr/secmach/untrusted
|
||
DIFFKILL=/usr/secmach/diffkill
|
||
TRUSTED_USERS="johndoe"
|
||
TRUSTED_ITEMS="$TRUSTED_USERS|pppd|chat|netscape|xterm|egrep|ps|sed|secmach|awk"
|
||
|
||
if [ ! -s $LOCATION ]
|
||
then
|
||
mkdir $LOCATION
|
||
chmod 700 $LOCATION
|
||
fi
|
||
|
||
while :
|
||
do
|
||
COUNTER=`expr $COUNTER + 1`
|
||
if [ $COUNTER -eq 1 ]
|
||
then
|
||
ps -aux | sed -e '1d' | awk '{print $2}' > $TRUSTED
|
||
fi
|
||
sleep $CHECK_TIME
|
||
|
||
ps -aux | sed -e '1d' | egrep -v $TRUSTED_ITEMS | awk '{print $2}' >
|
||
$UNTRUSTED
|
||
diff $TRUSTED $UNTRUSTED > $DIFFKILL
|
||
KILL=`grep ">" $DIFFKILL | awk '{print $2}'`
|
||
kill -9 $KILL
|
||
done
|
||
</pre>
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="cron"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Controlling cron.hourly
|
||
</H3>
|
||
<p>
|
||
Date: Sun, 21 Dec 1997 10:36:16 -0500 (EST)<br>
|
||
From: Jeff Johnson <a href="mailto:jbj@JBJ.ORG">jbj@JBJ.ORG</a>
|
||
<p>
|
||
According to Gary Turkington:<br>
|
||
> I know this one of those *really* simple ones, but it's beating me. How<br>
|
||
> do I stop the cron.hourly setup mailing a 'fortune' to root? This used<br>
|
||
> to happen daily, no biggie, but when I upgraded to 5.0, its hourly.. spam<br>
|
||
> :)
|
||
<p>
|
||
This is a variant of the "not a typewriter" error that causes loss of
|
||
hair when using rlogin :-)
|
||
<p>
|
||
The analysis goes like this:
|
||
<p>
|
||
1) Cron runs a job an hourly job as root.<br>
|
||
2) To run the job, a non-interactive (i.e. stdin/stdout are *not* connected<br>
|
||
to a tty but to cron) shell is started.<br>
|
||
3) The shell reads its init files: /etc/profile, ~/.bashrc, whatever.<br>
|
||
4) The init files execute fortune.<br>
|
||
5) The job is performed.<br>
|
||
6) Cron detects output, so it mails it to root.
|
||
<p>
|
||
Fix by identifying which shell init file is executing fortune and
|
||
avoiding fortune when not interactive. There are a couple of
|
||
techniques for doing this, often by checking whether PS1 is
|
||
set.
|
||
<p>
|
||
73 de Jeff
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
|
||
<a name="ping"></a>
|
||
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
||
Syslog and ping
|
||
</H3>
|
||
<p>
|
||
Date: Tue, 30 Dec 1997 17:58:59 -0500 (EST)<BR>
|
||
From: Andrew Tucker <a href="mailto:andrew.tucker@kplus2.aces.k12.ct.us">andrew.tucker@kplus2.aces.k12.ct.us</a>
|
||
<P>
|
||
Hi, this is a small hack I did to allow logging of users's use of ping
|
||
through syslog. With more and more larger systems running Linux, and more
|
||
and more situations of ICMP abuse, any shortcut a system administrator can
|
||
use to prevent such abuse is helpful. Click <A HREF="./syslog-ping.tar.gz">
|
||
here</A> to dowload the scripts.
|
||
<P>
|
||
-- Andrew
|
||
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
<center>Published in Linux Gazette Issue 24, January 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_mail24.html"><IMG
|
||
SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./lg_bytes24.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_bytes24.html#general">News in General</a>
|
||
<li><a HREF="./lg_bytes24.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/cover46.jpg"></center>
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
February <I>Linux Journal</I>
|
||
</H3>
|
||
<P>
|
||
The February issue of <A HREF="http://www.linuxjournal.com/"><I>Linux
|
||
Journal</I></A> will be hitting the newstands
|
||
this week. The focus of this issue is Databases. Also, included is an article
|
||
on the making of the movie <I>Titanic</I> -- Digital Domain used Linux
|
||
extensively in generating the graphics for this movie. Check out the
|
||
<A HREF="http://www.ssc.com/lj/issue46/index.html">Table of Contents</A>.
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Apache Webserver Serves Over Half the Internet
|
||
</H3>
|
||
<P>
|
||
Date: January 5, 1998
|
||
<P>
|
||
The Apache Web Server, from the Apache Group (http://www.apache.org/),
|
||
now serves over half the domains on the Internet, according to the
|
||
latest Netcraft Web Server Survey (http://www.netcraft.com/). According
|
||
to the January 1998 survey, the Apache server and its derivatives
|
||
serve 50.24% of the 1,834,710 sites found by Netcraft.
|
||
<P>
|
||
For complete press release, click <A HREF="./apache.html">here</A>.
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Linux on Celsius Workstations
|
||
</H3>
|
||
<P>
|
||
Date: November 28, 1997
|
||
<P>
|
||
Siemens Nixdorf (SNI) is selling there new "Celsius" Workstations with
|
||
WinNT AND Linux. SNI is the first major Producer that offers Workstations
|
||
with Linux on board. The Linux-Support is done by the well known
|
||
Linux Distributor SuSE GmbH. The machine is targeted for the universitys
|
||
and already in use there with linux. The "Celsius" is based on a
|
||
Pentium-II with 266/300 Mhz, 512KB Cache, 32MMB ECC-SDRAM, 2GB drive,
|
||
a PCI/AGP based matrox millennium II with 4MB, FastEthernet, Diskdrive
|
||
and Keyboard. The price shall be between 7300-8200DM but its exspected to
|
||
fall.
|
||
According to SNI the "Celsius 1000" (300Mhz Version) gets 11,9 SPECint95
|
||
and 8,6 SPECfp with WinNT. (no Linux values yet.)
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Freeware OCR Project
|
||
</H3>
|
||
<P>
|
||
A mailing list has been started for discussion of the design and
|
||
implementation of a freeware Optical Character Recognition program for
|
||
Unix.
|
||
<P>
|
||
Scanner support for Unix is under rapid development thanks to projects
|
||
such as <A HREF="http://www.mostang.com/sane/">SANE</A>, and applications such as
|
||
<A HREF="http://www.gimp.org/">GIMP</A> are beginning to benefit from this support. OCR is one major
|
||
application missing from the freeware Unix world, and has long been on
|
||
the FSF's project list, as well. The project is going to have to
|
||
create both a user interface and a character recognition engine.
|
||
<P>
|
||
The project Web page is at <A
|
||
HREF="http://starship.skyport.net/crew/amk/ocr/">http://starship.skyport.net/crew/amk/ocr/</A>;
|
||
look there for announcements about the project's status.
|
||
<P>
|
||
For more information: <BR>
|
||
Andrew Kuchling, <A HREF="mailto:amk@magnet.com">amk@magnet.com</A>
|
||
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
5th International Linux Kongress 1998
|
||
</H3>
|
||
<P>
|
||
The 5th International Linux Kongress 1998 will be held from June 3
|
||
to June 5 at the University of Cologne (Köln). It follows the tradition
|
||
of the Linux conference series (Heidelberg 94, Berlin 95/96 and
|
||
Würzburg 97) which has evolved into the most important meeting for
|
||
Linux experts and developers.
|
||
<P>
|
||
The conference will offer up to 25 talks during two days (June 4 and 5)
|
||
in two parallel tracks. The first track will be dedicated to Linux
|
||
development, the second track will be intended to accomodate talks about
|
||
Linux applications and usage. Each talk will be 40 minutes (possibly
|
||
including discussion). The language of the talks will be English or
|
||
exceptionally German.
|
||
<P>
|
||
For more information:<BR>
|
||
GUUG office, Ms. Bester,
|
||
<A HREF="mailto:info@linux-kongress.de">info@linux-kongress.de</A><BR>
|
||
<A HREF="http://www.linux-kongress.de/">http://www.linux-kongress.de/</A>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Linux in the News
|
||
</H3>
|
||
<P>
|
||
Articles by Charles J. Fisher worth checking out in <I>Unixworld On-line</I>:<BR>
|
||
<A HREF="http://www.unixworld.com/uworld/archives/97/tutorial/017.html">
|
||
Creation and Maintenance of Virtual Hosts </A> <BR>
|
||
<A HREF="http://www.unixworld.com/uworld/archives/97/tutorial/015/015.html">
|
||
Linux, PPP and Windows 95 </A> <BR>
|
||
<P>
|
||
<center>-------------------------------</center>
|
||
<P>
|
||
More Linux articles: <BR>
|
||
"Linux Grows Up" -- Red Hat's commercial Linux beats NT at its own
|
||
game.<BR>
|
||
<A HREF="http://currents.net:80/magazine/national/1524/inet1524.html">
|
||
<I>Computer Currents</I></A>
|
||
<P>
|
||
"Intel-Based Unix: A Great Solution for Intranets" <BR>
|
||
<A HREF="http://www.fcw.com/pubs/gbb/1997/1201/GBB-UNIX-12-1-1997.html">
|
||
<I>Federal Computer Week</I></A>
|
||
<P>
|
||
<center>-------------------------------</center>
|
||
<P>
|
||
Better late than never:<BR>
|
||
On November 15 Linus announced that the F00F bug
|
||
had been fixed in the 2.0.x kernel. Click <A HREF="./linus.html">here</A> to
|
||
read what he had to say.
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Linux Bibliography
|
||
</H3>
|
||
<P>
|
||
After a three month hiatus, the
|
||
<A
|
||
HREF="http://shell.nanospace.com/~markst/linux/">
|
||
Linux Bibliography</A> is back on line. The bibliography has
|
||
grown a lot in size since it was last "live": there are now almost 50
|
||
Linux specific titles listed.
|
||
<P>
|
||
While the site is back up, it is still in beta mode. You'll need a
|
||
Javascript compatible browser to see it, and some of the JavaScript
|
||
appears to be a bit buggy with older browsers. Most of the forms are
|
||
working, but not all of them just yet.
|
||
<P>
|
||
For more information:
|
||
Mark Stone, <A
|
||
HREF="mailto:markst@shell.nanospace.com">markst@shell.nanospace.com</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Linux Business Solutions
|
||
</H3>
|
||
<P>
|
||
Announcing: A project to generate and improve documentation
|
||
of Linux Businesss Solutions. This project is a few days
|
||
old, so far.
|
||
<A HREF="http://linas.org/linux/web-project.html">
|
||
http://linas.org/linux/web-project.html</A>.
|
||
<P>
|
||
There is a separate mailing list for this project. Web page owners,
|
||
writers, marketing types & document mangement hackers are encouraged
|
||
to join.
|
||
<P>
|
||
For more information: <BR>
|
||
<A HREF="mailto:linas@linas.org">linas@linas.org</A>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
The Linux Project Server
|
||
</H3>
|
||
<P>
|
||
The Linux Project Server has a new <A
|
||
HREF="http://www.projects.ml.org/">home page</A> providing counters, guestbooks
|
||
and many many other such scripts.
|
||
<P>
|
||
For more information:<BR>
|
||
Gerhard Poul, <A HREF="mailto:gerhard@shadow.ccc.at">gerhard@shadow.ccc.at</A><BR>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Freely Redistributed Software Track - USENIX'98
|
||
</H3>
|
||
<P>
|
||
Come hear the latest about the full range of freely redistributable
|
||
software--with pointers to the code--including Linux, FreeBSD, GNU,
|
||
netBSD, OpenBSD Samba, and more.
|
||
<P>
|
||
FREENIX,
|
||
The Freely Redistributed Software Track,
|
||
at the USENIX 1997 Conference held
|
||
June 15-19, 1998 in
|
||
New Orleans, Louisiana.
|
||
<P>
|
||
For more information:
|
||
<A
|
||
HREF="http://www.usenix.org/events/no98/">http://www.usenix.org/events/no98/</A>
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Linux Software Database
|
||
</H3>
|
||
<P>
|
||
The Linux Software Database is now up and running
|
||
at <A HREF="http://www.txcc.net/~cl/">http://www.txcc.net/~cl/</A>.
|
||
<P>
|
||
Unlike software sites that list only what software the author has found
|
||
the
|
||
LSDB allows Linux users connecting to the database to add software thay
|
||
have found or use. This way both authors of software and users of the
|
||
site can add there titles on-line.
|
||
<P>
|
||
For more information: <BR>
|
||
<A HREF="mailto:cl@txcc.net">cl@txcc.net</A>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
S.u.S.E. Discussion Groups
|
||
</H3>
|
||
<P>
|
||
S.u.S.E. has set up two lists for discussions and announcenments concerning
|
||
the S.u.S.E. Linux Distribution:
|
||
<P>
|
||
suse-announce-e -- Announcements of S.u.S.E. LLC (english)
|
||
suse-linux-e -- Discussions about S.u.S.E. Linux (english)
|
||
<P>
|
||
To subscribe, send an email to majordomo@suse.com with 'subscribe
|
||
<i>listname</i>' in the body.
|
||
<P>
|
||
For more information: <BR>
|
||
Bodo Bauer, <A HREF="mailto:bb@suse.de">bb@suse.de</A><BR>
|
||
<A HREF="http://www.suse.de/">http://www.suse.de</A>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
The Linux Resource Kit
|
||
</H3>
|
||
<P>
|
||
The <A HREF="http://www.secretagent.com/">Linux Resource Kit</A> has been
|
||
expanded to included current news and information on:
|
||
<ul>
|
||
<li>Web Servers
|
||
<li>Groupware
|
||
<li>Networking/Routing/WAN
|
||
<li>Client/Server Database
|
||
<li>Microsoft/Novell/Apple/NFS file and Print sharing
|
||
<li>System Administration
|
||
</ul>
|
||
For more information: <BR>
|
||
Joe Royall, <A HREF="mailto:joe@secretagent.com">joe@secretagent.com</A>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
IACT & Linux users
|
||
</H3>
|
||
<P>
|
||
A message from the Land of Beyond web site!
|
||
<P>
|
||
We have devoted a new section for IACT, the "International Alliance
|
||
for
|
||
Compatible Technology." Users of major platforms such as OS/2,
|
||
Linux,
|
||
FreeBSD, BeOS, MacOS, Unix, DOS etc., are invited to sign-on to
|
||
IACT's
|
||
Declaration! IACT is working for greater freedom of choice in software,
|
||
for
|
||
better access to computer-based services & technology, and for
|
||
open
|
||
standards, including higher standards of compatibility. To achieve
|
||
such
|
||
important goals for all people, IACT will join in anti-monopoly
|
||
efforts
|
||
against Micro$oft, while we find positive ways to help consumers &
|
||
users
|
||
regardless of their chosen platforms. Join us at...
|
||
<A HREF="http://pages.cthome.net/iact/">
|
||
http://pages.cthome.net/iact/</A>
|
||
|
||
<P>
|
||
For more information: <BR>
|
||
Diane Gartner, <A HREF="mailto:dgwhiz@earthling.net">dgwhiz@earthling.net</A><BR>
|
||
IACT Co-ordinator<BR>
|
||
|
||
<P> <HR> <P>
|
||
<a name="software"></a>
|
||
<!-- =================================================================== -->
|
||
<center><H3> Software Announcements </H3></center>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Dotfile Generator 2.2
|
||
</H3>
|
||
<P>
|
||
Date: December 24, 1997
|
||
<P>
|
||
Jesper Pedersen has announced the release of The Dotfile Generator version
|
||
2.2.
|
||
New in this release is:
|
||
<ul>
|
||
<li>Added the ipfwadm module for configuring IP Firewalling,
|
||
Forwarding and Masquerading.
|
||
<li>Added the procmail modules for configuring mail filters.
|
||
<li>The menu system, from which one select the configuration
|
||
pages has been rewritten, so it's now much more intuitive.
|
||
<li>Some bugs have been fixed.
|
||
<li>Made it work with Tcl/Tk 8.0, which is much faster than
|
||
the older versions of Tcl/Tk
|
||
</ul>
|
||
The source is available from the home site of TDG:
|
||
<A HREF="ftp://ftp.imada.ou.dk/pub/dotfile/dotfile.tar.gz">
|
||
ftp://ftp.imada.ou.dk/pub/dotfile/dotfile.tar.gz</A>
|
||
<P>
|
||
For more information: <BR>
|
||
Jesper Pedersen, <A HREF="mailto:blackie@imada.ou.dk">blackie@imada.ou.dk</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
TeamWave Workplace 2.1
|
||
</H3>
|
||
<P>
|
||
Date: November 27, 1997
|
||
<P>
|
||
TeamWave Software Ltd. today
|
||
announced the release of version 2.1 of TeamWave Workplace, its popular
|
||
software that lets teams work together in shared electronic rooms
|
||
across the Internet.
|
||
For teams within an organization who are sometimes physically separated
|
||
yet still need to work closely together, TeamWave Workplace provides
|
||
an Internet forum where teams collaborate, communicate and share
|
||
information.
|
||
<P>
|
||
For more information: <BR>
|
||
<A HREF="mailto:info@teamwave.com">info@teamwave.com</A><BR>
|
||
<A HREF="http://www.teamwave.com/">http://www.teamwave.com/</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Red Hat Linux 5.0, HURRICANE
|
||
</H3>
|
||
<P>
|
||
Date: December 1, 1997
|
||
<P>
|
||
Red Hat Software, Inc. has announced the
|
||
availability of Red Hat Linux release 5.0 for Intel and Alpha
|
||
computers. This release is a major update to the Red Hat Linux 4.X
|
||
series.
|
||
Red Hat Linux is available on their FTP site:<BR>
|
||
<A HREF="ftp://ftp.redhat.com/pub/redhat/redhat-5.0/">
|
||
ftp://ftp.redhat.com/pub/redhat/redhat-5.0/</A>
|
||
<P>
|
||
For more information: <BR>
|
||
<A HREF="http://www.redhat.com/">http://www.redhat.com/</A> <BR>
|
||
<A HREF="mailto:info@redhat.com">info@redhat.com</A>
|
||
|
||
<P> <hr> <P>
|
||
<!-- =================================================================== -->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Nighthawk
|
||
</H3>
|
||
<P>
|
||
Date: December 19, 1997
|
||
<P>
|
||
Nighthawk is An X-Windows game for Linux (Freeware GPL),
|
||
based on Andrew Braybrooks C-64 classic- "Paradroid",
|
||
written by Jason Nunn (JsNO)
|
||
|
||
<P>
|
||
Nighthawk 1.0 uploaded onto the following sites:
|
||
<ul>
|
||
<li><A HREF="http://www.downunder.net.au/~jsno/rel/1997/nighthawk-1.0.tgz">
|
||
http://www.downunder.net.au/~jsno/rel/1997/nighthawk-1.0.tgz</A>
|
||
<li>ftp://ftp.cdrom.com/pub/unixfreeware/incoming (asked to be put into games)
|
||
<li>ftp://sunsite.unc.edu/pub/Linux/games/arcade (uploaded to /incoming/Linux)
|
||
<li>ftp://ftp.funet.fi (uploaded to /pub/Linux/incoming)
|
||
</ul>
|
||
<P>
|
||
For more information: <BR>
|
||
Jason Nunn, <A HREF="mailto:jsno@dayworld.net.au">jsno@dayworld.net.au</A>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
C++ GUI IDE
|
||
</H3>
|
||
<P>
|
||
Date: November 28, 1997
|
||
<P>
|
||
Simple IDE for: Qt C++. GUI dialog editor, all developed on Linux X11R6
|
||
available at: <A HREF="http://qtez.commkey.net/">http://qtez.commkey.net/</A>
|
||
All distributes of QtEZ include: documentation, a set of tutorials, and
|
||
many
|
||
demonstration programs to illustrate features in the environment. I hope
|
||
QtEZ
|
||
is well received.
|
||
<P>
|
||
For more information: <BR>
|
||
Sam Magnuson, <A
|
||
HREF="mailto:zachsman@commkey.net">zachsman@commkey.net</A>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
r2d2 - easy but powerful boot-concept
|
||
</H3>
|
||
<P>
|
||
Date: December 3, 1997
|
||
<P>
|
||
r2d2 is a newly developed boot-concept for Unix. In some
|
||
way r2d2 combines the easeness of the BSD-style scripts
|
||
(e.g. in Slackware Linux) with the power and flexibility
|
||
of the traditional SysV scripts (e.g. in RedHat, Debian or
|
||
S.u.S.E. Linux).
|
||
r2d2 is available at <A
|
||
HREF="ftp://sunsite.unc.edu/pub/Linux/system/daemons/init/">
|
||
ftp://sunsite.unc.edu/pub/Linux/system/daemons/init/</A>
|
||
<P>
|
||
For more information: <BR>
|
||
Winfried Truemper, <A HREF="mailto:winni@xpilot.org">winni@xpilot.org</A>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
TkSTEP 8.0p2
|
||
</H3>
|
||
<P>
|
||
Date: December 5, 1997
|
||
<P>
|
||
This is Tk 8.0p2 with some modifications to make it look like N*XTSTEP's
|
||
interface, plus some new widgets inspirated on N*XTSTEP and the ability
|
||
to utilize the full power (and more) of the OffiX Drag'n'Drop protocol.
|
||
<P>
|
||
The programming aspects of Tk have not been changed much, so you can run
|
||
your old Tk apps normally with it, although some options will not do
|
||
anything (like -relief for scrollbars).
|
||
<P>
|
||
To get TkStep go to <A HREF="http://www.fga.de/~ograf/TkStep.shtml">
|
||
http://www.fga.de/~ograf/TkStep.shtml</A>
|
||
<P>
|
||
For more information: <BR>
|
||
Oliver Graf, <A HREF="mailto:ograf@fa.de">ograf@fa.de</A> <BR>
|
||
Steve Murray, <A HREF="mailto:stevem@eng.uts.edu.au">stevem@eng.uts.edu.au</A>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
t1lib-0.4-beta: A rasterizer for Adobe Type 1 Fonts
|
||
</H3>
|
||
<P>
|
||
Date: December 5, 1997
|
||
<P>
|
||
t1lib is a library for generating character- and string-glyphs from
|
||
Adobe Type 1 fonts under UNIX. t1lib uses most of the code of the X11
|
||
rasterizer donated by IBM to the X11-project. But some disadvantages
|
||
of the rasterizer being included in X11 have been eliminated.
|
||
<P>
|
||
You can get t1lib by anonymous ftp at:
|
||
<A
|
||
HREF="ftp://ftp.neuroinformatik.ruhr-uni-bochum.de/pub/software/t1lib/t1lib-0.4-beta.tar.gz">
|
||
ftp://ftp.neuroinformatik.ruhr-uni-bochum.de/pub/software/t1lib/t1lib-0.4-beta.tar.gz </A>
|
||
<P>
|
||
For more information: <BR>
|
||
Rainer Menzner, <A
|
||
HREF="mailto:Rainer.Menzner@neuroinformatik.ruhr-uni-bochum.de">
|
||
Rainer.Menzner@neuroinformatik.ruhr-uni-bochum.de</A>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
SGML-Tools 1.0.1
|
||
</H3>
|
||
<P>
|
||
Date: December 5, 1997
|
||
<P>
|
||
After a year of mostly code restructuring and bugfixing, the time finally
|
||
arrived to let SGML-Tools 1.0 see the light. This means the final demise of
|
||
Linuxdoc-SGML. Loads and loads of features were added. Most of the code was
|
||
redone in Perl 5,
|
||
which adds a lot of flexibility for people who want to override
|
||
certain parts
|
||
of the functionality (but at the same time be able to install newer
|
||
versions);
|
||
uncountable bugs were fixed (more were introduced, of course :-)), lots of
|
||
small enhancements, etc.
|
||
<P>
|
||
Visit the SGML-Tools homepage, at <A
|
||
HREF="http://pobox.com/~cg/sgmltools/">http://pobox.com/~cg/sgmltools/</A>, for
|
||
latest
|
||
news, pointers to locations, etcetera. Note that I haven't been able to get
|
||
this stuff on SunSite yet, so you'd better go via the homepage.
|
||
<P>
|
||
For more information: <BR>
|
||
Cees de Groot, <A HREF="mailto:cg@pobox.com">cg@pobox.com</A> <BR>
|
||
<A HREF="http://pobox.com/~cg/sgmltools/">http://pobox.com/~cg/sgmltools/</A>
|
||
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
LinuxThreads 0.7 -- POSIX thread library
|
||
</H3>
|
||
<P>
|
||
Date: December 5, 1997
|
||
<P>
|
||
LinuxThreads is a thread library for Linux implementing the POSIX
|
||
1003.1c API and based on the "one thread = one process" model.
|
||
The sources are available through the LinuxThreads home page:
|
||
<A HREF="http://pauillac.inria.fr/~xleroy/linuxthreads/">
|
||
http://pauillac.inria.fr/~xleroy/linuxthreads/</A>
|
||
or directly on our FTP server:
|
||
<A HREF="ftp://ftp.inria.fr/INRIA/Projects/cristal/Xavier.Leroy/linuxthreads.tar.gz">
|
||
ftp://ftp.inria.fr/INRIA/Projects/cristal/Xavier.Leroy/linuxthreads.tar.gz</A>
|
||
<P>
|
||
For more information: <BR>
|
||
Xavier Leroy, <A HREF="mailto:xavier.leroy@inria.fr">xavier.leroy@inria.fr</A>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
TkDesk 1.0b5 released
|
||
</H3>
|
||
<P>
|
||
Date: December 9, 1997
|
||
<P>
|
||
|
||
TkDesk 1.0b5, a Desktop and File Manager for UNIX's running X11, has been
|
||
released.
|
||
TkDesk is a graphical desktop and file manager for several brands
|
||
of UNIX (such as Linux) and the X Window System. It offers a very
|
||
rich set of file operations and services, and gives the user the
|
||
ability to configure most aspects of TkDesk in a powerful way. The
|
||
reason for this is the use of Tcl/Tk as the configuration and (for
|
||
the biggest part of TkDesk) implementation language.
|
||
<P>
|
||
You can get TkDesk from its homepage at:
|
||
<A HREF="http://people.mainz.netsurf.de/~bolik/tkdesk/">
|
||
http://people.mainz.netsurf.de/~bolik/tkdesk/</A>
|
||
<P>
|
||
For more information: <BR>
|
||
Christian Bolik, <A HREF="mailto:Christian.Bolik@mainz.netsurf.de">
|
||
Christian.Bolik@mainz.netsurf.de</A>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
MP3Blaster V2.01 -- Mpeg audio player for Linux
|
||
</H3>
|
||
<P>
|
||
Date: December 9, 1997
|
||
|
||
<P>
|
||
A new release of MP3Blaster, an Mpeg-layer 1/2 audio
|
||
player for Linux is available. This player has a smart and intuitive user-interface that
|
||
allows a user to split up a playlist into sections. An interesting use of
|
||
this feature is that you can put about 10 of your audio CD's in MP3-format
|
||
on one CD-ROM and have each section in the playlist represent an album.
|
||
Then, you can have the player play the songs in every imaginable order you
|
||
want.
|
||
<P>
|
||
Available at:<BR>
|
||
<A
|
||
HREF="ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/mp3blaster-2.0b1.tar.gz">
|
||
ftp://sunsite.unc.edu/pub/Linux/apps/sound/players/mp3blaster-2.0b1.tar.gz</A>
|
||
<BR>
|
||
<A HREF="http://www.stack.nl/~brama/src/mp3blaster-2.0b1.tar.gz">
|
||
http://www.stack.nl/~brama/src/mp3blaster-2.0b1.tar.gz</A>
|
||
<P>
|
||
For more information: <BR>
|
||
Bram Avontuur, <A HREF="mailto:brama@mud.stack.nl">brama@mud.stack.nl</A>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
X-CD-Roast 0.96c
|
||
</H3>
|
||
<P>
|
||
Date: December 9, 1997
|
||
<P>
|
||
X-CD-Roast 0.96c, a CD writer package for X, has been released.
|
||
Really new stuff:
|
||
<ul>
|
||
<li>based on Tcl/Tk 8.0
|
||
<li>includes cdrecord-1.5 and mkisofs 1.11.1
|
||
<li>lots of fixes.
|
||
</ul>
|
||
Check out the web page: <A HREF="http://www.fh-muenchen.de/rz/xcdroast/">
|
||
http://www.fh-muenchen.de/rz/xcdroast/</A>
|
||
|
||
<P>
|
||
For more information: <BR>
|
||
Thomas Niederreiter, <A HREF="mailto:p7003ad@sunmail.lrz-muenchen.de">
|
||
p7003ad@sunmail.lrz-muenchen.de</A>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
ADABAS D Workgroup Edition
|
||
</H3>
|
||
<P>
|
||
Date: December 11, 1997
|
||
<P>
|
||
ADABAS D Workgroup Edition 10.0 for Linux is now available. Visit
|
||
<A HREF="http://www.IoS-online.de">http://www.IoS-online.de</A>
|
||
<P>
|
||
For more information: <BR>
|
||
Bjoern Bayard, <A HREF="mailto:Bjoern.Bayard@ios-online.de">
|
||
Bjoern.Bayard@ios-online.de</A>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
||
Linbot 0.1 web site management tool
|
||
</H3>
|
||
<P>
|
||
Date: December 12, 1997
|
||
<P>
|
||
Linbot 0.1 is a tool that can examine a web site for broken links,
|
||
outdated pages, and other useful information. It is based on the
|
||
commercial LinkBot from TetraNet Software (http://tetranetsoftware.com/)
|
||
though Linbot will be free.
|
||
You can get Linbot at <A HREF="http://home1.gte.net/marduk/linbot/index.html">
|
||
http://home1.gte.net/marduk/linbot/index.html</A>
|
||
<P>
|
||
For more information: <BR>
|
||
Marduk, <A HREF="mailto:marduk@gte.net">marduk@gte.net</A>
|
||
|
||
|
||
<P> <hr> <P>
|
||
<!--================================================================-->
|
||
<center>Published in <I>Linux Gazette</I> Issue 24, January 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_tips24.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
|
||
<A HREF="./lg_answer24.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_answer24.html#net1">Netscape Mail Crashing</a>
|
||
<li><a HREF="./lg_answer24.html#slack">Slackware Help</a>
|
||
<li><a HREF="./lg_answer24.html#net2">Netscape /var/spool/USER </a>
|
||
<li><a HREF="./lg_answer24.html#virtual">Getting Rid of Virtual Screens</a>
|
||
<li><a HREF="./lg_answer24.html#diald">diald's niche</a>
|
||
<li><a HREF="./lg_answer24.html#redh1">Upgrade to Red Hat 5.0?</a>
|
||
<li><a HREF="./lg_answer24.html#redh2">Red Hat Linux and WABI and other things</a>
|
||
<li><a HREF="./lg_answer24.html#pdt">Linux as a PDT</a>
|
||
</ul>
|
||
|
||
<p><HR><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="net1"></a>
|
||
<H3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
Netscape Mail Crashing
|
||
</H3>
|
||
<P> <B>
|
||
From: Jim Kelley, <A
|
||
HREF="mailto:the-jim@swbell.net">the-jim@swbell.net</A><BR>
|
||
</B> <P> <B>
|
||
I've been running Netscape Communicator 4.04 on my RedHat Linux system
|
||
since the day it came out and yesterday it started crashing whenever I
|
||
check for new messeges or try to go to a newsgroup. I've deleted NC4.04
|
||
and re-installed it but to no avail.
|
||
Any suggestions?
|
||
</B> <P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
When you removed NC4.04 (which I didn't know had been released
|
||
yet -- I'm still using 4.03) did you also remove your ~/.netscape
|
||
directory tree?
|
||
<P>
|
||
What happens if you try it from another account on the same
|
||
system? What happens if you use different e-mail and newsreaders?
|
||
(elm, pine, emacs' mh-e and/or tin, nn, trn, or emacs' Gnus
|
||
for respective examples).
|
||
<P>
|
||
I would suspect a data or configuration file corruption. Many
|
||
programming practices that I most loathe and detest have to do
|
||
with a lack of robustness and simple error messages with regard
|
||
to corrupted input. Is it really that hard to have a switch
|
||
that logs each input source like: "Reading configuration from
|
||
~/.netscape/foorc....." and "Bounds error at ~/.netscape/bar.conf
|
||
offset 0x2AFF9A77"?
|
||
|
||
I haven't looked at the innards of NS Comm's data files -- I
|
||
wouldn't use their mail and newsreaders since I'm very
|
||
particular about my mail and netnews -- and I need extensible,
|
||
configurable, text mode capable systems (so I use emacs' mh-e and
|
||
Gnus).
|
||
<P>
|
||
--Jim
|
||
|
||
<p><HR><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="slack"></a>
|
||
<H3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
Slackware Help
|
||
</H3>
|
||
<P> <B>
|
||
From: Ralph, <A HREF="mailto:RPMAXEDGE@aol.com">RPMAXEDGE@aol.com</A>
|
||
</B> <P> <B>
|
||
HELP!!!!!!!!!!!!!<BR>
|
||
Recently I installed Linux Slackware version 3.2, everything loaded fine, but
|
||
I really run into problems when I set up the password for the root, for some
|
||
reason the one i register doesn't allow me to log in. I have problems on how
|
||
to mount the /root and remove the existing password from the /etc/shadow. I
|
||
install linux with partitions for a SCSI hardrive sda1 sda2.
|
||
I would really appreciate some few hints to solve this problem.. Thank YOU
|
||
VERY MUCH.
|
||
</B> <P> <B>
|
||
--Ralph
|
||
</B> <P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
I haven't used any of the newer Slackware systems -- so I don't know
|
||
if there's anything specific to their system that would contribute
|
||
to or cause this problem.
|
||
<P>
|
||
The general way to fix this sort of problem (lost root password) is
|
||
to boot from a rescue diskette (or from an "alternate root partition")
|
||
mount your normal root partition (let's you put it under /mnt/oldroot)
|
||
and then simply edit the mnt/oldroot/etc/passwd file -- and maybe the
|
||
corresponding shadow file).
|
||
<P>
|
||
Another trick is to use the chroot command instead of editing the
|
||
passwd files directly. Basically you can follow the mount with
|
||
a command sequence like:
|
||
<PRE>
|
||
cd /mnt/oldroot/ && usr/sbin/chroot . bin/sh
|
||
</PRE>
|
||
... and then:
|
||
<PRE>
|
||
passwd
|
||
</PRE>
|
||
(allows you to use the normal passwd command -- and forces it to
|
||
update the passwd files *under* the (chroot)/etc directory rather
|
||
than the one of the root diskette or the alternative root part).
|
||
<P>
|
||
A properly maintained alternative root partition should have
|
||
extra copies (mirrors) of the whole /etc directory from your
|
||
production root partition. This makes recovery from errors
|
||
*much* easier. On some systems you may be able to use a
|
||
removable drive (LS120, Zip, Jaz, magneto-optical, Bernouli,
|
||
Syquest, DynaMO, whatever) as your alternative root system.
|
||
<P>
|
||
-- Jim
|
||
|
||
<p><HR><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="net2"></a>
|
||
<H3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
Netscape /var/spool/USER
|
||
</H3>
|
||
<P> <B>
|
||
From: John Liebenrood, <A
|
||
HREF="mailto:k7ro@teleport.com">k7ro@teleport.com</A>
|
||
</B> <P> <B>
|
||
I'm running Redhat 4.2 with Netscape 3.01. I can
|
||
send mail fine but I can't receive mail. I don't understand
|
||
how to configure my /var/spool/USER. I've used chown mail.mail
|
||
and chmod 01777 on USER file. But still can't get mail to come
|
||
in...
|
||
all talk no listen
|
||
</B> <P> <B>
|
||
--john
|
||
</B> <P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
Do you have a POP account? Are you trying to
|
||
read you mail from the localhost? Where is your
|
||
localhost supposed to get it's mail from?
|
||
<P>
|
||
Normally 'sendmail' (or smail, deliver, or procmail)
|
||
appends messages to your spool file. 'sendmail' gets
|
||
your mail via SMTP or from your UUCP system (depending
|
||
on your configuration and your ISP/account type).
|
||
<P>
|
||
There are a bunch of factors that anyone would need to
|
||
know before answering your question.
|
||
<P>
|
||
Netscape is normally configured to fetch mail via the
|
||
POP protocol and to send it directly via SMTP. If your
|
||
system is already configured to send and recieve mail
|
||
(i.e. you can use other mail user agents (MUA's) like
|
||
elm, pine, mh, etc) then you should be able to configure
|
||
Netscape to use "localhost" (the loopback interface --
|
||
internal to your own system).
|
||
<P>
|
||
Personally I won't use NS Nav. (or Comm.) as a mail or
|
||
news client. I absolutely require a text mode interface
|
||
<P>
|
||
-- Jim
|
||
|
||
<p><HR><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="virtual"></a>
|
||
<H3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
Getting Rid of Virtual Screen
|
||
</H3>
|
||
<P> <B>
|
||
From: <A HREF="mailto:bmiles@intergate.bc.ca">bmiles@intergate.bc.ca</A>
|
||
</B> <P> <B>
|
||
Hi, how do i get rid of the virtual screen under x windows, it's bloody
|
||
annoying!! I've tried disabling it under install and I've even tried
|
||
resetting my resolution size, please help!!!
|
||
</B> <P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
Assuming you're using XFree86 you'd edit your XF86Config file
|
||
(which might be /etc/X11/XF86Config or might be something more
|
||
like /usr/X11R6/lib/.... or something).
|
||
<P>
|
||
Find the Screen section for the device driver and mode you're
|
||
using, look for the display subsection that applies you your
|
||
monitor and modify the "Virtual" line thereunder.
|
||
<P>
|
||
If you've tried that (if that's what you mean by "resetting my
|
||
resolution" or "disabling it under install") than it's possible
|
||
that you're using a different X Server than I think you are
|
||
(Xig, or Metro-X or something) or that your installation or
|
||
distribution is using a config file in a different location
|
||
than you think it is.
|
||
<P>
|
||
The man pages for 'X', 'startx' and 'xinit' may help -- in
|
||
particular the XFree86 servers allow you to specify an option
|
||
of -xf86config file -- which allows you to explicitly over-ride
|
||
the system wide configuration (and is a great reason for
|
||
security concscious sysadmins to limit the execution of X to
|
||
some trusted local users -- and maybe use xdm).
|
||
<P>
|
||
I found this option in XFree86(1) (that's the XFree86 man page
|
||
in chapter one on my man pages). Don't confuse it with the
|
||
-config option referred to in the XServer(1) man page. That
|
||
option just says that more *command-line options* are stored
|
||
in a file. The XServer man page refers to options and
|
||
configuration information that should apply to any Unix X
|
||
Windows display server. The XFree86(1) page refers to the
|
||
extensions which apply to the servers written as part of the
|
||
XFree86 project. The various XF86_* man pages refer to the
|
||
features that are specific to specific servers (that is the
|
||
ones which are compiled for a given video card or chipset).
|
||
<P>
|
||
You're only running one binary -- yet three man pages apply
|
||
to whichever one you're using. This is unnecessarily confusing
|
||
-- and one of the books I've perused (on Unix, X, or Linux)
|
||
cover this sort of thing. So you have to wander through lots
|
||
of different man pages and /usr/doc/* files without a clear
|
||
roadmap.
|
||
<P>
|
||
I'm hoping that some future distribution (maybe the Red Hat
|
||
5.0 that's supposed to be shipping in the next couple of
|
||
weeks, or the next Debian) will have a really good set of
|
||
HTML (lynx clean!) documents, served by default off of the
|
||
initial localhost webserver which takes a top down, organized
|
||
approach to educating and informing us about all the power and
|
||
choices we have in Linux.
|
||
<P>
|
||
-- Jim
|
||
|
||
<p><HR><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="diald"></a>
|
||
<H3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
diald's Niche
|
||
</H3>
|
||
<P> <B>
|
||
From: Pollywog, <A
|
||
HREF="mailto:caldera-users@rim.caldera.com">caldera-users@rim.caldera.com
|
||
</A>
|
||
</B> <P> <B>
|
||
Put it anywhere you'd like. The .rpm version installs into defined
|
||
sub-directories, but keep the .rpm file anywhere you like. I have
|
||
/usr/local/packages for tarballs and .rpms....
|
||
</B> <P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
I recommend that SA's use a /usr/local/from directory
|
||
tree. You can then have a set of directories named
|
||
after your favorite FTP and web sites and after the
|
||
volume names of your favorite CD's.
|
||
<P>
|
||
When you download/fetch a file -- put it into a directory
|
||
that reminds you where you got it from such as:
|
||
<P>
|
||
/usr/local/from/sunsite/
|
||
/usr/local/from/redhat/
|
||
/usr/local/from/ftp.replay.com/
|
||
<P>
|
||
... etc.
|
||
<P>
|
||
Now when you want to upgrade a package you can see where
|
||
you got the previous version from -- and consequently you
|
||
have a headstart on where to look for upgrades.
|
||
<P>
|
||
This technique is also handy if you read an alert about a
|
||
compromised (trojan) package -- you can easily see where
|
||
*you* got your copy from.
|
||
<P>
|
||
For files you install off of the CD -- create a directory
|
||
name that reminds of you which CD it is like:
|
||
<P>
|
||
/usr/local/from/cd/MOP/ (Mother of Perl)
|
||
/usr/local/from/cd/rharchive.fall97/
|
||
<P>
|
||
... etc.
|
||
<P>
|
||
Now you just put symlinks from that directory to your usual
|
||
CD-ROM mount point (ln -s /mnt/cdrom/dir/foo foo).
|
||
<P>
|
||
This creates a tree of "broken" links -- but it tells you
|
||
where to find the source file if/when you need to rebuild.
|
||
<P>
|
||
As you can probably see this technique is really a "poor
|
||
man's HSM" (hierarchial storage management system). You can
|
||
also extend this idea to migrated data files from your home
|
||
directories to removable media (such as Zip, Syquest, MO,
|
||
and CDR devices).
|
||
<P>
|
||
It's also a very handy form of self-documentation in businesses
|
||
where you may have many sysadmins or you may have various
|
||
consultants "stomping" around on your systems.
|
||
<P>
|
||
-- Jim
|
||
|
||
<p><HR><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="redh1"></a>
|
||
<H3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
Upgrade to Red Hat 5.0?
|
||
</H3>
|
||
<P> <B>
|
||
From: Jason Welsh, <A HREF="mailto:jwelsh@mci.net">jwelsh@mci.net</A>
|
||
</B> <P> <B>
|
||
hey, im running an older 4.something version of Red Hat and was
|
||
wondering if I just wanted to upgrade it to 5.0, do I need to
|
||
download certain RPMS or do I need to get the whole thing?
|
||
or get it on CD.. just curious if there was a shortcut I could
|
||
take..
|
||
</B> <P> <B>
|
||
--Jason.
|
||
</B> <P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
I would get the CD (in fact I did -- but I haven't
|
||
run the upgrade yet -- want to finish some work and
|
||
do an extra backup first).
|
||
<P>
|
||
CD's save lots of bandwidth and save lots of time.
|
||
<P>
|
||
If you don't need the commercial packages that come
|
||
with Red Hat (the BRU and Metro-X) you can wait a
|
||
month or so for the "Archives" set to come out --
|
||
which is about $20 (less than half the full version).
|
||
<P>
|
||
-- Jim
|
||
|
||
<p><HR><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="redh2"></a>
|
||
<H3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
Red Hat Linux and WABI and other things
|
||
</H3>
|
||
<P> <B>
|
||
From: <A
|
||
HREF="mailto: peter@trimatrix.net">peter@trimatrix.net</A>
|
||
</B> <P> <B>
|
||
I have RedHat Linux v5.0 (kernal 2.x) ($49) and (silly me)
|
||
found out that Caldera OpenLinux Standard ($399) supports
|
||
WABI for Windows 3.1 apps, FreeDOS (or is it DOSEMU??) for
|
||
DOS apps, and NetWare 3.x/4.x client supporting NDS (Network
|
||
Directory Services).
|
||
</B> <P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
WABI/Linux (a.k.a the Windows 3.1 Applications Binary
|
||
Interface) is available separately from Caldera. It
|
||
is a commercial package -- and it should install on
|
||
most Linux systems without much trouble.
|
||
<P>
|
||
There's also WINE ("WINdows Emulation" or "WINE is not
|
||
Emulation" -- take your pick of acronym expansion).
|
||
This is a freeware project to implement enough support
|
||
for the lower level Windows API's to allow Linux (and
|
||
other Unix) users to install MS-Windows and run Windows
|
||
programs.
|
||
<P>
|
||
I've heard that it is also possible to run Windows 3.1
|
||
in "standard mode" under DOSEMU/MS-DOS. I'm not sure if
|
||
that works under other DOS variants running under DOSEMU.
|
||
<P>
|
||
OpenDOS is Caldera's release of "Novell DOS" (which
|
||
was formerly "DR DOS" -- from Digital Research).
|
||
Caldera aquired the licenses and rights to Novell DOS
|
||
when Novell decided to "refocus on its 'core' markets"
|
||
(and practically gutted itself in the process). In
|
||
fact Caldera's "Network Desktop" (their distribution that
|
||
preceded the OpenLinux/Base and OpenLinux/Standard) was
|
||
originally a research project at Novell.
|
||
<P>
|
||
OpenDOS is partially commercial -- it is free for personal
|
||
use (or for students, or something like that -- read their
|
||
web pages for details). It has little to do with DOSEMU.
|
||
OpenDOS is available on CD for about $30(US).
|
||
<P>
|
||
DOSEMU is really a bit of a misnomer. Technically it's
|
||
a BIOS emulator which can be used to run any x86 "real mode"
|
||
operating system (such as CP/M-86 or some versions of Forth).
|
||
When you install DOSEMU you also have to install some copy of
|
||
DOS (MS-DOS, PC-DOS, OpenDOS, whatever) to get any practical
|
||
use out of it. DOSEMU includes several DOS programs which
|
||
connect to the underlying Linux system. This allows one to
|
||
access Linux directories and NFS mounts as DOS "network"
|
||
drive letters, and do other things like that.
|
||
<P>
|
||
FreeDOS is a different project -- you can learn more about
|
||
it at http://www.freedos.org. They are quite Linux friendly
|
||
-- but I haven't played with their release (and I've barely
|
||
touched DOSEMU or Caldera's OpenDOS) so I can't say much about
|
||
it.
|
||
<P>
|
||
Regarding Netware access from Linux:
|
||
<P>
|
||
Caldera's Netware client access (with bindery and NDS support)
|
||
is only available as part of their OpenLinux Standard (as far as
|
||
I know). I've heard that some people have successfully installed
|
||
the clients on other Linux distributions. However it appears
|
||
that you are legally required to purchase the commercial
|
||
COL/Standard (Caldera OpenLinux is often called COL by participants
|
||
of it's mailing lists).
|
||
<P>
|
||
There are also a couple of free packages that implement some
|
||
Netware protocols for Linux. 'ncpfs' is one that allows you
|
||
to 'mount' Netware partitions in a way that similar to NFS.
|
||
This is a system-wide mount (unlike the Caldera netware clients
|
||
where each user has unique "virtual" mountings that are not
|
||
visible from other concurrent processes on the system.
|
||
<P>
|
||
There's also the mars_nwe (Netware emulator) that implements
|
||
a subset of the Netware fileserver protocols -- allowing DOS
|
||
and other systems to access portions of your Linux
|
||
filesystem(s) using the Netware clients (similar to 'samba'
|
||
for Windows for Workgroups/LANMan/NT functionality).
|
||
<P> <B>
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
I would like to know if this support can be added to RedHat
|
||
Linux by downloading this stuff from somewhere, and recompiling
|
||
the kernel? Can you help? I'm new to RedHat and have not
|
||
yet gotten an answer from them.... If not, can you direct me
|
||
to where I can inquire? This is a quest to make use of our
|
||
486 computers at work (and just need to know) by running
|
||
Linux, and still support some things like Windows 3.1x Lotus Lotsuite,
|
||
etc., which Caldera claims to do, but I would like
|
||
to find out how much trouble it would be to add support to
|
||
Redhat.....
|
||
</B> <P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
In general, anything you can run under Caldera you
|
||
can get to run under Red Hat or any other reasonably
|
||
recent Linux distribution.
|
||
<P>
|
||
Since Caldera, Red Hat, Craftworks, and a couple of
|
||
other Linux distributions use the same package
|
||
management system (the RPM -- or "Red Hat Package
|
||
Manager") sharing packages among them is somewhat
|
||
simpler than installing a Debian package or Slackware
|
||
"tarball" would be.
|
||
<P>
|
||
I'd look at any FTP mirror of Red Hat's "contrib"
|
||
directory for the lastest dosemu "rpm" and install
|
||
that. You'll probably find one of these on your set
|
||
of Red Hat CD's in addition to the ones online.
|
||
You can check the online directory for updates and
|
||
recent additions.
|
||
<P>
|
||
-- Jim
|
||
|
||
<p><HR><p>
|
||
<!--================================================================-->
|
||
|
||
<a name="pdt"></a>
|
||
<H3><img align=bottom alt=" " src="../gx/ques.gif">
|
||
Linux as a PDT
|
||
</H3>
|
||
<P> <B>
|
||
From: Karl Rossing, <A HREF="mailto:gtivr6@pangea.ca">gtivr6@pangea.ca</A>
|
||
</B> <P> <B>
|
||
Linux as a PDC (Primary Domain Controller), NIS/NIS+ Master -- etc.
|
||
</B> <P> <B>
|
||
I was wondering if it is possble to get windows 95/NT to authenticate
|
||
to LINUX (using nis or nis+). I'm really getting tired of adding
|
||
accounts on the nt boxes for the linux boxes(for smb)...Is there any
|
||
commercial software availible?
|
||
</B> <P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
It sounds like you're asking fundamentally different
|
||
questions here.
|
||
<P>
|
||
In your subject you refer to using Linux as a PDT
|
||
by which I presume you meant a PDC (Primary Domain
|
||
Controller). Here you refer to using NIS/NIS+ --
|
||
which would involve adding client support (third party
|
||
software) to all of the NT/'95 boxes.
|
||
<P>
|
||
A broader questions is:
|
||
<P>
|
||
What network authentication and directory
|
||
services system/model/architecture should
|
||
you use?
|
||
<P>
|
||
This is a sticky question with no easy answer.
|
||
<P>
|
||
A simpler question is:
|
||
<P>
|
||
How can I configure my MS client machines
|
||
(NT and '95) to use my Linux system's
|
||
account information for access control and
|
||
authentication?
|
||
<P>
|
||
<P>
|
||
I'll provide some thoughts on each of these questions
|
||
after commenting on the rest of your message:
|
||
<P> <B>
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
I know of p-sync [http://www.m-tech.ab.ca/psynch/index.html]
|
||
</B> <P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
I glanced at their web pages and was not impressed.
|
||
They have almost no text and are almost completely
|
||
unreadable for Lynx users. They also don't offer
|
||
any functionality in their demo -- which is just a
|
||
mockup of the GUI (crippleware).
|
||
<P> <B>
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
and NSGINA
|
||
[http://www.dcs.qmw.ac.uk/~williams/]
|
||
which seems a bit of work to setup...
|
||
</B> <P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
That would "NISGINA" This is by Nigel Williams -- apparently
|
||
derived from work by Doug Scoular(*). It is apparently released
|
||
under a BSD'ish license. So this is much more promising than
|
||
the p-sync package right off the bat.
|
||
<P>
|
||
* (http://www.arch.usyd.edu.au/~doug/gina.html)
|
||
<P>
|
||
GINA (graphical identification and authentication) is the
|
||
NT DLL that manage logins at the NT console -- there are
|
||
several different GINA's -- one from Novell for NDS, one
|
||
from MIT for Kerberos, another similar one for NT-AFS
|
||
(Transarc's distributed filesystem -- which uses a
|
||
Kerberos 4 authentication model) etc.
|
||
|
||
Here are some related URLS:
|
||
<P>
|
||
NT GINA related information:
|
||
http://web.mit.edu/cartel/ntgina.html
|
||
-- very informative -- leads to all the rest that I found.
|
||
<P>
|
||
ND_GINA - An alternative authentication method for Windows NTr,
|
||
http://www.nd.edu/~dobbins/ntarch/nd_gina_doc.html
|
||
<P>
|
||
NT/UNIX Integration with Doug's GINA replacement,
|
||
http://www.arch.usyd.edu.au/~doug/gina.html
|
||
<P>
|
||
The problem with GINA is that it doesn't appear to be
|
||
available for '95 (or earlier versions of Windows or
|
||
DOS). That may be a show stopper for for this approach
|
||
<P>
|
||
I can't recommend in good faith that you upgrade
|
||
you Win '95 systems to NT (since that just buys you
|
||
in further to this proprietary OS model -- and just
|
||
worsens your dilemma when '98 and NT 5.x ship).
|
||
<P> <B>
|
||
<img align=bottom alt=" " src="../gx/ques.gif">
|
||
I'm not really looking for passwd syncronisation, i'd like to
|
||
consolidate it to the linux box, because the users use both linux/95/nt.
|
||
nuff said, thanks.
|
||
</B> <P>
|
||
<img align=bottom alt=" " src="../gx/ans2.gif">
|
||
I don't think nearly 'nuff's been said about this topic.
|
||
There are a large number of directory service and
|
||
authentication methods that are vying for control of your
|
||
network. Each as its own security implications -- making
|
||
them co-exist is difficult from the start, and a
|
||
constant drain on administrative time and resources -- and
|
||
having them running concurrently usually means that the
|
||
weakest link prevails in your security model.
|
||
<P>
|
||
There's an excellent white paper about this at Cygnus
|
||
Solutions:
|
||
<P>
|
||
http://www.cygnus.com/product/unifying-security.html
|
||
<P>
|
||
That aside, some of your choices are:
|
||
<ul>
|
||
<li>Microsoft's WINS (and its PDC/BDC domain model)
|
||
<li>Kerberos and Cygnus Kerbnet
|
||
<li>NIS/NIS+
|
||
<li>RADIUS/TACACS
|
||
<li>LDAP (lightweight directory access protocol)
|
||
<li>Netware NDS, Banyan StreetTalk, etc.
|
||
<li>Host based security -- custom synchronization
|
||
<li>scripts.
|
||
</ul>
|
||
So far I don't like any of them. NIS/NIS+ is usually
|
||
used with NFS. Kerberos is the models that's used
|
||
in conjunction with AFS/DFS (and CODA if they ever
|
||
finish it). CIFS/SMB filesharing can be done with
|
||
very weak authentication (workgroups style) or with
|
||
the WINS Microsoft model.
|
||
<P>
|
||
Overall I think I'll like CODA best when we have a
|
||
reasonably Linux server and client for it.
|
||
<P>
|
||
More more info on the CODA project at CMU browse
|
||
through their mailling list archives at:
|
||
<P>
|
||
http://www.coda.cs.cmu.edu/maillists/linux-coda/0175.html
|
||
<P>
|
||
I could rant for sometime about the security models of
|
||
the various network/shared filesystems -- but it's late
|
||
so let it suffice to say I like that even less than the
|
||
choices for DS and authentication. So far I think I like
|
||
TCFS (transparent cryptographic filesystem) the best for
|
||
security -- though I'm quite concerned about its performance
|
||
costs.
|
||
<P>
|
||
I presume you're using Samba on your Linux server(s) to
|
||
provide file services to your Windows clients. From a
|
||
glance at the Samba Meta-FAQ and some of its other pages
|
||
it looks like you could just let Linux/Samba manage the
|
||
accounts for your whole network.
|
||
<P>
|
||
Here's some links that relate to that:
|
||
<P>
|
||
Samba: User accounts
|
||
http://samba.anu.edu.au/samba/docs/smb_serv/html/smb_se-4.html#ss4.1
|
||
<P>
|
||
Samba Server HOWTO
|
||
http://samba.anu.edu.au/samba/docs/smb_serv/html/smb_se.html
|
||
<P>
|
||
(*Note: if I read this correctly -- Samba can't currently
|
||
be a "password server." This seems to mean that it can't
|
||
act as a PDC/BDC (backup domain controller) for NT systems
|
||
to refer client authentication requests through).
|
||
<P>
|
||
It looks like the future will hold some sort of LDAP and
|
||
Kerberos -- for NT and many other OS' and packages. This
|
||
would be fine -- if it weren't for the inevitable politicking
|
||
and kneebiting that the various commercial vendors are going
|
||
to do.
|
||
<P>
|
||
The problem is that everyone's version of LDAP (directory
|
||
services) and Kerberos (authentication) will be just
|
||
different enough that each vendor's OS will just *need* to
|
||
be *the* server for *their* domain. They'll all make
|
||
press releases about their "interoperability" -- and most
|
||
will refuse to release enough details about their "extensions"
|
||
for any other vendor (or freeware programmers) to implement
|
||
them elsewhere.
|
||
<P>
|
||
I guess it will take a few years after the initial deployment
|
||
for enough of this proprietary info to leak out (and/or be
|
||
reverse engineered) to allow system administrators to actually
|
||
have any semblance of a unified directory service and
|
||
authentication system. The bugs and security problems will
|
||
probably keep popping up for a long time after that (they've
|
||
been popping up in Unix for 27 years -- and many of them are
|
||
reappearing in NT now).
|
||
<P>
|
||
Meanwhile we're going to see a continuing explosion of
|
||
servers and network applications (client server systems)
|
||
that each require different user account (with associated
|
||
group, token, and other information) and authentication
|
||
information.
|
||
<P>
|
||
Worse yet, the various layers of management above us
|
||
are already hearing the marketeers lies -- that the
|
||
solutions are "already shipping" or "just around the
|
||
corner." This is just what management wants to hear
|
||
-- so many of them are believing it -- and planning their
|
||
budgets and project schedules accordingly. A system
|
||
administration disaster in the making.
|
||
<P>
|
||
Sorry I can't offer a brighter hope for the new year --
|
||
but I'm no marketeer.
|
||
<P>
|
||
-- Jim
|
||
|
||
<!--================================================================-->
|
||
<P> <HR> <P>
|
||
<center><H5>Copyright © 1998, James T. Dennis <BR>
|
||
Published in Issue 24 of the Linux Gazette January 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_bytes24.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
|
||
<A HREF="./nielsen.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>
|
||
<H1>Quick autofs Tutorial</H1>
|
||
<H4>By <a href="mailto:men2@auto.med.ohio-state.edu">Mark Nielsen</a></H4>
|
||
</center>
|
||
<P> <HR> <P>
|
||
|
||
What is autofs? Autofs uses automount to mount cdrom and floppy drives
|
||
(and other things) to your computer as you need them and umount as
|
||
they are not being used. What is mount and unmount? Mount and umount
|
||
are programs to mount a device ontop of a directory. For example,
|
||
this command would mount the first floppy drive (drive a: in DOS terms)
|
||
to the directory "/mnt/floppy" so that everytime you access "/mnt/floppy"
|
||
to access your floppy drive.
|
||
<p>
|
||
<pre>
|
||
mount /dev/fd0 /mnt/floppy
|
||
</pre>
|
||
<p>
|
||
And this command unmounts or frees up the floppy drive from being used.
|
||
<p>
|
||
<pre>
|
||
umount /dev/fd0
|
||
</pre>
|
||
|
||
<p>
|
||
Now, in DOS terms, your floppy disk is accessed as you need it. For normal
|
||
users, that is what they would expect. They wouldn't want to use
|
||
mount and umount because it is time consuming and because they might not
|
||
get it right.
|
||
<p>
|
||
I assume "/dev/cdrom" is your cdrom drive and "dev/fd0" is your
|
||
floppy drive. I am also assuming you will backup your "/etc/auto.master"
|
||
file.
|
||
Use this script to create the following threes files and restart autofs.
|
||
Login as "root", goto
|
||
your home directory, copy whatever between
|
||
the next two lines to a file called "CreateAutofs.script" and execute
|
||
the script with the command
|
||
<pre>
|
||
source CreateAutofs.script
|
||
</pre>
|
||
|
||
<HR>
|
||
<pre>
|
||
cd
|
||
echo "Please ignore any errors when making directories"
|
||
### Let us make sure the two directories exist, ignore errors
|
||
mkdir /mnt/floppy
|
||
mkdir /mnt/cdrom
|
||
### Let us backup the auto files in case they haven't
|
||
mv /etc/auto.master /etc/auto.master_old
|
||
mv /etc/auto.floppy /etc/auto.floppy_old
|
||
mv /etc/auto.cdrom /etc/auto.cdrom_old
|
||
### Create the files for autofs
|
||
echo "/mnt/cdrom /etc/auto.cdrom --timeout 10" > /etc/auto.master
|
||
echo "/mnt/floppy /etc/auto.floppy --timeout 1" >> /etc/auto.master
|
||
echo "floppy -user,suid,fstype=msdos :/dev/fd0" > /etc/auto.floppy
|
||
echo "cdrom -fstype=iso9660,ro :/dev/cdrom" > /etc/auto.cdrom
|
||
### Create the links to the floppy drive and cdrom drive
|
||
ln -s /mnt/floppy/floppy a:
|
||
ln -s /mnt/cdrom/cdrom d:
|
||
ln -s /mnt/floppy/floppy floppy
|
||
ln -s /mnt/cdrom/cdrom cdrom
|
||
### Lets retstart autofs, you might have to reboot
|
||
cd /etc/rc.d/init.d
|
||
./autofs restart
|
||
### If it didn't work, you might have to reboot
|
||
### Try "./autofs start" if the restart claims autofs has not been
|
||
#### started
|
||
cd
|
||
|
||
</pre>
|
||
<HR>
|
||
|
||
<p>
|
||
The end of your results should look something like the following if it
|
||
was sucessfull
|
||
<pre>
|
||
Start /usr/sbin/automount --timeout 10 /mnt/cdrom file /etc/auto.cdrom
|
||
Start /usr/sbin/automount --timeout 1 /mnt/floppy file /etc/auto.floppy
|
||
</pre>
|
||
|
||
Now put a floppy disk formatted for MSDOS and a cdrom in and execute the
|
||
commands
|
||
<pre>
|
||
ls a:
|
||
ls d:
|
||
</pre>
|
||
to see if there is anything on them. Hopefully you don't get any error
|
||
messages.
|
||
|
||
<p>
|
||
Personally, my /etc/auto.floppy file looks like
|
||
<pre>
|
||
floppy -fstype=auto,defaults,user,suid :/dev/fd0
|
||
</pre>
|
||
and my /etc/auto.cdrom file look like this
|
||
<pre>
|
||
cdrom -fstype=iso9660,user,suid :/dev/cdrom
|
||
</pre>
|
||
|
||
The reason why I gave conservative values in the script was the fact the
|
||
my values might be security hazards. But since I am the only person
|
||
using my computer, I wanted to make sure my personal account had full
|
||
access to the floppy and cdrom drives. Also, -fstype=auto doesn't seem
|
||
to work quite right when your disk is formated for MSDOS, but works
|
||
fine with ext2. "-fstype=auto" tries to autodetect the file format.
|
||
|
||
<p>
|
||
If you noticed the timeout value for the floppy drive is 1 second.
|
||
This makes it so that by the time the floppy drive light has gone out,
|
||
your floppy disk is unmounted and a normal user
|
||
can take the floppy
|
||
disk out and "nothing bad happens". I made the timeout value for the cdrom
|
||
10 seconds because it wasn't working really well at 1 second, and I
|
||
figured it was because the drive didn't have enough time to "warm up"
|
||
before it was being shut down. You might want to test what the timeout
|
||
value for your cdrom drive should be.
|
||
|
||
<p>
|
||
To get more information about autofs, do the commands
|
||
<pre>
|
||
man 5 autofs
|
||
man autofs
|
||
</pre>
|
||
and look the the directory "usr/doc" for the directory "autofs-0.3.14"
|
||
or something similar to it.
|
||
|
||
<h2> Now to explain it </h2>
|
||
Okay, here is my brief explanation for what is happening. Read the man
|
||
pages and any docs first.
|
||
|
||
<p>
|
||
Your "/etc/rc.d/init.d/autofs" script first looks at "/etc/auto.master".
|
||
That file usually has three things on each line. It has
|
||
the directory which all mounts will be located at. Then next to that value
|
||
is the filename which contains the configuration(s) for what devices you
|
||
want mounted. We will call these filenames the "supplemental" files. Next
|
||
to that value is the timeout which you want to
|
||
occur after so many seconds of inactivity. The timeout will free or umount
|
||
all devices specificed in the supplemental files after so many seconds of
|
||
inactivity.
|
||
<p>
|
||
Now, the supplemental files can have more than on entry, but for my
|
||
purposes I don't do that. Read below for the explanation. The supplemental
|
||
files can be named anything you want them to be named. They also have
|
||
three values for each entry. The first value is the "psuedo" directory. I
|
||
will explain this later. The second value contains the
|
||
mount options. The third value is the device (like "/dev/fd0" which
|
||
is the floppy drive) which the "psuedo" directory
|
||
is connected to.
|
||
<p>
|
||
The "pseudo" directory is contained in the directory which is defined
|
||
in "/etc/auto.master". When people try to access this "psuedo" directory,
|
||
they will be rerouted to the device you specified. For example, the above
|
||
script will generate a link called "a:" which if you list with the
|
||
command "ls a:" will give you a list of files in the floppy drive. Or, a
|
||
similar command would be "ls /mnt/floppy/floppy". But if you do the
|
||
command "ls /mnt/floppy", you don't see anything even though the directory
|
||
"/mnt/floppy/floppy" should exist. That is because "/mnt/floppy/floppy"
|
||
doesn't exist as a file or directory, but somehow the system knows that
|
||
if you specifically ask for "/mnt/floppy/floppy", it will reroute you
|
||
to the floppy drive.
|
||
<p>
|
||
Now as to the reason why I didn't combine the floppy drive and cdrom drive
|
||
into the same supplementary file. Each definition in the
|
||
"/etc/auto.master" file will have its own "automount" program running for
|
||
it. If you have several devices running on the same automount program and
|
||
one of them fails, it could force the others not to work. That is why
|
||
I want every device running on its own automount program which means
|
||
there is one device per supplementary file per entry in the
|
||
"/etc/auto.master" file.
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, Mark Nielsen <BR>
|
||
Published in Issue 24 of <i>Linux Gazette</i>, January 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_answer24.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./jaeggli.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>Buying A Laptop</H2>
|
||
<H4>By <a href="mailto:joelja@darkwing.uoregon.edu">Joel Jaeggli</a></H4>
|
||
</center>
|
||
<P> <HR> <P>
|
||
Having just read Micheal Shappe's review of the Fujitsu Lifebook 420d in
|
||
the Nov issue of LJ I thought I would relate a similar experience I had in
|
||
purchasing a new laptop for my organization. Academic User Services at the
|
||
University of Oregon provides support for end users on timeshare systems
|
||
running Digital Unix, VMS, Solaris, and Linux. We have a wide variety of
|
||
desktop hardware including PC's running Linux, FreeBSD, NT, 95 as well as
|
||
DEC Alphas, Sparcs, SGIs and Macs. We needed a portable computer to send
|
||
with people to do workshops, attend conferences and demo software for
|
||
people. Because our members use a number of varieties of Unix but only a
|
||
little better than half of them use Windows in the course of their work,
|
||
solid UNIX support of some variety was imperative.
|
||
<P>
|
||
Our requirements were that it should have sufficient space to dual boot
|
||
Windows95 and Linux, more over all the subsystems should work equally well
|
||
under either Windows or Linux. The Laptop needed to provide support for an
|
||
external display at 24-bit color depth as well as have support for an
|
||
external keyboard and mouse. It should above all meet those goals and be
|
||
relatively inexpensive as well as reasonably compact and durable.
|
||
<P>
|
||
We eventually settled on a Toshiba Satellite Pro 220cds. The Toshiba has a
|
||
complete compliment of ports on the back, PS/2, serial, parallel, IRDA,
|
||
VGA, docking station and interestingly enough, a USB port. It comes with a
|
||
Pentium 133 processor, 16mb of ram and 2mb of dram to drive the 12.1"
|
||
passive matrix display at 8, 16 and 24 bit color. It has a small but
|
||
sufficient 1.4gb disk. The audio jacks and the volume control are located
|
||
on the front of the case. The satellite pro 220cds is over all similar to
|
||
it's more expensive cousins the 440cds and the 460cds which will
|
||
undoubtedly replace it eventually. They are distinguished by having active
|
||
matrix displays, larger hard disks and in the case of the 460 an internal
|
||
modem.
|
||
<P>
|
||
The keyboard is quite large, the feel is closer if anything to a desktop
|
||
keyboard than anything that you would expect to find on a laptop except
|
||
for the travel of the keys which is fairly short. The Toshiba laptops have
|
||
a ThinkPad style trackpoint-pointing device rather than the ubiquitous
|
||
trackpads that seem to be on almost all portables these days. It does not
|
||
regrettably have a third mouse button like the new and very expensive
|
||
ThinkPad 770; but the buttons are located on top of each other rather than
|
||
adjacent to each other as on most trackpads. This makes them easier to
|
||
press and hold down with your thumb while moving the trackpoint with you
|
||
index finger, so you can drag a scrollbar in X for example without using
|
||
two hands.
|
||
<P>
|
||
Once I got over the fact that windows95 osr2 uses a fat/32 filesystem
|
||
which cannot be modified by fips, I used partition magic, a utility by
|
||
Powerquest to resize the windows95 partition I was able to install Redhat
|
||
4.2 without trouble. The alternative would have been to repartition the
|
||
disk by hand using fdisk and then reinstall Windows off of the supplied
|
||
CD-ROM. I choose to partition the disk 800MB for Windows and 600MB for
|
||
Linux since I needed to install some large Windows applications such as
|
||
Adobe Frame and Microsoft Office. Rather than have separate var / and home
|
||
filesystems I opted for a single large Linux partition. A 64MB slice
|
||
reserved for swap, this made sense since I didn't expect var to grow too
|
||
much. The computer wouldn't be serving to much and that everyone using the
|
||
portable under Linux would be logging in as the same user.
|
||
<P>
|
||
The Toshiba 220cds uses a Chips and Technologies 65555 chipset for the
|
||
video display. While AcceleratedX and MetroX support this chipset it is
|
||
also well supported by XFree86's SVGA X server. If you choose to run the
|
||
free server you can expect to get 640x480 or 800x600 on the internal
|
||
display at 8 16 or 24 bits per pixels. Because it has 2MB of video memory
|
||
you can drive an external monitor at up to 1280x1024 in 8-bit color.
|
||
<P>
|
||
Networking was actually easier to configure under Linux than it was in
|
||
windows. The 3com Elink 3 ethernet card and megahertz 33.6 PC-card modem
|
||
that we purchased were detected by Redhat's install disks which was
|
||
fortunate because I installed Redhat 4.2 via NFS using the network card.
|
||
Because It is a portable I haven't configured it with a static-ip, rather
|
||
I DHCP the portable under both Windows and Redhat which facilitates
|
||
dragging it back and forth between subnets on our campus a great deal. The
|
||
python based Redhat network control panel is particularly well suited to
|
||
adjusting your network configuration on the fly.
|
||
<P>
|
||
Configuring sound support turned out to be a pretty interesting exercise.
|
||
I chose to use the commercial OSS-Linux sound driver to support the Yamaha
|
||
olp3-sa chipset that the portable has. OSS-Linux could not auto detect the
|
||
settings of the sound chipset as it had done with my desktop Linux
|
||
machine. It worked fairly well once I figured out which irq's and memory
|
||
addresses were in use by the sound chipset, which was pretty easy using
|
||
the windows95 system control panel.
|
||
<P>
|
||
The Toshiba 220cds is not by the standards of the current high-flyer in
|
||
the laptop world an exceptionally fast machine, It is however full
|
||
featured and even given all the accessories that we added extremely cheap.
|
||
The laptop itself can be had for as little as $1600. The cost of a 3com
|
||
network card and a Megahertz modem were $120 and $220 dollars
|
||
respectively. A spare lithium-ion battery an additional $199 and an
|
||
additional 16MB of ram was $90. In all the fully configured laptop cost
|
||
less than $2300.
|
||
<P>
|
||
I have been very happy with how well the new laptop has worked out. It is
|
||
a compact and elegant package, which is similar in function and design if
|
||
not performance to the cream of the Toshiba notebook crop such as the
|
||
Tecra 740. The moderate sacrifice in performance results in a great
|
||
machine at a fraction of the cost. I would recommend such a device to
|
||
anyone looking in to run Linux on a laptop.
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, Joel Jaeggli<BR>
|
||
Published in Issue 24 of <i>Linux Gazette</i>, January 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="./nielsen.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./bavendiek.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>Copying Files Using Mirror</H2>
|
||
<H4>By <a href="mailto:bav@rw.sni.de">Gerd Bavendiek </a></H4>
|
||
</center>
|
||
<P> <HR> <P>
|
||
|
||
Do you have a laptop ? And want frequently to copy files to another
|
||
system ? Use mirror !
|
||
<P>
|
||
I frequently have to exchange files between my laptop and other
|
||
systems, eg. my home desktop. This can be conveniently done
|
||
using <code>rdist(1)</code>.
|
||
<p>
|
||
I wrote a small script called <code>mirror</code>, which
|
||
basically contains a call of rdist setting up a small
|
||
<code>Distfile</code> using the shell's here syntax:
|
||
<pre>
|
||
rdist -d PWD=`pwd` -f - << EOF
|
||
${PWD} -> mirror
|
||
install -oyounger ${PWD};
|
||
except_pat ( ~\\$ );
|
||
EOF
|
||
</pre>
|
||
<p>
|
||
This is not the place to deal with <code>rdist</code>-syntax
|
||
in greater detail, so see <code>rdist</code>'s-manpage, if you
|
||
like. Files will be copied to host <code>mirror</code>. Of
|
||
course you have to set up <code>/etc/hosts</code>
|
||
appropiately.
|
||
<p>
|
||
So working on a project with files in <code>~/wsp/pbd/os-tools</code>,
|
||
I can simply say
|
||
<pre>
|
||
nana:/home/bav/wsp/pbd/os-tools> mirror
|
||
mirror: updating host mirror
|
||
mirror: /home/bav/wsp/pbd/os-tools/main-window.tcl: updating
|
||
mirror: /home/bav/wsp/pbd/os-tools/os-tools.tcl: updating
|
||
mirror: /home/bav/wsp/pbd/os-tools/popups.tcl: updating
|
||
mirror: updating of mirror finished
|
||
</pre>
|
||
|
||
and <code>mirror</code> will copy new or changed files to the very same directory on
|
||
the other node. This will be done recursively. Files on the
|
||
other node, which are younger than the files on the node I
|
||
started <code>mirror</code> on, will be mentioned, but remain
|
||
untouched. Emacs-backup-files will not be copied.
|
||
<p>
|
||
Using the Option <code>-verify</code>, you can check what will be done
|
||
without really doing anything:
|
||
<pre>
|
||
nana:/home/bav/wsp/pbd/os-tools> mirror -verify
|
||
mirror: updating host mirror
|
||
mirror: /home/bav/wsp/pbd/os-tools/os-tools.tcl: need to update
|
||
mirror: /home/bav/wsp/pbd/os-tools/popups.tcl: need to update
|
||
mirror: updating of mirror finished
|
||
</pre>
|
||
<p>
|
||
The option <code>-f</code> will remove extraneous files on node
|
||
<code>mirror</code>. This is useful to get a real mirror:
|
||
<pre>
|
||
nana:/home/bav/wsp/pbd/os-tools> mirror -f
|
||
mirror: updating host mirror
|
||
mirror: lulu: /home/bav/wsp/pbd/os-tools/qqq: removed
|
||
mirror: lulu: /home/bav/wsp/pbd/os-tools/otto: removed
|
||
mirror: /home/bav/wsp/pbd/os-tools/main-window.tcl: updating
|
||
mirror: /home/bav/wsp/pbd/os-tools/popups.tcl: updating
|
||
mirror: updating of mirror finished
|
||
</pre>
|
||
<p>
|
||
Besides mirroring to another system's disk <code>mirror</code>
|
||
can be used to mirror the current directory to a floppy. This
|
||
comes in handy for a quick kind of backup. There is no real
|
||
advantage of using <code>rdist</code> when operating locally.
|
||
<p>
|
||
If there is enough space available, I use cp with the options
|
||
<code>-ruvp</code>. To do so, call <code>mirror</code> with the option
|
||
<code>-floppy</code>:
|
||
<pre>
|
||
nana:/home/bav/wsp/pbd/os-tools> mirror -floppy
|
||
./main-window.tcl -> /floppy/./main-window.tcl
|
||
./os-tools.tcl -> /floppy/./os-tools.tcl
|
||
./popups.tcl -> /floppy/./popups.tcl
|
||
</pre>
|
||
As with rdist, only new or changed files are copied. Mounting
|
||
and unmounting the floppy is done by the script. Right now
|
||
there is no way of handling extraneous files implemented.
|
||
<p>
|
||
In case you like this ideas, you can
|
||
<a href="./mirror.script">find my mirror-utility here</a>.
|
||
<hr>
|
||
<address><a href="mailto:bav@rw.sni.de">Gerd Bavendiek</a></address>
|
||
<!-- Created: Thu Sep 24 20:02:14 MET DST 1997 -->
|
||
<!-- hhmts start -->
|
||
Last modified: Thu Sep 24 22:24:59 MET DST
|
||
<!-- hhmts end -->
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, Gerd Bavendiek <BR>
|
||
Published in Issue 24 of <i>Linux Gazette</i>, January 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="./jaeggli.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./Article3e.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>
|
||
<!--===================================================================-->
|
||
|
||
<IMG SRC="./gx/balsa/prev.gif" ALT="Previous">
|
||
<A HREF="./Article3e-1.html"><IMG SRC="./gx/balsa/next.gif" ALT="Next"></A>
|
||
<IMG SRC="./gx/balsa/toc.gif" ALT="Contents">
|
||
<HR>
|
||
<center>
|
||
<H1>Linux Benchmarking: Part III -- Interpreting Benchmark Results</H1>
|
||
|
||
<H4>by André D. Balsa (writer/coordinator),
|
||
<A HREF="mailto:andrewbalsa@usa.net">andrewbalsa@usa.net </A></H4>v0.82, 31 December 1997
|
||
</center>
|
||
<P><HR><EM>This is the third article in a series of articles on Linux Benchmarking, to be published by the Linux Gazette. The first two articles showed how to successfully run synthetic or application benchmarks to produce accurate, significant and relevant data. The present article deals with the correct interpretation of this data, and it also presents nbench-byte 2.1, a modern CPU benchmark suite.</EM><HR></P>
|
||
<P>
|
||
<H2><A NAME="toc1">1.</A> <A HREF="Article3e-1.html">Contributors </A></H2>
|
||
|
||
<P>
|
||
<H2><A NAME="toc2">2.</A> <A HREF="Article3e-2.html">Benchmarking vs. benchmarketing</A></H2>
|
||
<UL>
|
||
<LI><A HREF="Article3e-2.html#ss2.1">2.1 The scientific/quantitative approach</A>
|
||
<LI><A HREF="Article3e-2.html#ss2.2">2.2 The benchmarketing approach</A>
|
||
</UL>
|
||
|
||
<P>
|
||
<H2><A NAME="toc3">3.</A> <A HREF="Article3e-3.html">Benchmarks for SMP systems</A></H2>
|
||
<UL>
|
||
<LI><A HREF="Article3e-3.html#ss3.1">3.1 Description of the problem</A>
|
||
<LI><A HREF="Article3e-3.html#ss3.2">3.2 Runtime issues</A>
|
||
<LI><A HREF="Article3e-3.html#ss3.3">3.3 Scheduling issues</A>
|
||
<LI><A HREF="Article3e-3.html#ss3.4">3.4 Further reading/links</A>
|
||
<LI><A HREF="Article3e-3.html#ss3.5">3.5 Benchmark availability</A>
|
||
</UL>
|
||
|
||
<P>
|
||
<H2><A NAME="toc4">4.</A> <A HREF="Article3e-4.html">GNU/Linux specifics</A></H2>
|
||
|
||
<P>
|
||
<H2><A NAME="toc5">5.</A> <A HREF="Article3e-5.html">An example of correct/incorrect interpretation of results</A></H2>
|
||
<UL>
|
||
<LI><A HREF="Article3e-5.html#ss5.1">5.1 Example</A>
|
||
<LI><A HREF="Article3e-5.html#ss5.2">5.2 Pitfalls</A>
|
||
</UL>
|
||
|
||
<P>
|
||
<H2><A NAME="toc6">6.</A> <A HREF="Article3e-6.html">In the next article</A></H2>
|
||
|
||
<P>
|
||
<H2><A NAME="toc7">7.</A> <A HREF="Article3e-7.html">Notes</A></H2>
|
||
|
||
|
||
<HR>
|
||
<IMG SRC="./gx/balsa/prev.gif" ALT="Previous">
|
||
<A HREF="./Article3e-1.html"><IMG SRC="./gx/balsa/next.gif" ALT="Next"></A>
|
||
<IMG SRC="./gx/balsa/toc.gif" ALT="Contents">
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, André D. Balsa<BR>
|
||
Published in Issue 24 of <i>Linux Gazette</i>, January 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="./bavendiek.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./smith.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
<P> <hr> <P>
|
||
<IMG SRC="./gx/balsa/prev.gif" ALT="Previous">
|
||
<A HREF="./Article3e-2.html"><IMG SRC="./gx/balsa/next.gif" ALT="Next"></A>
|
||
<A HREF="./Article3e.html#toc1"><IMG SRC="./gx/balsa/toc.gif" ALT="Contents"></A>
|
||
<HR>
|
||
<H2><A NAME="s1">1. Contributors </A></H2>
|
||
|
||
|
||
<P>Without the help of the following gentlemen, this article would not have been completed in time, would certainly be much shorter and would probably be filled with errors. In no particular order:
|
||
<UL>
|
||
<LI>Uwe F. Mayer,
|
||
<A HREF="mailto:mayer@tux.org">mayer@tux.org </A>(nbench-byte and general contributions/revision),</LI>
|
||
<LI>Andy Kahn,
|
||
<A HREF="mailto:kahn@zk3.dec.com">kahn@zk3.dec.com </A>(SMP Linux kernel 2.0.0 compilation benchmark idea, updates and results),</LI>
|
||
<LI>Joseph Yao,
|
||
<A HREF="mailto:jsdy@tux.org">jsdy@tux.org </A>(comments and contributions),</LI>
|
||
<LI>Fran<EFBFBD>ois Laagel,
|
||
<A HREF="mailto:f.laagel@ieee.fr">f.laagel@ieee.fr </A>(researched and contributed most of the SMP section), and</LI>
|
||
<LI>David Niemi,
|
||
<A HREF="mailto:niemi@tux.org">niemi@tux.org </A>(comments and contributions).</LI>
|
||
</UL>
|
||
</P>
|
||
<HR>
|
||
<IMG SRC="./gx/balsa/prev.gif" ALT="Previous">
|
||
<A HREF="./Article3e-2.html"><IMG SRC="./gx/balsa/next.gif" ALT="Next"></A>
|
||
<A HREF="./Article3e.html#toc1"><IMG SRC="./gx/balsa/toc.gif" ALT="Contents"></A>
|
||
|
||
<P><A HREF="./Article3e-1.html"><IMG SRC="./gx/balsa/prev.gif" ALT="Previous" HEIGHT=16 WIDTH=16></A>
|
||
<A HREF="./Article3e-3.html"><IMG SRC="./gx/balsa/next.gif" ALT="Next" HEIGHT=16 WIDTH=16></A>
|
||
<A HREF="./Article3e.html#toc2"><IMG SRC="./gx/balsa/toc.gif" ALT="Contents" HEIGHT=16 WIDTH=16></A>
|
||
|
||
<HR></P>
|
||
|
||
<H2><A NAME="s2"></A>2. Benchmarking vs. benchmarketing</H2>
|
||
|
||
<P>There are two basic approaches to benchmarking in the field of computing:
|
||
the "scientific" or quantitative approach and the "benchmarketing"
|
||
approach. Both approaches use exactly the same tools, however with a slightly
|
||
different methodology and of course with widely diverging objectives and
|
||
results.</P>
|
||
|
||
<H2><A NAME="ss2.1"></A>2.1 The scientific/quantitative approach</H2>
|
||
|
||
<P>The first approach is to think of benchmarking as a tool for experimentation.
|
||
Benchmarking is a specific branch of Computer Science, since it produces
|
||
numbers which can then be mathematically processed and analyzed; this analysis
|
||
will be later used to draw relevant conclusions about CPU architectures,
|
||
compiler design, etc.</P>
|
||
|
||
<P>As with any scientific activity, experiments (benchmark runs and reporting)
|
||
must follow some basic guidelines or rules: </P>
|
||
|
||
<UL>
|
||
<LI>A good dose of modesty/humility (don't be too ambitious to begin with)
|
||
and common sense.</LI>
|
||
|
||
<LI>No bias or prejudice.</LI>
|
||
|
||
<LI>A clearly stated objective related to advancing the state-of-the-art.</LI>
|
||
|
||
<LI>Reproducibility.</LI>
|
||
|
||
<LI>Accuracy.</LI>
|
||
|
||
<LI>Relevance.</LI>
|
||
|
||
<LI>Correct logical/statistical inference.</LI>
|
||
|
||
<LI>Conciseness.</LI>
|
||
|
||
<LI>Sharing of information.</LI>
|
||
|
||
<LI>Quoting sources/references.</LI>
|
||
</UL>
|
||
|
||
<P>Of course, this is an idealized view of the scientific community, but
|
||
these are some of the basic rules for the experimental methods in all branches
|
||
of Science.</P>
|
||
|
||
<P>I should stress that benchmarking results in <B>documented quantitative
|
||
data</B>.</P>
|
||
|
||
<P>The correct procedure for GNU/Linux benchmarking under this approach
|
||
is: </P>
|
||
|
||
<OL>
|
||
<LI>Decide on what is the issue that is going to be investigated. <B>It
|
||
is very important to execute this step before anything else gets started</B>.
|
||
Stating clearly what we are going to investigate is getting half the work
|
||
done.</LI>
|
||
|
||
<LI>Also note that we are not out to prove anything: we must start with
|
||
a clean, <B>Zen-like mind</B>. This is particularly difficult for us, GNU/Linux
|
||
benchmarkers, since we are all <B>utterly convinced</B> that: </LI>
|
||
|
||
<OL>
|
||
<LI>GNU/Linux is the best OS in the universe (what "best" means
|
||
in this context is not clear, however; probably the same as "coolest"),</LI>
|
||
|
||
<LI>Wide-SCSI-3 is better than plain EIDE, (idem),</LI>
|
||
|
||
<LI><A HREF="http://www.digital.com/semiconductor/alpha/alpha-chips.html">Digital's
|
||
64-bit RISC Alpha </A>is the best platform around for GNU/Linux development
|
||
(idem), and</LI>
|
||
|
||
<LI>X Window is a good, modern GUI (no comments). </LI>
|
||
</OL>
|
||
|
||
<LI>After purifying our minds and souls ;-), we will have to select the
|
||
tools (i.e. the benchmarks) which will be used for our benchmarking experiments.
|
||
You can take a look at my previous article for a selection of GPLed benchmarks.
|
||
Another way to get the right tool for the job at hand is to devise and
|
||
implement your own benchmark. This approach takes a lot more time and energy,
|
||
and sometimes amounts to reinventing the wheel. Creativity being one of
|
||
the nicest features in the GNU/Linux world, writing a new benchmark is
|
||
recommended nonetheless, especially in the areas where such tools are sorely
|
||
missed (Graphics, 3D, multimedia, etc). <B>Summarizing, selecting the appropriate
|
||
tool for the job is very important</B>.</LI>
|
||
|
||
<LI>Now comes the painstaking part: gathering the data. This takes huge
|
||
amounts of patience and attention to details. See my two previous articles.</LI>
|
||
|
||
<LI>And finally we reach the stage of data analysis and logical inference,
|
||
based on the data we gathered/analyzed. This is also where one can spoil
|
||
everything by joining the Dark Side of the Force (see subsection 1.2 below).
|
||
Quoting Andrew Tanenbaum: "Figures don't lie, but liars figure".</LI>
|
||
|
||
<LI>If relevant conclusions can be drawn, publishing them on the appropriate
|
||
mailing lists, newsgroups or on the <B><A HREF="http://www.linuxgazette.com">Linux
|
||
Gazette </A></B>is in order. Again this is very much a Zen attitude (known
|
||
as "coming back to the village").</LI>
|
||
|
||
<LI>Just when you thought it was over and you could finally close the cabinet
|
||
of your CPU after having disassembled it more times than you could count,
|
||
you get a sympathetic email that mentions a small but fundamental flaw
|
||
in your entire benchmarking procedure. And you begin to understand that
|
||
benchmarking is an iterative process, much like self-improvement...</LI>
|
||
</OL>
|
||
|
||
<H2><A NAME="ss2.2"></A>2.2 The benchmarketing approach</H2>
|
||
|
||
<P>This second approach is more popular than the first one, as it serves
|
||
commercial purposes and gets more subsidies (i.e. grants, sponsorship,
|
||
money, cash, dinero, l'argent, $) than the first approach. Benchmarketing
|
||
has one basic objective, and that is to prove that equipment/software A
|
||
is better (faster, more powerful, better performing or with a better price/performance
|
||
ratio) than equipment/software B. The basic inspiration for this approach
|
||
is the Greek philosophical current known as Sophism. Sophistry has had
|
||
its adepts at all times and ages, but the Greeks made it into a veritable
|
||
art. Benchmarketers have continued this tradition with varying success
|
||
(also note that the first Sophists were lawyers <A HREF="Article3e-7.html#sophism">(1)</A>
|
||
see my comment on Intel below). Of course with this approach there is no
|
||
hope of spiritual redemption... Quoting Larry Wall (of Perl fame) as often
|
||
quoted by David Niemi:</P>
|
||
|
||
<P><I>"Down that path lies madness. On the other hand the road to
|
||
Hell is paved with melting snowballs."</I></P>
|
||
|
||
<P>Benchmarketing results cover the entire range from outright lies to
|
||
subtle fallacies. Sometimes an excessive amount of data is involved, and
|
||
in other cases no quantitative data at all is provided; in both cases the
|
||
task of proving benchmarketing wrong is made more arduous.</P>
|
||
|
||
<H3>A short history of benchmarketing/CPU developments</H3>
|
||
|
||
<P>We already saw that the first widely used benchmark, Whetstone, originated
|
||
as the result of research into computer architecture and compiler design.
|
||
So the original Whetstone benchmark can be traced to the "scientific
|
||
approach".</P>
|
||
|
||
<P>At the time Whestone was written, computers were indeed rare and very
|
||
expensive, and the fact that they executed tasks impossible for human beings
|
||
was enough to justify their purchase by large organizations. </P>
|
||
|
||
<P>Very soon competition changed this. Foremost among the early benchmarketers
|
||
was the need to justify the purchase of very expensive mainframes (at the
|
||
time called supercomputers; these early machines would not even match my
|
||
< $900 AMD K6 box). This gave rise to a good number of now obsolete
|
||
benchmarks, as of course each different architecture needed a new algorithm
|
||
to justify its existence in commercial terms.</P>
|
||
|
||
<P>This <B>supercomputer market issue </B>is still not over, but two factors
|
||
contributed to its relative decline:</P>
|
||
|
||
<OL>
|
||
<LI>Jack Dongarra's effort to standardize the LINPACK benchmark as the
|
||
basic tool for supercomputer benchmarking. This was not entirely successful,
|
||
as specific "optimizers" were created to make LINPACK run faster
|
||
on some CPU architectures (note that unless you are trying to solve large
|
||
scientific problems involving matrix operations - the usual task assigned
|
||
to most supercomputers - LINPACK is not a good measure of the CPU performance
|
||
of your GNU/Linux box; anyway, you can find a version of LINPACK ported
|
||
to C in Al Aburto's excellent <A HREF="ftp://ftp.nosc.mil/pub/aburto">FTP
|
||
site</A>.</LI>
|
||
|
||
<LI>The appearance of very fast and cheap superminis, and later microprocessors,
|
||
and the widespread use of networking technologies. These changed the idea
|
||
of a centralized computing facility and signaled the end of the supercomputer
|
||
for most applications. Also modern supercomputers are built with arrays
|
||
of microprocessors nowadays (notably the latest Cray machines are built
|
||
using up to 2048 Alpha processors), so there was a shift in focus.</LI>
|
||
</OL>
|
||
|
||
<P>Next in line was the <B>workstation market </B>issue. A nice side-effect
|
||
of the various marketing initiatives on the part of some competitors (HP,
|
||
Sun, IBM, SGI among others) is that it spawned the development of various
|
||
Unix benchmarks that we can now use to benchmark our GNU/Linux boxes!</P>
|
||
|
||
<P>In parallel to the workstation market development, we saw fierce competition
|
||
develop in the <B>microprocessor market</B>, with each manufacturer touting
|
||
its architecture as the "superior" design. In terms of microprocessor
|
||
architecture an interesting development was the performance issue of CISC
|
||
against RISC designs. In market terms the dominating architecture is Intel's
|
||
x86 CISC design (c.f. Computer Architecture, a Quantitative Approach, Hennessy
|
||
and Patterson, 2nd. edition; there is an excellent 25-page appendix on
|
||
the x86 architecture). </P>
|
||
|
||
<P>Recently the demonstrably better-performing Alpha RISC architecture
|
||
was almost wiped out by Intel lawyers: as a settlement of a complex legal
|
||
battle over patent infringements, Intel bought Digital's microelectronics
|
||
operation (which also produced the StrongARM <A HREF="Article3e-7.html#arm">(2)
|
||
</A>and Digital's highly successful line of Ethernet chips). Note however
|
||
that Digital kept its Alpha design team and the settlement includes the
|
||
possibility by Digital to have present and future Alpha chips manufactured
|
||
by Intel.</P>
|
||
|
||
<P>The x86 market attracted <A HREF="http://www.intel.com">Intel </A>competitors
|
||
<A HREF="http://www.amd.com/products/cpg/cpg.html">AMD </A>and more recently
|
||
<A HREF="http://www.cyrix.com">Cyrix</A> which created original x86 designs.
|
||
AMD also bought a small startup called NexGen which designed the precursor
|
||
to the K6, and Cyrix had to grow under the umbrella of IBM and now <A HREF="http://www.national.com">National
|
||
Semiconductor</A> but that's another story altogether. Intel is still the
|
||
market leader since it has 90% of the microprocessor market, even though
|
||
both the AMD K6 and Cyrix 6x86MX architectures provide better Linux performance/MHz
|
||
than Intel's best effort to date, the Pentium II (except for floating-point
|
||
operations).</P>
|
||
|
||
<P>Lastly, we have the <B>OS market</B> issue. The <A HREF="http://www.microsoft.com">Microsoft
|
||
</A>Windows (R) line of OS's is the overwhelming market leader as far as
|
||
desktop applications are concerned, but in terms of performance/security/stability/flexibility
|
||
it sometimes does not compare well with other OSes. Of course, inter-OS
|
||
benchmarking is a risky business and OS designers are aware of that.</P>
|
||
|
||
<P>Besides, comparing GNU/Linux to other OSes using benchmarks is almost
|
||
always an exercise in futility: GNU/Linux is GPLed, whereas no other OS
|
||
can be said to be <I>free</I> (in the GNU/GPL sense). Can you compare something
|
||
that is <I>free</I> to something that is proprietary <A HREF="Article3e-7.html#freedom">(3)</A>
|
||
Does benchmarketing apply to something that is <I>free</I>?</P>
|
||
|
||
<P>Comparing GNU/Linux to other OSes is also a good way to start a nice
|
||
flame war on comp.os.linux.advocacy, specially when GNU/Linux is compared
|
||
to BSD Unices or Windows NT. Most debaters don't seem to realize that each
|
||
OS had different design objectives!</P>
|
||
|
||
<P>These debates usually reach a steady state when both sides are convinced
|
||
that they are "right" and that their opponents are "wrong".
|
||
Sometimes benchmarking data is called in to prove or disprove an argument.
|
||
But even then we see that this has more to do with benchmarketing than
|
||
with benchmarking. My $0.02 of advice: <B>avoid such debates like the plague</B>.</P>
|
||
|
||
<H3>Turning benchmarking into benchmarketing</H3>
|
||
|
||
<P>The <A HREF="http://www.specbench.org">SPEC95 </A>CPU benchmark suite
|
||
(the CPU Integer and FP tests, which SPEC calls CINT95/CFP95) is an example
|
||
of a promising Jedi that succumbed to the Dark side of the Force ;-).</P>
|
||
|
||
<P>SPEC (<B>S</B>tandard <B>P</B>erformance <B>E</B>valuation <B>C</B>orporation)
|
||
originated as a non-profit corporation with the explicit objective of creating
|
||
a vendor-independent, objective, non-biased, industry-wide CPU benchmark
|
||
suite. Founding members were some universities and various CPU and systems
|
||
manufacturers, such as Intel, HP, Digital, IBM and Motorola.</P>
|
||
|
||
<P>However, some technical and philosophical issues have developed for
|
||
historical reasons that make SPEC95 inadequate for Linux benchmarking:
|
||
</P>
|
||
|
||
<OL>
|
||
<LI><B>Cost</B>. Strangely enough, SPEC95 benchmarks are free but you have
|
||
to pay for them: last time I checked, the CINT95/CFP95 cost was $600. The
|
||
quarterly newsletter was $550. These sums correspond to "administrative
|
||
costs", according to SPEC.</LI>
|
||
|
||
<LI><B>Licensing</B>. SPEC benchmarks are not placed under GPL. In fact,
|
||
SPEC95 has a severely limiting license that makes it inadequate for GNU/Linux
|
||
users. The license is clearly geared to large corporations/organizations:
|
||
you almost need a full-time employee just to handle all the requisites
|
||
specified in the license, you cannot freely reproduce the sources, new
|
||
releases are every three years, etc...</LI>
|
||
|
||
<LI><B>Outright cheating</B>. Recently, a California Court ordered a major
|
||
microprocessor manufacturer to pay back $50 for each processor sold of
|
||
a given speed and model, because the manufacturer had distorted SPEC results
|
||
with a modified version of gcc, and used such results in its advertisements.
|
||
Benchmarketing seems to have backfired on this occasion.</LI>
|
||
|
||
<LI><B>Comparability</B>. Hennessy and Patterson (see reference above)
|
||
clearly identify the technical limitations of SPEC92. Basically these have
|
||
to do with each vendor optimizing benchmark runs for their specific purposes.
|
||
Even though SPEC95 was released as an update that would work around these
|
||
limitations, it does not (and cannot, in practical terms) satisfactorily
|
||
address this issue. Compiler flag issues in SPEC92 prompted SPEC to release
|
||
a 10-page document entitled "SPEC Run and Reporting Rules for CPU95
|
||
Suites". It clearly shows how confident SPEC is that nobody will try
|
||
to circumvent specific CPU shortcomings with tailor-made compilers/optimizers!
|
||
Unfortunately, SPEC98 is likely to carry over these problems to the next
|
||
generation of CPU performance measurements.</LI>
|
||
|
||
<LI><B>Run time</B>. Last but not least, the SPEC95 benchmarks take about
|
||
2 days to run on the SPARC reference machine. Note that this in no way
|
||
makes them more accurate than other CPU benchmarks that run in < 5 minutes
|
||
(e.g. nbench-byte, presented below)!</LI>
|
||
</OL>
|
||
|
||
<P>Summarizing, if you must absolutely compare CPU performance for different
|
||
configurations running GNU/Linux, SPEC95 is definitely <B>not</B> the recommended
|
||
benchmark. On the other hand it's a handy tool for benchmarketers.</P>
|
||
|
||
<P>
|
||
<HR><A HREF="./Article3e-1.html"><IMG SRC="./gx/balsa/prev.gif" ALT="Previous" HEIGHT=16 WIDTH=16></A>
|
||
<A HREF="./Article3e-3.html"><IMG SRC="./gx/balsa/next.gif" ALT="Next" HEIGHT=16 WIDTH=16></A>
|
||
<A HREF="./Article3e.html#toc2"><IMG SRC="./gx/balsa/toc.gif" ALT="Contents" HEIGHT=16 WIDTH=16></A>
|
||
</P>
|
||
|
||
<P><A HREF="./Article3e-2.html"><IMG SRC="./gx/balsa/prev.gif" ALT="Previous" HEIGHT=16 WIDTH=16></A>
|
||
<A HREF="./Article3e-4.html"><IMG SRC="./gx/balsa/next.gif" ALT="Next" HEIGHT=16 WIDTH=16></A>
|
||
<A HREF="./Article3e.html#toc3"><IMG SRC="./gx/balsa/toc.gif" ALT="Contents" HEIGHT=16 WIDTH=16></A>
|
||
|
||
<HR></P>
|
||
|
||
<H2><A NAME="s3"></A>3. Benchmarks for SMP systems</H2>
|
||
|
||
<H2><A NAME="ss3.1"></A>3.1 Description of the problem</H2>
|
||
|
||
<P>SMP (<B>S</B>ymmetric <B>M</B>ulti<B>P</B>rocessing) has been implemented
|
||
in the Linux kernel for Intel Pentium, Pentium MMX, Pentium Pro and Pentium
|
||
II processors <A HREF="Article3e-7.html#smp">(4) </A>and more recently
|
||
for SPARC architectures. SMP systems are usually more expensive than their
|
||
uniprocessor counterparts because they are frequently used to implement
|
||
heavy-duty (possibly fault-tolerant) servers. For this reason potential
|
||
buyers of such systems often want to make sure that applications, OS and
|
||
hardware platform will be able to satisfy their needs in terms of overall
|
||
performance before deciding on an expensive purchase. This is precisely
|
||
where a Linux SMP benchmark would be useful. As this series of articles
|
||
focuses on using current and stable 2.0.x kernels, we will only deal with
|
||
what could be done for benchmarking Linux SMP systems with current Linux
|
||
distributions.</P>
|
||
|
||
<P>Taking advantage of the additional computing power brought to the end-user
|
||
by an SMP hardware platform puts constraints on almost all layers of the
|
||
software involved: application, runtime libraries and operating system.</P>
|
||
|
||
<P>Basically two approaches are possible depending on how the application
|
||
being considered is designed: </P>
|
||
|
||
<OL>
|
||
<LI>The application uses multiple simultaneously running processes. Those
|
||
processes are very likely to communicate with each other using standard
|
||
IPC (Inter-Process Communications) mechanisms. </LI>
|
||
|
||
<LI>The application is multi-threaded: for some of the related processes,
|
||
multiple instances of sequential execution exist in the same address space.</LI>
|
||
</OL>
|
||
|
||
<P>The table below summarizes the impact of these two designs on the software
|
||
layers involved, on the programming complexity and on the expected performance
|
||
improvement (relatively to a comparable uniprocessor system):</P>
|
||
|
||
<CENTER><TABLE ALIGN=ABSCENTER BORDER=3 CELLSPACING=2 CELLPADDING=2 WIDTH="100%" >
|
||
<TR>
|
||
<TD><B>Application</B></TD>
|
||
|
||
<TD><B>Multiple single-threaded processes</B></TD>
|
||
|
||
<TD><B>Multi-threaded application</B></TD>
|
||
</TR>
|
||
|
||
<TR>
|
||
<TD>Runtime libraries special requirements</TD>
|
||
|
||
<TD>None.</TD>
|
||
|
||
<TD>Libraries must be thread safe and should preferably offer some POSIX
|
||
control over the threads.</TD>
|
||
</TR>
|
||
|
||
<TR>
|
||
<TD>Operating system special requirements: load balancing</TD>
|
||
|
||
<TD>Smart assignment of processes to processors must be implemented (static
|
||
or dynamic). </TD>
|
||
|
||
<TD>An assignment mechanism of kernel-threads to processors must be supported
|
||
</TD>
|
||
</TR>
|
||
|
||
<TR>
|
||
<TD>Example </TD>
|
||
|
||
<TD>make -j 4 vmlinux</TD>
|
||
|
||
<TD>None available AFAIK.</TD>
|
||
</TR>
|
||
|
||
<TR>
|
||
<TD>Additional programming complexity</TD>
|
||
|
||
<TD>None. </TD>
|
||
|
||
<TD>Greater than for single-hreaded applications, but it can be done by
|
||
us mere mortals. </TD>
|
||
</TR>
|
||
|
||
<TR>
|
||
<TD>Expected performance improvement </TD>
|
||
|
||
<TD>Average to poor. </TD>
|
||
|
||
<TD>High (close to linear speedup) for CPU bound applications but can also
|
||
degrade to become as low as single processor performance for system call
|
||
intensive applications.</TD>
|
||
</TR>
|
||
</TABLE></CENTER>
|
||
|
||
<P>How do those issues relate to current stable Linux kernels? </P>
|
||
|
||
<P>Good results obtained from a Linux multi-threaded benchmark would be
|
||
<I>very interesting for power users</I>.</P>
|
||
|
||
<H2><A NAME="ss3.2"></A>3.2 Runtime issues</H2>
|
||
|
||
<P>Threads can be implemented at the user-level as coroutines (e.g. the
|
||
LinuxThreads package), or can be kernel threads (i.e. threads running in
|
||
user mode but scheduled by the kernel). Until the very recent release of
|
||
Glibc 2.0 which RedHat 5.0 includes as its standard C library, finding
|
||
a thread safe runtime library could be a tough job.</P>
|
||
|
||
<H2><A NAME="ss3.3"></A>3.3 Scheduling issues</H2>
|
||
|
||
<P>The issue here is the way scheduling is implemented on SMP platforms
|
||
by the current stable kernels. Quoting its implementor Alan Cox (in a paper
|
||
he wrote in 1995):</P>
|
||
|
||
<P><I>"A single lock is maintained across all processors. This lock
|
||
is required to access the kernel space. Any processor may hold it and once
|
||
it is held may also re-enter the kernel for interrupts and other services
|
||
whenever it likes until the lock is relinquished. This lock ensures that
|
||
a kernel mode process will not be pre-empted and ensures that blocking
|
||
interrupts in kernel mode behaves correctly. This is guaranteed because
|
||
only the processor holding the lock can be in kernel mode, only kernel
|
||
mode processes can disable interrupts and only the processor holding the
|
||
lock may handle an interrupt."</I></P>
|
||
|
||
<P>So a correct interpretation of this is: right now, no more than a single
|
||
process may be executing in kernel mode (i.e. executing a system call)
|
||
at any given time.</P>
|
||
|
||
<P>But efforts are underway to improve the granularity of locking in future
|
||
2.2.x kernels. We should also soon be able to take interrupts without having
|
||
to take a lock. This should result in much better performance of system
|
||
call intensive applications on SMP systems running GNU/Linux.</P>
|
||
|
||
<H2><A NAME="ss3.4"></A>3.4 Further reading/links</H2>
|
||
|
||
<OL>
|
||
<LI>"An Implementation Of Multiprocessor Linux", Alan Cox, 1995.
|
||
I found this TeX article in the Linux source tree (kernel 2.0.33 source
|
||
in /Documentation/smp.tex).</LI>
|
||
|
||
<LI>A <A HREF="http://www.accessone.com/~jql/clone-faq.html">FAQ </A>about
|
||
the clone() Linux system call.</LI>
|
||
|
||
<LI>A clone() <A HREF="http://www.accessone.com/~jql/linus-example.html">utilization
|
||
example </A></LI>
|
||
|
||
<LI>LinuxThreads: a <A HREF="http://pauillac.inria.fr/~xleroy/linuxthreads/">package
|
||
</A>that implements user-level threads under Linux.</LI>
|
||
</OL>
|
||
|
||
<H2><A NAME="ss3.5"></A>3.5 Benchmark availability</H2>
|
||
|
||
<P>If we stick to our guideline for simple, quick running, readily available
|
||
benchmarks (or more simply, K.I.S.S. benchmarks), we can use a modified
|
||
version of the Linux kernel 2.0.0 compilation benchmark (described in article
|
||
II), now for SMP systems. Andy Kahn provided us with this test and some
|
||
very interesting results. Quoting directly from some email we exchanged
|
||
on this subject:</P>
|
||
|
||
<P><TT>"...actually, it's pretty simple. GNU "make" has
|
||
an option you can specify to use multiple processes (either a default number
|
||
or a user specified number).I don't have the man page handy right now,
|
||
but i'm pretty sure it's either the -j option or the -p option (actually,
|
||
i think both options have some importance to multiple processes). Once
|
||
you specify multiple make processes, each process will have gcc compiling
|
||
something (so in effect, it's just multiple gcc processes).</TT></P>
|
||
|
||
<P>(later)</P>
|
||
|
||
<P><TT>"Andre Derrick Balsa" wrote:</TT></P>
|
||
|
||
<P><TT>-> Great news :-)</TT></P>
|
||
|
||
<P><TT>-></TT></P>
|
||
|
||
<P><TT>-> Thanks to Andy who actually tried this on a dual PPro SMP
|
||
system and</TT></P>
|
||
|
||
<P><TT>-> explained the whole thing to me, I am pleased to announce
|
||
a version of</TT></P>
|
||
|
||
<P><TT>-> the Linux 2.0.0 kernel compilation application benchmark for
|
||
SMP</TT></P>
|
||
|
||
<P><TT>-> systems:</TT></P>
|
||
|
||
<P><TT>-></TT></P>
|
||
|
||
<P><TT>-> Just replace the "make vmlinux" (was "make
|
||
zImage") by "make -j n</TT></P>
|
||
|
||
<P><TT>-> vmlinux". Replace n by 2, 3 ... and make will launch
|
||
2, 3 ... processes</TT></P>
|
||
|
||
<P><TT>-> in parallel. Since Linux SMP will transparently distribute
|
||
processes</TT></P>
|
||
|
||
<P><TT>-> between the SMP processors, there is no need to program anything
|
||
special</TT></P>
|
||
|
||
<P><TT>-> in terms of message-passing, clone(), etc...</TT></P>
|
||
|
||
<P><TT>-></TT></P>
|
||
|
||
<P><TT>-> Andy doesn't have any exact figures available, but it seems
|
||
this would</TT></P>
|
||
|
||
<P><TT>-> provide a 30% decrease in compilation time (over a single
|
||
serialized</TT></P>
|
||
|
||
<P><TT>-> process). Thanks, Andy. :-)</TT></P>
|
||
|
||
<P><TT>-> </TT></P>
|
||
|
||
<P><TT>and because I don't have any exact figures, I decided that I would
|
||
go and get some exact figures. :) </TT></P>
|
||
|
||
<P><TT>The system tested was:</TT></P>
|
||
|
||
<P><TT>Dual Pentium Pro 180MHz overclocked to 200MHz 64MB EDO RAM</TT></P>
|
||
|
||
<P><TT>Linux 2.0.27 gcc v2.7.2.1 libc v5.3.12</TT></P>
|
||
|
||
<P><TT>hda: QUANTUM TRB850A, 810MB w/96kB Cache, LBA, CHS=823/32/63 </TT></P>
|
||
|
||
<P><TT>This is more or less your "standard" PC from about 13-14
|
||
months ago. I'm not at liberty to upgrade the software on this system,
|
||
so this is as good as it gets from me with this setup.</TT></P>
|
||
|
||
<P><TT>Also, instead of doing a "sync" before issuing the final
|
||
"make" command, I propose that if the circumstances allow it
|
||
(you have root access), then umount the file system, remount it, then go
|
||
back to that directory and build the kernel.</TT></P>
|
||
|
||
<P><TT>--- THE RESULTS! ---</TT></P>
|
||
|
||
<P><TT>"time make vmlinux" 107.32user 149.01system 4:27.91elapsed
|
||
95%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (143472major+167951minor)pagefaults
|
||
0swaps</TT></P>
|
||
|
||
<P><TT>"time make -j 2 vmlinux" 131.13user 177.77system 3:28.34elapsed
|
||
148%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (169498major+168582minor)pagefaults
|
||
8903swaps</TT></P>
|
||
|
||
<P><TT>Ugh, the results are terrible (only a 22% improvement)!! Note that
|
||
in the SMP case, CPU usage was only 148%. From this, we can see that the
|
||
2nd CPU wasn't really used all that much (efficiently)."</TT> </P>
|
||
|
||
<P>I really appreciated Andy's attitude: not only he improved on my previous
|
||
test procedure, but he went right ahead and produced some nice experimental
|
||
data to go with it! Plus one can feel how enthusiastic he was at doing
|
||
some hands-on experimentation!</P>
|
||
|
||
<P>Another nice feature of this simple SMP benchmark is that it provides
|
||
a basis for performance comparisons between uniprocessor and SMP GNU/Linux
|
||
systems.</P>
|
||
|
||
<P>Two more benchmarks would deserve a thorough description, but I will
|
||
just mention them here: </P>
|
||
|
||
<OL>
|
||
<LI><A HREF="http://www.tux.org/pub/people/david-niemi/bench/index.html">UnixBench
|
||
4.1</A> has some tests that will launch simultaneous processes.</LI>
|
||
|
||
<LI>A rather complex, but complete Unix benchmark suite developed in France,
|
||
called <A HREF="http://www.afuu.fr/">SSBA</A>. François is working
|
||
on a Linux port of the latest 2.4F revision.</LI>
|
||
</OL>
|
||
|
||
<P>
|
||
<HR><A HREF="./Article3e-2.html"><IMG SRC="./gx/balsa/prev.gif" ALT="Previous" HEIGHT=16 WIDTH=16></A>
|
||
<A HREF="./Article3e-4.html"><IMG SRC="./gx/balsa/next.gif" ALT="Next" HEIGHT=16 WIDTH=16></A>
|
||
<A HREF="./Article3e.html#toc3"><IMG SRC="./gx/balsa/toc.gif" ALT="Contents" HEIGHT=16 WIDTH=16></A>
|
||
</P>
|
||
|
||
<A HREF="./Article3e-3.html"><IMG SRC="./gx/balsa/prev.gif" ALT="Previous"></A>
|
||
<A HREF="./Article3e-5.html"><IMG SRC="./gx/balsa/next.gif" ALT="Next"></A>
|
||
<A HREF="./Article3e.html#toc4"><IMG SRC="./gx/balsa/toc.gif" ALT="Contents"></A>
|
||
<HR>
|
||
<H2><A NAME="s4">4. GNU/Linux specifics</A></H2>
|
||
|
||
|
||
<P>One should be aware of some specific details when benchmarking GNU/Linux systems, as compared to benchmarking on other OS's. </P>
|
||
<P>GNU/Linux is a multitasking, multiuser system. So, obviously system load will skew results. On the other hand, this may be exactly the behavior that we want to test: how will a GNU/Linux system perform under heavy use? There is no simple answer to this question. Again, careful data gathering and analysis may reveal interesting opportunities for GNU/Linux improvement.</P>
|
||
<P>Note that system load particularly affects latencies, so one should be very careful about the conceptual differences between latency and throughput.</P>
|
||
<P>Just a short example, provided by Jeremy Chatfield (
|
||
<A HREF="http://www.xig.com"> Xi Graphics </A>: some X servers will freeze for various seconds under heavy load, resulting in mouse movements that can become quite jerky. This behavior is totally undesirable, and yet it is <B>not</B> measured by any X server benchmarking tool available.</P>
|
||
<P>Also, in a multiuser, multitasking system, the time function reports various items that must be analyzed separately: CPU time vs system time vs elapsed time (mentionned in article II). So, for a CPU benchmark, we should use CPU time, since the time spent during I/O or system functions is irrelevant. In the case of a system benchmark, it is probable that we will try to write a benchmark that spends most of its time in the kernel, so we will use system time. On the other hand, for our Linux kernel 2.0.0 compilation benchmark, we used elapsed time. There is no general rule to be followed here, one must use one's good sense.</P>
|
||
<P>Some caveats also apply to NFS benchmarks. The present Linux NFS implementation runs in user space, not in kernel space as in BSD Unices. Similarly, comparing the performance of Linux as a router against dedicated hardware would be an example of comparing Apples and Oranges. Even though Linux networking performance is very good, particularly with some DMA bus mastering Ethernet controllers/drivers, it cannot possibly be compared to dedicated routing hardware.</P>
|
||
<HR>
|
||
<A HREF="./Article3e-3.html"><IMG SRC="./gx/balsa/prev.gif" ALT="Previous"></A>
|
||
<A HREF="./Article3e-5.html"><IMG SRC="./gx/balsa/next.gif" ALT="Next"></A>
|
||
<A HREF="./Article3e.html#toc4"><IMG SRC="./gx/balsa/toc.gif" ALT="Contents"></A>
|
||
<A HREF="./Article3e-4.html"><IMG SRC="./gx/balsa/prev.gif" ALT="Previous"></A>
|
||
<A HREF="./Article3e-6.html"><IMG SRC="./gx/balsa/next.gif" ALT="Next"></A>
|
||
<A HREF="./Article3e.html#toc5"><IMG SRC="./gx/balsa/toc.gif" ALT="Contents"></A>
|
||
<HR>
|
||
<H2><A NAME="s5">5. An example of correct/incorrect interpretation of results</A></H2>
|
||
|
||
|
||
<P>We finally get to the practical part of this article. As usual, I propose a different benchmark as a practical example, only this time we will be seeing a more complex benchmark, in fact a CPU benchmark suite: we'll use the latest version of nbench-byte (version 2.1) as our example. You can download it from Uwe Mayer's
|
||
<A HREF="http://www.tux.org/~mayer/">new Web site </A>or from the
|
||
<A HREF="http://www.tux.org/bench">Linux Benchmarking Project</A></P>
|
||
<P>What we are going to measure this time can be described as "general CPU performance". So: this is not processor performance for matrix operations, this is not MMX performance, this is not the ability of a processor to decode an MPEG stream. Also, this is not a measure of a processor interrupt response time, peak MIPS, etc.
|
||
<OL>
|
||
<LI>Wrong ways to benchmark.</LI>
|
||
<LI>Wrong way to analyze benchmarking data measurements.</LI>
|
||
</OL>
|
||
</P>
|
||
<P>Now let's take a look at a correct procedure, following all the steps recommended in section 1.1</P>
|
||
<H2><A NAME="ss5.1">5.1 Example</A></H2>
|
||
|
||
|
||
<H3>Stating our objective</H3>
|
||
|
||
|
||
<P>For this short example we just want to compare the performance of two different CPUs: the AMD K6 and the Cyrix 6x86MX. This is comparative benchmarking, so we should keep all conditions fixed and vary just this single variable: the CPU.</P>
|
||
<P>This is not too ambitious and I have no bias for/against any of these two chips. Also, since both CPUs are widely available at reasonable prices, such comparative benchmarking may be of interest to GNU/Linux users wanting to upgrade and/or put together their next CPU.</P>
|
||
<H3>Choice of a benchmark</H3>
|
||
|
||
|
||
<P>Nbench-byte is an improved, updated version of the
|
||
<A HREF="http://www.byte.com/bmark/bmark.htm"> BYTEmark benchmark suite </A>developed at BYTE magazine by Rick Grehan. Uwe F. Mayer did the port to Linux and is its present maintainer/developer. The latest version is 2.1, dated December 97.</P>
|
||
<P>Similarly to SPEC95, this modern CPU benchmark suite uses 10 different algorithms that are representative of common CPU-intensive tasks (the file bdoc.txt included with the source has a description of each algorithm). Note that Rick has stopped development of BYTEmark (neither Uwe nor myself managed to contact him), but you can see that this is not a committee-designed benchmark; in this respect its lineage fits quite well the GNU/Linux style of development.</P>
|
||
<P>Nbench-byte 2.1 also goes one step beyond SPEC95 in that it generates three index figures: an Integer Index, a Floating-Point Index and a Memory Index. The Memory Index reflects the fact that on most modern CPUs, the memory subsystem represents a major performance bottleneck. You can check the Web site for
|
||
<A HREF="http://www.cs.virginia.edu/stream/"> STREAM </A> a new benchmark specifically created to address this issue, for more information on this topic.</P>
|
||
<P>One of nbench-byte nicest features is that it calibrates itself. For each of the tests it determines a minimum amount of work that needs to be done to be able to accurately measure the time needed. Then it runs that test five times and does a statistical analysis (using the student-t distribution) to see if the results are consistent (meaning that the probability is at least 95% that the true mean of the results is within 5% of the calculated mean of the results). If not, then nbench runs the test up to twenty-five times more and does the statistical analysis after each additional test run. If consistency cannot be achieved within a total of thirty runs, a warning will be issued when the score gets reported. </P>
|
||
<P>In terms of raw data statistical processing, nbench-byte 2.1 goes beyond all the other benchmarks I have ever come across.</P>
|
||
<P>Another very interesting feature of this benchmark suite is its portability across a wide range of OS's and platforms. However, because of fundamental differences in compiler/libraries/memory management in different OSes, this benchmark should <B>not</B> be carelessly used to compare results across platforms. This is not an OS benchmark, it's a CPU benchmark (see the pitfalls subsection below). You have been warned.</P>
|
||
<H3>Benchmark setup</H3>
|
||
|
||
|
||
<P>We are doing comparative benchmarking, so we will be using exactly the same hardware for our benchmark runs. All that will change between runs is:
|
||
<OL>
|
||
<LI>The processor (one run with a 6x86MX, the other run with a K6).</LI>
|
||
<LI>A small cyrix.rc file that was added to the rc.local script. This calls set6x86 to setup a few internal 6x86MX registers. The K6 does not need this file.</LI>
|
||
</OL>
|
||
</P>
|
||
<P>Also note that we are using the precompiled nbench executable, as shipped in the tar.gz package.</P>
|
||
<P>To describe our hardware setup, we resort to the Linux Benchmarking Toolkit Report Form:</P>
|
||
<P>LINUX BENCHMARKING TOOLKIT REPORT FORM
|
||
<PRE>
|
||
CPU
|
||
</PRE>
|
||
|
||
<PRE>
|
||
===
|
||
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Vendor: AMD/Cyrix
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Model: K6-166/6x86MX-PR200
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Core clock:166 MHz (2.5 x 66MHz)
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Motherboard vendor: ASUS
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Mbd. model: P55T2P4
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Mbd. chipset: Intel HX
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Bus type: PCI
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Bus clock: 33 MHz
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Cache total: 512 Kb
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Cache type/speed: Pipeline burst 6 ns
|
||
</PRE>
|
||
|
||
<PRE>
|
||
SMP (number of processors): 1
|
||
|
||
</PRE>
|
||
|
||
<PRE>
|
||
RAM
|
||
</PRE>
|
||
|
||
<PRE>
|
||
===
|
||
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Total: 32 MB
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Type: EDO SIMMs
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Speed: 60 ns
|
||
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Disk
|
||
</PRE>
|
||
|
||
<PRE>
|
||
====
|
||
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Vendor: IBM
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Model: IBM-DCAA-34430
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Size: 4.3 GB
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Interface: EIDE
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Driver/Settings: Bus Master DMA mode 2
|
||
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Video board
|
||
</PRE>
|
||
|
||
<PRE>
|
||
===========
|
||
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Vendor: Generic S3
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Model: Trio64-V2
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Bus: PCI
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Video RAM type: 60 ns EDO DRAM
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Video RAM total: 2 MB
|
||
</PRE>
|
||
|
||
<PRE>
|
||
X server vendor: XFree86
|
||
</PRE>
|
||
|
||
<PRE>
|
||
X server version: 3.3
|
||
</PRE>
|
||
|
||
<PRE>
|
||
X server chipset choice: S3 accelerated
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Resolution/vert. refresh rate: 1152x864 @ 70 Hz
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Color depth: 16 bits
|
||
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Kernel
|
||
</PRE>
|
||
|
||
<PRE>
|
||
======
|
||
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Version: 2.0.29
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Swap size: 64 MB
|
||
|
||
</PRE>
|
||
|
||
<PRE>
|
||
gcc
|
||
</PRE>
|
||
|
||
<PRE>
|
||
===
|
||
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Version: 2.7.2.3
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Options: (default nbench)
|
||
</PRE>
|
||
|
||
<PRE>
|
||
libc version: 5.4.38
|
||
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Test notes
|
||
</PRE>
|
||
|
||
<PRE>
|
||
==========
|
||
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Two processors tested. The 6x86MX was configured with a special rc.cyrix file.
|
||
|
||
</PRE>
|
||
|
||
<PRE>
|
||
RESULTS
|
||
</PRE>
|
||
|
||
<PRE>
|
||
========
|
||
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Linux kernel 2.0.0 Compilation Time: N/A
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Whetstone Double Precision (FPU) INDEX: N/A
|
||
</PRE>
|
||
|
||
<PRE>
|
||
UnixBench 4.10 system INDEX: N/A
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Xengine: N/A
|
||
</PRE>
|
||
|
||
<PRE>
|
||
nbench-byte integer INDEX: 6x86MX - 0.686; K6 - 0.713
|
||
</PRE>
|
||
|
||
<PRE>
|
||
nbench-byte memory INDEX: 6x86MX - 0.753; K6 - 0.793
|
||
</PRE>
|
||
|
||
<PRE>
|
||
nbench-byte floating-point INDEX: 6x86MX - 0.655; K6 - 0.802
|
||
</PRE>
|
||
|
||
<PRE>
|
||
Comments
|
||
</PRE>
|
||
|
||
<PRE>
|
||
=========
|
||
|
||
</PRE>
|
||
|
||
<PRE>
|
||
With the CPU case open, it took me 30 minutes to run nbench-byte on the two processors!
|
||
|
||
|
||
</PRE>
|
||
</P>
|
||
<H3>Detailed benchmark results</H3>
|
||
|
||
|
||
<P>One can get very detailed benchmark results with nbench-byte 2.1 by specifying the -v option. However, here we are only showing the normal output from a standard run, first on the 6x86MX, then on the K6:</P>
|
||
<P><B>6x86MX results:</B></P>
|
||
<P><CODE> </CODE></P>
|
||
<P><CODE>BYTEmark* Native Mode Benchmark ver. 2 (10/95)</CODE></P>
|
||
<P><CODE>Index-split by Andrew D. Balsa (11/97)</CODE></P>
|
||
<P><CODE>Linux/Unix* port by Uwe F. Mayer (12/96,11/97)</CODE></P>
|
||
<P><CODE> </CODE></P>
|
||
<P><CODE>TEST : Iterations/sec. : Old Index : New Index</CODE></P>
|
||
<P><CODE> : : Pentium 90* : AMD K6/233*</CODE></P>
|
||
<P><CODE>--------------------:------------------:-------------:------------</CODE></P>
|
||
<P><CODE>NUMERIC SORT : 80.681 : 2.07 : 0.68</CODE></P>
|
||
<P><CODE>STRING SORT : 11.107 : 4.96 : 0.77</CODE></P>
|
||
<P><CODE>BITFIELD : 2.1997e+07 : 3.77 : 0.79</CODE></P>
|
||
<P><CODE>FP EMULATION : 8.5349 : 4.10 : 0.95</CODE></P>
|
||
<P><CODE>FOURIER : 881.21 : 1.00 : 0.56</CODE></P>
|
||
<P><CODE>ASSIGNMENT : 0.71582 : 2.72 : 0.71</CODE></P>
|
||
<P><CODE>IDEA : 147.28 : 2.25 : 0.67</CODE></P>
|
||
<P><CODE>HUFFMAN : 58.095 : 1.61 : 0.51</CODE></P>
|
||
<P><CODE>NEURAL NET : 0.70897 : 1.14 : 0.48</CODE></P>
|
||
<P><CODE>LU DECOMPOSITION : 27.869 : 1.44 : 1.04</CODE></P>
|
||
<P><CODE>==========================ORIGINAL BYTEMARK RESULTS==========================</CODE></P>
|
||
<P><CODE>INTEGER INDEX : 2.861</CODE></P>
|
||
<P><CODE>FLOATING-POINT INDEX: 1.181</CODE></P>
|
||
<P><CODE>Baseline (MSDOS*) : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0</CODE></P>
|
||
<P><CODE>==============================LINUX DATA BELOW===============================</CODE></P>
|
||
<P><CODE>C compiler : gcc version 2.7.2.3</CODE></P>
|
||
<P><CODE>libc : libc.so.5.4.38</CODE></P>
|
||
<P><CODE>MEMORY INDEX : 0.753</CODE></P>
|
||
<P><CODE>INTEGER INDEX : 0.686</CODE></P>
|
||
<P><CODE>FLOATING-POINT INDEX: 0.655</CODE></P>
|
||
<P><CODE>Baseline (LINUX) : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38</CODE></P>
|
||
<P><CODE>* Trademarks are property of their respective holder.</CODE></P>
|
||
<P><B>K6 results:</B></P>
|
||
<P><CODE> </CODE></P>
|
||
<P><CODE>BYTEmark* Native Mode Benchmark ver. 2 (10/95)</CODE></P>
|
||
<P><CODE>Index-split by Andrew D. Balsa (11/97)</CODE></P>
|
||
<P><CODE>Linux/Unix* port by Uwe F. Mayer (12/96,11/97)</CODE></P>
|
||
<P><CODE> </CODE></P>
|
||
<P><CODE>TEST : Iterations/sec. : Old Index : New Index</CODE></P>
|
||
<P><CODE> : : Pentium 90* : AMD K6/233*</CODE></P>
|
||
<P><CODE>--------------------:------------------:-------------:------------</CODE></P>
|
||
<P><CODE>NUMERIC SORT : 82.229 : 2.11 : 0.69</CODE></P>
|
||
<P><CODE>STRING SORT : 10.57 : 4.72 : 0.73</CODE></P>
|
||
<P><CODE>BITFIELD : 2.0672e+07 : 3.55 : 0.74</CODE></P>
|
||
<P><CODE>FP EMULATION : 6.4842 : 3.11 : 0.72</CODE></P>
|
||
<P><CODE>FOURIER : 1117.1 : 1.27 : 0.71</CODE></P>
|
||
<P><CODE>ASSIGNMENT : 0.93388 : 3.55 : 0.92</CODE></P>
|
||
<P><CODE>IDEA : 158.42 : 2.42 : 0.72</CODE></P>
|
||
<P><CODE>HUFFMAN : 81.407 : 2.26 : 0.72</CODE></P>
|
||
<P><CODE>NEURAL NET : 1.0764 : 1.73 : 0.73</CODE></P>
|
||
<P><CODE>LU DECOMPOSITION : 26.521 : 1.37 : 0.99</CODE></P>
|
||
<P><CODE>==========================ORIGINAL BYTEMARK RESULTS==========================</CODE></P>
|
||
<P><CODE>INTEGER INDEX : 2.990</CODE></P>
|
||
<P><CODE>FLOATING-POINT INDEX: 1.445</CODE></P>
|
||
<P><CODE>Baseline (MSDOS*) : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0</CODE></P>
|
||
<P><CODE>==============================LINUX DATA BELOW===============================</CODE></P>
|
||
<P><CODE>C compiler : gcc version 2.7.2.3</CODE></P>
|
||
<P><CODE>libc : libc.so.5.4.38</CODE></P>
|
||
<P><CODE>MEMORY INDEX : 0.793</CODE></P>
|
||
<P><CODE>INTEGER INDEX : 0.713</CODE></P>
|
||
<P><CODE>FLOATING-POINT INDEX: 0.802</CODE></P>
|
||
<P><CODE>Baseline (LINUX) : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38</CODE></P>
|
||
<P><CODE>* Trademarks are property of their respective holder.</CODE></P>
|
||
<H3>Data analysis</H3>
|
||
|
||
|
||
<P>We will concentrate on the Linux data, for obvious reasons. As we can see, whereas the 6x86MX outperforms the K6 on some tests by a narrow margin (approx. 6%), the K6 vastly outperforms the 6x86MX on other tests.</P>
|
||
<H3>Conclusion</H3>
|
||
|
||
|
||
<P>On our synthetic test nbench-byte version 2.1, the K6 has shown slightly better performance than the 6x86MX, running at the same 166MHz (2.5 x 66MHz) clock rate on exactly the same hardware.</P>
|
||
|
||
<H2><A NAME="ss5.2">5.2 Pitfalls</A></H2>
|
||
|
||
|
||
<P>The basic pitfall that one should be warned against concerning nbench-byte applies similarly to all benchmarks: one should not to try to use this tool for something it was not designed for. Since this is a CPU benchmark, do not use it to test OS performance, video bandwidth, or any other feature that implies I/O activity. Also, it is not an adequate tool for comparing compilers and/or C and math libraries.</P>
|
||
<P>This is less obvious than it seems at first. For an accurate, thorough, documented discussion of this particular pitfall, you are referred to
|
||
<A HREF="http://www.tux.org/~mayer/linux/compare/index.html">one of Uwe's excellent pages on benchmarking</A></P>
|
||
<P>Another pitfall would have been to compare the two processors running on widely different machines. Motherboard, cache and RAM timing setup can skew results by as much as 10%. Compilation options and libraries can also skew results by 25% or more.</P>
|
||
|
||
<HR>
|
||
<A HREF="./Article3e-4.html"><IMG SRC="./gx/balsa/prev.gif" ALT="Previous"></A>
|
||
<A HREF="./Article3e-6.html"><IMG SRC="./gx/balsa/next.gif" ALT="Next"></A>
|
||
<A HREF="./Article3e.html#toc5"><IMG SRC="./gx/balsa/toc.gif" ALT="Contents"></A>
|
||
<A HREF="./Article3e-5.html"><IMG SRC="./gx/balsa/prev.gif" ALT="Previous"></A>
|
||
<A HREF="./Article3e-7.html"><IMG SRC="./gx/balsa/next.gif" ALT="Next"></A>
|
||
<A HREF="./Article3e.html#toc6"><IMG SRC="./gx/balsa/toc.gif" ALT="Contents"></A>
|
||
<HR>
|
||
<H2><A NAME="s6">6. In the next article</A></H2>
|
||
|
||
|
||
<P>I had initially estimated that four articles would be enough for an overview of GNU/Linux benchmarking, but recently more issues have been raised and more questions have been asked than I could address in just four articles. The next article will deal with exactly this problem: <EM>Available Linux Benchmarking Data and Open Issues.</EM>
|
||
<UL>
|
||
<LI>The Linux Benchmarking Project. </LI>
|
||
<LI>Available Linux benchmarking data on the Web. </LI>
|
||
<LI>Suggestions for further Linux benchmarking. </LI>
|
||
<LI>A system benchmark: UnixBench.</LI>
|
||
</UL>
|
||
</P>
|
||
<HR>
|
||
<A HREF="./Article3e-5.html"><IMG SRC="./gx/balsa/prev.gif" ALT="Previous"></A>
|
||
<A HREF="./Article3e-7.html"><IMG SRC="./gx/balsa/next.gif" ALT="Next"></A>
|
||
<A HREF="./Article3e.html#toc6"><IMG SRC="./gx/balsa/toc.gif" ALT="Contents"></A>
|
||
<A HREF="./Article3e-6.html"><IMG SRC="./gx/balsa/prev.gif" ALT="Previous"></A>
|
||
<IMG SRC="./gx/balsa/next.gif" ALT="Next">
|
||
<A HREF="./Article3e.html#toc7"><IMG SRC="./gx/balsa/toc.gif" ALT="Contents"></A>
|
||
<HR>
|
||
<H2><A NAME="s7">7. Notes</A></H2>
|
||
|
||
|
||
<P>(1)
|
||
<A NAME="sophism"></A>
|
||
Basic objective of Sophists: win all arguments by any means available. Truth, logical coherence and argument transparency did not matter to Sophists. They were fought (on intellectual grounds, of course) by Socrates and Plato and later by Aristotle. A quick search on Yahoo/Altavista with keywords <EM>Sophism</EM> or <EM>Gorgias</EM> will turn up some information on the subject.</P>
|
||
<P>(2)
|
||
<A NAME="arm"></A>
|
||
StrongARM: this is an architecture developed at Digital, based on the <B>
|
||
<A HREF="http://www.arm.com ">Advanced Risc Machines </A></B>design. It provides roughly the same CPU processing performance as a 133 MHz Pentium at a fraction of the cost and with a ridiculously low power consumption (< 0.5W). Intel's purchase of Digital's microelectronics operation includes the design rights to the StrongARM, so the future of this architecture is unknown (as of December 97). Note that Linux has been ported to some implementations of the ARM architecture. The
|
||
<A HREF="http://www.corelcomputer.com/products/vnc/overview/">Corel Java NC </A>is based on Linux/ARM and uses the latest version of the StrongARM SA-110 CPU.</P>
|
||
<P>The following is strictly rumour: Digital didn't quite know what to do with the StrongARM design, since as a product it didn't fit Digital's corporate culture of high-margin minis and workstations. On the other hand, it was just a nice bargain for Intel, who was looking for exactly that sort of CPU to address the future "appliance PC" market, ideally complementing the Pentium family. Since the details of the Digital/Intel deal have been kept secret, one can only guess how much Intel paid for the StrongARM design, but rumour has it that Digital's negociators were not even aware of how strategically important this CPU was to Intel.</P>
|
||
<P>(3)
|
||
<A NAME="freedom"></A>
|
||
To get a clearer idea of what <EM>free</EM> means in the GNU/Linux world, you are referred to the various Richard Stallman (founder of the
|
||
<A HREF="http://www.gnu.org ">Free Software Foundation</A> interviews and articles, to the GNU manifest, and also of course to the text of the General Public License (GPL). In a speech in 1986, RMS said:</P>
|
||
<P><EM>"I want to establish that the practice of owning software is both materially wasteful, spiritually harmful and evil. All these three things being interrelated."</EM></P>
|
||
<P>(4)
|
||
<A NAME="smp"></A>
|
||
Intel did not license its APIC SMP specifications/technology to either Cyrix or AMD. Even though Cyrix and AMD agreed on a different, open specification called OpenPIC for multiprocessing, no motherboard was ever released to that standard (and no OS has ever implemented it, obviously). An excellent description of OpenPIC and x86 multiprocessing issues can be found in IBM's Application Note 40208, available in pdf format from
|
||
<A HREF="http://www.chips.ibm.com/products/x86/">IBM's Microelectronics Web site </A></P>
|
||
|
||
<HR>
|
||
<A HREF="./Article3e-6.html"><IMG SRC="./gx/balsa/prev.gif" ALT="Previous"></A>
|
||
<IMG SRC="./gx/balsa/next.gif" ALT="Next">
|
||
<A HREF="./Article3e.html#toc7"><IMG SRC="./gx/balsa/toc.gif" ALT="Contents"></A>
|
||
|
||
<H4>
|
||
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
</H4>
|
||
|
||
<P> <HR> <P>
|
||
<!--===================================================================-->
|
||
|
||
<center>
|
||
<H2>LXNY at UNIX EXPO '97</H2>
|
||
<H4>By <a href="mailto:mesmith@panix.com">Michael E. Smith, LXNY</a></H4>
|
||
</center>
|
||
<P> <HR> <P>
|
||
The meeting notice on Usenet (including comp.os.linux.announce) set the
|
||
tone for the event: Richard M. Stallman's original announcement of
|
||
the GNU project (Subject: Free Unix!) was the centerpiece. The event:
|
||
the traditional LXNY meeting at UNIX EXPO (this year a part of Miller
|
||
Freeman's IT Forum '97) in New York City. The speaker: Bryan Sparks,
|
||
Founder and CEO of Caldera, Inc. The setting: a corner room at the
|
||
Javits Center seating 75, with a crowd of approximately 100
|
||
enthusiasts overflowing into the corridor.
|
||
<P>
|
||
Jay Sulzberger of LXNY delivered a rousing introduction to the
|
||
speaker, establishing a martial-revolutionary theme. After regaling
|
||
the assembled troops with stories of RMS at MIT, he echoed Linus
|
||
Torvalds' call for more applications and strongly cautioned Linuxers on
|
||
the need to avoid internecine conflict -- the war is to be waged on many
|
||
fronts in many ways, even including alliances with commercial vendors.
|
||
(Caldera offers both free and commercial versions of Linux (and (DR)
|
||
OpenDOS).) Sparks spoke about the Caldera international operation,
|
||
non-desktop environments (especially kiosks), their partnerships,
|
||
their lawsuit against Microsoft, the continuing phenomenal
|
||
growth of Linux and the need for perseverance. He
|
||
mentioned that Caldera has sold 2,000,000 copies of OpenDOS.
|
||
<P>
|
||
Caldera brought some of their partners to the meeting including Corel
|
||
(WordPerfect for Linux), Enhanced Software Technologies (bru), AppGen
|
||
Business Software, FacetCorp, TwinCom and ICentral. Also represented
|
||
were VAResearch and Non-Profit Computing. Caldera provided food,
|
||
T-shirts, flashlights and OpenLinux Lite CDs to all present.
|
||
<P>
|
||
LXNY's booth at the show, which contained a display of Linux
|
||
publications, was as big a success as the meeting.
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, Michael E. Smith <BR>
|
||
Published in Issue 24 of <i>Linux Gazette</i>, January 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="./Article3e.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./nelson.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>More Adventures with SAMBA</H2>
|
||
<H4>By <a href="mailto:nelson@er.doe.gov">Dave Nelson</a></H4>
|
||
</center>
|
||
<P> <HR> <P>
|
||
If you haven't networked your small office/home office computers,
|
||
ethernet prices are now so cheap you can't afford not to! I
|
||
recently installed a three-computer LAN, including my dual-
|
||
boot Linux/Win95 box (named Dave), my wife's WfW 3.11 box (named
|
||
Kathy), and my Linux/Win95 portable. We share files among the
|
||
three computers and print to the laser printer on Dave from
|
||
within Windows.
|
||
<P>
|
||
The SMB protocol (server message blocks) does all this over IP.
|
||
SMB/IP is built into Win95 and WfW; Linux uses the Samba program
|
||
to talk SMB. A special challenge was to get Dave to look the same
|
||
to Kathy whether Dave is booted in Linux or Win95. This technique
|
||
could also be helpful if you are changing from a Windows server
|
||
to a Linux server, and you don't want to redo the settings on
|
||
each client. All the software is free, once you own the operating
|
||
systems. My total hardware costs were under $100, including a
|
||
five port 10 base T hub, network interface cards, and
|
||
twisted-pair cables.
|
||
<P>
|
||
John Fisk's article on Samba in LG issue 20 was a great
|
||
introduction to Samba. I used it to get started. Then I added
|
||
printing from Windows to Linux, solved some file permission
|
||
problems, and figured out how to make Dave look the same to Kathy
|
||
under Linux or Win95. I'm sure what I did could be improved on --
|
||
I am new to Samba and only a journeyman at Linux, but this way
|
||
works. If you worry about security, you may want to add
|
||
passwords. Between my wife and me security isn't a problem ;-)
|
||
<P>
|
||
An example of Samba's power: my wife runs Quicken on Kathy under
|
||
Windows. She transparently uses the Quicken data file stored in a
|
||
DOS partition on Dave running Linux. She transparently prints
|
||
from Quicken to the laser printer on Dave. She doesn't have to
|
||
change any settings on Kathy when I switch Dave between Linux and
|
||
Win95. And my settings on Dave are handled automatically on
|
||
bootup. Way cool!
|
||
<P>
|
||
Here's how I did it:
|
||
<P>
|
||
I used System Commander to dual boot My box (Dave)to Win95 or
|
||
Linux. I installed networking on both operating systems, using
|
||
the same IP addresses. I named my SMB group "home." Fisk's
|
||
article shows how to do most of this. My Linux release (Caldera)
|
||
comes with Samba installed. Probably your release does too. Samba
|
||
runs as two daemons: smbd and nmbd. Find them by typing
|
||
<PRE>
|
||
which smbd; which nmbd
|
||
</PRE>
|
||
If they are installed, they are probably in /usr/sbin. If not,
|
||
install them. Caldera Linux starts them on bootup by running the
|
||
script /etc/rc.d/init.d/smb. Note that if you change the Samba
|
||
configuration file, it isn't necessary to reboot (at least using
|
||
Caldera or Red Hat.) Just issue the commands
|
||
<PRE>
|
||
/etc/rc.d/init.d/smb stop
|
||
/etc/rc.d/init.d/smb start
|
||
</PRE>
|
||
and Samba will be reconfigured. Fisk's article points out that
|
||
Samba may also be started by init.d. You don't want to start
|
||
Samba twice, so check your settings after reading Fisk.
|
||
<P>
|
||
I created the following /etc/smb.conf file on Dave:
|
||
<PRE>
|
||
[global]
|
||
workgroup = home
|
||
printing = bsd
|
||
printcap name = /etc/printcap
|
||
load printers = yes
|
||
guest account = dos
|
||
|
||
[printers]
|
||
comment = All Printers
|
||
; print command = cp %s /tmp/tmp.print
|
||
print command = lpr -Pepson -b %s
|
||
browseable = yes
|
||
printable = yes
|
||
public = yes
|
||
writable = no
|
||
create mode = 0700
|
||
|
||
[d]
|
||
comment = DOS Disk d:
|
||
path = /mnt/diskd/
|
||
public = yes
|
||
writable = yes
|
||
printable = no
|
||
guest ok = yes
|
||
</PRE>
|
||
The [global] section of smb.conf tells Samba that my workgroup is
|
||
called "home," the printer description file is /etc/printcap, and
|
||
the user (or guest account) for dos services is "dos." To set up
|
||
the user "dos" run the program "adduser dos" or just edit the
|
||
/etc/passswd file. I had to edit /etc/passwd after running
|
||
adduser to get things right. My /etc/passwd file has the
|
||
following line for the user dos:
|
||
<PRE>
|
||
dos::501:500:DOS files:/home/dos:/bin/false
|
||
</PRE>
|
||
In order of fields this line says the user is dos; dos needs no
|
||
passwd; its user number is 501; its group number is 500; it is
|
||
called DOS files (this field is just a comment); its home
|
||
directory is /home/dos; and it has no shell privileges. The user
|
||
and group number were assigned by adduser; they don't have to be
|
||
501,500. To test that the user dos is set up right, change
|
||
/bin/false to /bin/bash and log on as dos. You shouldn't need a
|
||
password and should get a bash shell prompt. Then change back to
|
||
/bin/false to close the security hole. When I ran adduser, I told
|
||
it that dos belongs to group DOS, and it added the group DOS to
|
||
the /etc/group file with the line
|
||
<PRE>
|
||
DOS::500:
|
||
</PRE>
|
||
The [printers] section sets up printing for DOS. The commented-
|
||
out line "print command = cp %s /tmp/tmp.print" is a great way to
|
||
debug Samba printing. I found this in the help file
|
||
"Printing.txt" that comes in the Samba package. If this line is
|
||
uncommented and the next one commented out, the print file from
|
||
Kathy appears on Dave as /tmp/tmp.print rather than being sent to
|
||
the printer. You can check whether it arrived OK and try printing
|
||
it by running lpr. The line "print command = lpr -Pepson -b %s"
|
||
does the actual printing. The option "-Pepson" says to use the
|
||
"epson" printer description in /etc/printcap. My laser printer on
|
||
Dave is called "epson" under Win95, and Kathy expects to see the
|
||
same name under Linux. The option "-b" tells lpr to accept the
|
||
binary print files that Windows produces. Otherwise lpr chokes
|
||
because its default is to expect ASCII files, and the printer
|
||
does nothing. (Maybe this fix is the same as what is called raw
|
||
mode printing?) The "%s" parameter represents the file name being
|
||
sent to Samba.
|
||
<P>
|
||
I created a section in /etc/printcap for the epson printer:
|
||
<PRE>
|
||
epson:\
|
||
:sd=/var/spool/lpd/lp:\
|
||
:mx#0:\
|
||
:lp=/dev/lp1:\
|
||
:sh:
|
||
</PRE>
|
||
Notice there is no "if=" line, i.e. no input filter that
|
||
processes the binary print file. My printer is an Epson 7000,
|
||
basically a HPIIp clone, so it expects the DOS convention of CRLF
|
||
at line's end. If I tried to use this printer description when
|
||
printing under Linux, which only sends the Unix standard LF, I
|
||
would see the dreaded staircase effect.
|
||
<P>
|
||
The [d] section of smb.conf describes the shared disk that Kathy
|
||
expects to be called "d," the same as drive D: under DOS. I mount
|
||
it as /mnt/diskd in Linux.
|
||
<P>
|
||
I ran into a puzzling problem with user permissions (probably
|
||
either my ignorance of standard Unix practice, or something weird
|
||
about msdos filetype.) The user dos needs to have write
|
||
privileges to the directory /mnt/diskd and all its files. But I
|
||
couldn't make that happen using chmod, chown, or chgrp. As soon
|
||
as I would reboot and mount the file system, /mnt/diskd would
|
||
revert to the following privileges:
|
||
<PRE>
|
||
drwxr-xr-x 44 root root 18432 Dec 31 1969 diskd/
|
||
</PRE>
|
||
The missing "w" for group and others did me in as long as root
|
||
owned the directory.
|
||
<P>
|
||
I fixed this by editing the line in /etc/fstab for /mnt/diskd to
|
||
be the following:
|
||
<PRE>
|
||
/dev/hda5 /mnt/diskd msdos user,noauto 0 0
|
||
</PRE>
|
||
The important field is user,noauto, which means mountable by a
|
||
user and don't automatically mount on bootup. The I added a line
|
||
to /etc/rc.d/rc.local to mount diskd as user dos:
|
||
<PRE>
|
||
mount -ouid=501,gid=500 /mnt/diskd
|
||
</PRE>
|
||
This says mount /mnt/diskd with option (-o) of user id 501 and
|
||
group id 500, which correspond to the user dos. If your adduser
|
||
gives dos a different uid and gid, just change this line
|
||
appropriately. If you have trouble mounting diskd on bootup, try
|
||
logging in as dos (after changing the /etc/passwd line for dos to
|
||
/bin/bash) and mounting diskd manually. When that works, go back
|
||
and get the rc.local line to work right.
|
||
<P>
|
||
As John Fisk wrote: one thing about Linux, it hones your problem
|
||
solving skills. If you have problems, look in Samba's logs and
|
||
message files. On my system the logs are in /var/log/smbd and
|
||
/var/log/nmbd. Messages are in the directory var/samba.
|
||
<P>
|
||
That's all it took for me to set up Samba. The Samba
|
||
documentation shows a wealth of different configurations. At
|
||
first I found them all daunting, but by chipping away, one
|
||
problem at a time, things came more easily. I hope this article
|
||
helps you get started. Who needs NT servers anyway?
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, Dave Nelson <BR>
|
||
Published in Issue 24 of <i>Linux Gazette</i>, January 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="./smith.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./campo.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>My Linux Revolution </H2>
|
||
<H4>By Ylian Saint-Hilaire & <A
|
||
HREF="mailto:campo@atm.teleinfo.uqam.ca">Erik Campo</A></H4>
|
||
</center>
|
||
<P> <HR> <P>
|
||
For a long time, I lived in my cave, doing my thing. One day, I got
|
||
out of my nice, very functional cave and saw that my fellow man had
|
||
built a house just outside. It had all the same functions that my cave
|
||
had but was much comfortable and livable (for one, you didn't have to
|
||
push a boulder to close the door every night).
|
||
<p>
|
||
Many years later, I got Linux installed on my personal computer, doing
|
||
my thing. One day, surfing the net, I saw my fellow man programming a
|
||
new version of Linux, which had a great user interface, was easy to
|
||
install and possessed much more new added features. For a long time
|
||
user of Linux on an i386 like me all Linux was good for was routing
|
||
packets. This was a shock.
|
||
<p>
|
||
Of course, the new user interface I am talking about is called the KDE
|
||
project, which along with the new Red Hat distribution version 5.0,
|
||
the very active www.linux.org site and the many applications available
|
||
form an incredible package. To my great astonishment, Linux
|
||
development is in full acceleration and is starting to be viewed as a
|
||
real contender to Microsoft Windows NT. Not too long ago, people
|
||
installing Linux on a computer where viewed as computer gurus, or
|
||
mystic "roots". With the arrival of user friendliness, the question I
|
||
ask myself is: Is Linux going to become an operating system for the
|
||
general public?
|
||
<p>
|
||
Some people will feel bad of loosing the respect of being the only
|
||
ones able to install Linux in their social group. As opposed to them,
|
||
I welcome this new age. I can't wait to install Linux at my grandma's
|
||
place. The operating system of the people will finally come back to
|
||
the people.
|
||
<p>
|
||
This will, however change many things. If less technically inclined
|
||
people jump on the Linux wagon, new demands will be generated for
|
||
easier-to-use software and better support and help files. My grandma
|
||
will ask for drag-and-drop support and very large fonts. The new
|
||
people on the wagon will not be of much help in moving it forward
|
||
(have you ever seen your grandma code lately?). Still, they will bring
|
||
new respect to the OS, and, well, why not, perhaps new ideas.
|
||
<p>
|
||
Some time ago, word from "Santa Cruz" was that we had to upgrade out
|
||
of Linux. This of course was funny and it highlighted the maturity of
|
||
Linux. Not only that Linux is free but it compares better (on my
|
||
scorecard) to almost any other operating system. And unlike some
|
||
"other" operating system, Linux is soon to become a general public
|
||
operating system (hello grandma!).
|
||
<p>
|
||
So, I finally decided I was going to move out of my cave and into I
|
||
much more respectable house. But the most important thing of it all, I
|
||
must start keeping track of the developments and start pushing the
|
||
wagon myself. By the way, Linux makes a great Christmas gift!
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, Ylian Saint-Hilaire & Erik Campo<BR>
|
||
Published in Issue 24 of <i>Linux Gazette</i>, January 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="./nelson.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./ayers.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>KDE and Gnome</h1></center>
|
||
|
||
<center>
|
||
<h4><a href="mailto: layers@marktwain.net">by Larry Ayers</a></h4>
|
||
</center>
|
||
|
||
|
||
<hr>
|
||
<center><h3>Introduction</h3></center>
|
||
|
||
<p>Watching the Linux operating system begin to mature is interesting these
|
||
days. A couple of years ago much attention was devoted to incompatibilities
|
||
with various hardware components, networking, and the development of the
|
||
kernel itself. Though these activities continue, it's no longer necessary to
|
||
follow these development efforts as closely in order to run a dependable Linux
|
||
system. Distributions have improved immensely, and now more free-software
|
||
developers are turning their attention towards refinement and integration of
|
||
the user interface. Two separate projects have arisen in the past year, KDE
|
||
(the K Desktop Environment) and GNOME (the Gnu Network Object Model
|
||
Environment). Both of these projects include among their stated goals the
|
||
desire to make the administration and usage of a Linux system easier for
|
||
beginners, in part by employing a uniform look-and-feel for the most commonly
|
||
used applications and utilities, as well as interoperability of the system
|
||
components. It's difficult to make much of a comparison between the two, as
|
||
KDE is much farther along than GNOME, but I'll make an attempt.
|
||
|
||
<center><h3>Commonalities</h3></center>
|
||
|
||
<p>There is one common structural aspect to these two projects. They each
|
||
rely on a group of shared libraries, which provides the interface to basic OS
|
||
operations, such as file-reading and saving, as well as basic display and
|
||
appearance functions. The end result of this is that an installation will
|
||
populate adirectory with a variety of shared libraries, which in turn
|
||
supports another directory of fairly small executables. The Gimp works this
|
||
way as well; the individual plug-ins tand to be small, but rely on the
|
||
services provided by both the GTK and the Gimp shared libs. This approach
|
||
facilitates contributions by programmers not directly involved with a project,
|
||
as many of the low-level and window-display functions are already written,
|
||
allowing a contributed application or extension to "hook" into them.
|
||
|
||
<center><h3>KDE</h3></center>
|
||
|
||
<p>The first of the two to gain momentum was KDE. About a year ago a group of
|
||
developers, mainly European, began coding the components of this ambitious
|
||
project. They chose the Qt toolkit (from TrollTech in Norway) as the GUI
|
||
framework, a decision which has since led to some controversy. Qt has a few
|
||
licensing restrictions which, though not onerous for end-users, can cause
|
||
problems for the creators of CDROM-based distributions. Advocates of
|
||
GNU-style free software tend not to favor Qt, a circumstance which led to the
|
||
creation of the GNOME project.
|
||
|
||
<p>Setting aside the thorny licensing issues, the KDE developers have managed
|
||
to pull together quite a remarkable system in the past year, though numerous
|
||
bugs still remain evident. The second public beta was released in November of
|
||
1997, and I compiled and installed it soon after. (I had briefly tried the
|
||
initial beta, but found it too unstable to evaluate).
|
||
|
||
<p>This second release still has flaky aspects, but enough of it works to give
|
||
the user an idea of what the developers are planning to accomplish. In effect
|
||
KDE is a sort of GUI wrapper around an existing Linux system, which attempts
|
||
to simplify system-administration tasks and offer interacting and compatible
|
||
utilities and applications. Kfm is at the core of the system, as it is
|
||
intended to be left running in the background and serves as the help-viewer
|
||
for all of the KDE components. Kfm is also a file-manager (icon-based, with
|
||
some resemblance to xfm and moxfm) and serves creditably as a web-browser.
|
||
|
||
<p>Kfm is an impressive application, and in itself justifies trying out KDE.
|
||
Many of the other applications are replacements for programs which most Linux
|
||
users probably already have and would only be desirable if a complete KDE
|
||
system is the goal.
|
||
|
||
<p>KDE has its own window-manager, kwm, which had some display faults on my
|
||
system. Due to these video artifacts I didn't use it much, but it did appear
|
||
stylish and well-designed. It seems that these display bugs don't show up on
|
||
most systems; I suspect that it depends upon the video-card and X-server in
|
||
use.
|
||
|
||
<p>A new Linux user (especially someone accustomed to Windows or Macintosh
|
||
systems) might appreciate the relative ease of configuration and use which KDE
|
||
offers. In a sense, KDE extends the scope of the tasks traditional
|
||
distributions perform. One drawback might be the very comfort of the KDE
|
||
environment itself; the various system-administration tasks outside of KDE's
|
||
abilities might seem too daunting or unapproachable without a KDE interface.
|
||
This won't be seen as a drawback to prospective users who lack the fascination
|
||
with internals and configuration which in the past has typified Linux users.
|
||
|
||
<p>Some KDE users have reported that they find the system usable and useful,
|
||
but with my particular setup this wasn't the case. But I have to say that my
|
||
extensively customized Linux installation seems perfectly satisfactory as is,
|
||
and I probably lack the motivation to spend the time learning to adapt KDE to
|
||
my needs. If KDE had existed back when I first booted up a Slackware system
|
||
some years ago, who knows...
|
||
|
||
<center><h3>GNOME</h3></center>
|
||
|
||
<p>Miguel Icaza (head of the Midnight Commander development group) also seems
|
||
to be at the helm of the new GNOME development project, which has goals
|
||
similar to those of KDE, with one difference: the project is composed
|
||
completely of GNU-style free software. This project is based upon the GTK
|
||
toolkit, the free successor to Motif in the Gimp development efforts. The
|
||
project arose as a direct response to the KDE project, and the GNOME
|
||
developers have borrowed some code from KDE for a few of the applets.
|
||
|
||
<p>As of late December (version 0.10) GNOME as a whole isn't really suitable
|
||
for actual use, but several of the applets function well and the future looks
|
||
bright for the project. Miguel Icaza is in the process of porting the
|
||
Midnight Commander file-manager to GTK, which will let it fit in with the
|
||
remainder of the GNOME applications.
|
||
|
||
<p>The Panel applet, written primarily by Federico Mena Quintero, is an
|
||
icon-bar and program-launcher which locates itself at the bottom edge of the
|
||
screen. It features cascading menus which could be a substitute for the usual
|
||
window-manager root menus. Most of the GNOME applets have been included in
|
||
the default menu of Panel, allowing this applet to serve as an entry-point to
|
||
the GNOME installation. It takes a little fiddling around to get the hang of
|
||
using Panel, so don't give up if at first glance it seems like nothing is
|
||
working
|
||
|
||
<p>The provided applets include a desktop-manager (which in part serves as an
|
||
interface to the <b>Xlockmore</b> screensaver), CroMagnon (an interface to
|
||
the crontab utility), an audio mixer, an interface to the elaborate LinuxConf
|
||
configuration manager, several nicely-done games (some of which were adapted
|
||
from KDE), and several others.
|
||
|
||
<p>One major difference between GNOME and KDE is that KDE includes a
|
||
window-manager, whereas GNOME doesn't, and is designed to cooperate with a
|
||
user's current window-manager. This may make GNOME more appealing to seasoned
|
||
users who have extensively customized their window-manager resource files.
|
||
|
||
<center><h3>Conclusion</h3></center>
|
||
|
||
<p>As I write this only the source code is available for GNOME 0.10, and it's
|
||
tricky to compile. An intel-Linux binary archive of the 0.9 release is
|
||
available from <a href="ftp://ftp.nuclecu.unam.mx/GNOME">this site</a>, but I
|
||
would recommend waiting a while for either an updated binary release or an
|
||
easier-to-build source release. The developers are hard at work these days
|
||
(judging by their mailing-list postings) and I think that, given time,
|
||
something both interesting and usable will appear.
|
||
|
||
<p>Though KDE is closer to being "finished" (if such a state even
|
||
exists in the realm of software), it still has a ways to go. Development is
|
||
proceeding rapidly, and I imagine that sometime this year a more polished
|
||
release will become available.
|
||
|
||
<p>The fate of a free-software project is interesting because of the inherent
|
||
unpredictability. Anyone can start one, but whether it comes to fruition or
|
||
withers on the vine is up to the inscrutable software gods. The timing may be
|
||
just right (i.e., it addresses many users (and developers!) needs) but
|
||
convincing enough programmers with time and inclination to become involved just
|
||
can't be forced or foretold. These two projects seem to have attained that
|
||
essential momentum, and hopefully we shall see them evolve further.
|
||
|
||
<!-- hhmts start --> Last modified: Sun 4 Jan 1998 <!-- hhmts end -->
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, Larry Ayers <BR>
|
||
Published in Issue 24 of <i>Linux Gazette</i>, January 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="./campo.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>Updates and Correspondence</h1></center>
|
||
|
||
<center>
|
||
<h4><a href="mailto: layers@marktwain.net">by Larry Ayers</a></h4>
|
||
</center>
|
||
|
||
<hr>
|
||
|
||
<p>Here in north-east Missouri we are currently afflicted with a
|
||
heavy, wet snowfall, so the time is ripe to write a page updating
|
||
some of my past Gazette articles, along with some e-mail which
|
||
has come my way.
|
||
|
||
<center><h3>More Text-Processing</h3></center>
|
||
|
||
<p>I've received quite a few messages concerning my article in LG
|
||
#22, <strong>Word-Processing vs. Text-Processing</strong>. Eric
|
||
Marsden sent this message concerning the <b>Lout</b>
|
||
text-formatting system:<br>
|
||
|
||
<blockquote>
|
||
<p>From: Marsden Eric <emarsden@mail.dotcom.fr><br>
|
||
To: layers@marktwain.net<br>
|
||
Subject: [LG] Lout-mode for Emacs<br>
|
||
|
||
<p>Hello Mr Ayers,<br>
|
||
|
||
<p>In the October Linux Gazette you wrote an article comparing
|
||
different document formatters, and mentioned Lout in passing. I
|
||
noticed that you regretted the lack of an Emacs mode for Lout
|
||
code.
|
||
|
||
<p>I agreed with you, and set out to write one. Indeed, there are
|
||
now <i>two</i> Emacs modes, since another Lout user had also set about
|
||
writing one, independently of my effort. Both are available on my
|
||
<a href="http://www.chez.com/emarsden/lout/">site</a>, where you'll also find
|
||
the Lout FAQ/HOWTO.
|
||
|
||
<p>You were right to mention that "The Lout system is still
|
||
maintained and developed"; Jeff Kingston is quite receptive to
|
||
suggestions and requests for new features in the formatter, which
|
||
is far from being the case for TeX (now frozen) and LaTeX (whose
|
||
development group seems very closed).
|
||
|
||
<p>I agree that Lout is very much less widely used than LaTeX, which
|
||
is a definite disadvantage. I believe that things will change
|
||
over time, in particular given Lout's very strong capabilities
|
||
for mixing graphics and text. I might even write an article for
|
||
the Linux Gazette myself to spread the word.
|
||
|
||
Eric Marsden<br>
|
||
emarsden @ mail.dotcom.fr<br>
|
||
It's elephants all the way down. [LA: sounds like a Terry<br>
|
||
Pratchett quote!]
|
||
</blockquote>
|
||
|
||
<p>I tried out the XEMacs mode found at the above link, and
|
||
though it's still under development, it works well here and is
|
||
well worth investigating.
|
||
<hr>
|
||
|
||
<p>Here's another interesting message:<br>
|
||
|
||
<blockquote>
|
||
<p>From: oliver@fritz.co.traverse.com (Christopher Oliver)<br>
|
||
Subject: TeX/GROFF<br>
|
||
To: layers@marktwain.net<br>
|
||
|
||
<p>I noticed in your defense of mark-up systems, you didn't touch on
|
||
issues regarding quality of output. If you write on this in the
|
||
future, you might find <b>What has WYSIWYG done to us?</b> by
|
||
typographer Conrad Taylor quite interesting. I think he makes
|
||
quite a case that the word processors aren't suitable if the user
|
||
cares about the quality of the typesetting. I think there is a
|
||
lot of good thinking there for folk involved with document
|
||
production at any level.
|
||
This <a href="http://www.ideography.co.uk/library/seybold/WYS-ante.html">link</a> will take you to the article.
|
||
|
||
<p>Regards,<br>
|
||
|
||
<p>Christopher Oliver Traverse Communications<br>
|
||
Systems Coordinator 223 Grandview Pkwy, Suite 108<br>
|
||
oliver@traverse.com Traverse City, Michigan, 49684
|
||
</blockquote>
|
||
<hr>
|
||
|
||
<p>Another message concerning Emacs and LaTeX:<br>
|
||
|
||
<blockquote><p>To: layers@marktwain.net<br>
|
||
Subject: Word Processing and Text Processing<br>
|
||
From: Peter S Galbraith <galbraith@mixing.qc.dfo.ca><br>
|
||
|
||
<p>Nice summary!<br>
|
||
|
||
> Emacs provides excellent syntax highlighting for LaTeX files,<br>
|
||
> which greatly improves their readability.<br>
|
||
|
||
<p>I also wrote a better syntax highlighting Emacs package for LaTeX
|
||
files, called font-latex.el. I think I should make it part of
|
||
Emacs. I doubt you knew about it even though it's distributed as
|
||
a contributed package with AUC-TeX.<br>
|
||
|
||
> Xtem has one feature which is useful for LaTeX beginners:<br>
|
||
> on-line syntax help-files for the various LaTeX commands.<br>
|
||
|
||
<p>There are a few add-on packages to AUC-TeX that do this by
|
||
interfacing with latex info files:<br>
|
||
<ul>
|
||
<li>http://www.ifi.uio.no/~jensthi/word-help.el
|
||
<li>ftp://ftp.phys.ocean.dal.ca/users/rhogee/elisp/func-doc.el
|
||
</ul>
|
||
|
||
<p>Peter Galbraith, research scientist<br>
|
||
Maurice-Lamontagne Institute,<br>
|
||
Department of Fisheries and Oceans Canada<br>
|
||
</blockquote>
|
||
|
||
<p>I confess I'd seen Mr. Galbraith's <b>font-latex.el</b> in the
|
||
AucTeX distribution files, but didn't realize that it is an
|
||
extra package which must be explicitly loaded. The version
|
||
included with AucTeX is an older one; I recommend downloading the
|
||
latest revision from this FTP
|
||
<a href="ftp://ftp.phys.ocean.dal.ca/users/rhogee/elisp/">site</a>.
|
||
Along with <b>font-latex.el</b>, a file called
|
||
<b>font-latex.tex</b> is available at the site. This file is a
|
||
sort of demo for <b>font-latex.el</b>, illustrating its
|
||
capabilities. Some people won't like the very colorful approach
|
||
to highlighting this LISP file provides, but with judicious
|
||
selection of colors (now so much easier using the Customize
|
||
facility!) the readability of <b>TeX</b> files is much enhanced.
|
||
<hr>
|
||
|
||
<p>I recently happened across a message posted to the
|
||
<em>comp.editors</em> newsgroup which eloquently expresses a plea
|
||
which I'm sure will resonate with many Linux users:<br>
|
||
|
||
<blockquote>
|
||
<p>From: Des Small <dms@nutri-matic.mechanoid.soton.ac.uk>
|
||
Newsgroups: comp.editors<br>
|
||
Subject: Re: writing an editor<br>
|
||
Date: 17 Dec 1997 22:09:22 +0000<br>
|
||
Organization: Southampton University<br>
|
||
X-Newsreader: Gnus v5.5/Emacs 20.2<br>
|
||
|
||
<p>(discussion of editor internals snipped)
|
||
|
||
<p>Given that the Unix world has already more editors than could possibly
|
||
be required, and a dearth of even modest word-processing type apps, I
|
||
would urge you at least to consider allowing multiple fonts in one
|
||
document. You don't have to rewrite Word; we don't even have a
|
||
competitor for Notepad (simple wysiwyg-ish thing with RTF output).
|
||
And no, XEmacs does <em>not</em> count.
|
||
|
||
<p>(more discussion snipped)
|
||
|
||
<p><rant><br> But I really, really think that this
|
||
particular wheel has been reinvented often enough. What
|
||
<em>I</em> want is a toy word processor/editor, like wordpad on
|
||
steroids, say, which could be used for writing simple letters to
|
||
Auntie (for the Windoze crowd), and to make programming more
|
||
pleasant (different faces for different bits of syntax), and a
|
||
nice HTML mode. XML (a sort of SGML-lite) is coming, and its
|
||
facilities for structured documents could make it a snap to
|
||
develop literate programming envronments, without locking you in
|
||
to one set of tools, or using (eek!) embedded TeX. You could
|
||
have DTD's for almost every application, and finally supercede
|
||
the (admittedly powerful) Unix "everything is a stream of bytes"
|
||
philosophy with a universally understood set of conventions for
|
||
<em>structured</em> documents. Word processors could use XML for
|
||
storage! You could share files across platforms! You could even
|
||
still use Emacs or vi or joe, if you wanted to!
|
||
|
||
<p>I know XEmacs can (probably) do all this, but I want a small,
|
||
fast, cute version, that doesn't eat all my RAM. I want to use
|
||
proportional fonts to edit text (which Sam and Wily allow)
|
||
without changing my entire world-view (which they tend to insist
|
||
on), and I don't care if it won't run on a vt100. It's
|
||
<em>1997</em> for heaven's sake! I have a windowing system!
|
||
(Admittedly, it's only X, but it's still a window system!) At
|
||
the moment, my desktop has a bunch of terminal emulators, and a
|
||
couple of GNU emacs frames open. These are powerful tools, but
|
||
they hardly constitute a rich GUI environment that would make me
|
||
the envy of all my friends (they lust after the stability of my
|
||
system, but they run away screaming when confronted with the
|
||
tools. And they are neither stupid nor technophobic).
|
||
|
||
<p>I don't want a ultra-heavy power tool, and I don't care about
|
||
slow serial lines: I already have tools for those jobs. I just
|
||
want a sprinkling of nice fonts, and an interface which doesn't
|
||
scare off Windows or Mac users. Context sensitive pop-up menus
|
||
might be nice, and a reasonable (in terms of looks and
|
||
functionality) menu bar, too. Real-time spell-checking along the
|
||
lines of Word is quite a nice idea, too -- spellchecking email
|
||
and Usenet posts is overkill if it takes any effort at all. (Even
|
||
M-x ispell-buffer is effort: I have to remember to bother.)
|
||
Notepad on steroids, is all I want, really. And it has to be
|
||
free (as in freedom-not-price, that is).
|
||
|
||
<p>Does anyone have one, or do I really have to roll my own? And
|
||
does anyone have any info on (or pointers to) suitable data
|
||
structures for such a thing?
|
||
|
||
<p>Standard Unix tools are very powerful, and for some things I
|
||
find them indispensible. But, for me at least, vt100
|
||
compatibility is a legacy issue. Sometimes I use remote systems,
|
||
and then I telnet in and use vi, and I'm happy to do so. But
|
||
most of the time I'm on my own Linux box, with 16Mb and clock
|
||
cycles to burn. I can afford some luxuries, but I don't want a
|
||
whole XEmacs. Is this really so weird, this late in computing
|
||
history? Or did I swear a vow of allegience to xterms and
|
||
non-proportional fonts when I signed on as a Unix user? Am I the
|
||
only person who finds the current situation imperfect? Do I have
|
||
to wait for GnuStep to combine the robustness and programmability
|
||
of Unix (which I love) with a halfway-sane GUI-fied environment
|
||
for those "I want to use a tool but I haven't got a month spare
|
||
to master the interface" moments?<br> </rant>
|
||
|
||
<p>Sorry to rant on like that, but I feel strongly that the many things
|
||
Unix does well should not (and in the eyes of the Heathen do not)
|
||
excuse its barely-half-hearted embracing of the possibilities of the
|
||
new-fangled (ahem...) bit-mapped screen.
|
||
|
||
<p>Des,<br>
|
||
who sometimes feels trapped in a 1980's timewarp.
|
||
</blockquote>
|
||
|
||
<p>After reading the above posting, I began to think about
|
||
editors which <em>can</em> display proportional fonts. Off-hand
|
||
I can think of three which offer this option: XEmacs, the
|
||
semi-commercial Edith editor, and NEdit. All three display
|
||
Postscript fonts well <em>only</em> if bitmapped versions are
|
||
available, which limits you to the fonts (such as Times Roman and
|
||
New Century Schoolbook) supplied with X. XEmacs will attempt to
|
||
scale other Type 1 fonts but they are unaliased and unsightly.
|
||
Edith and NEdit don't even try to scale the fonts, and only the
|
||
12 point size is offered in the font dialogs. This isn't the
|
||
fault of the editors I've mentioned; they just do what X will
|
||
allow them to do. There are several Type 1 font rasterizers under
|
||
development for Linux, and perhaps this deficiency in the X
|
||
environment will eventually be addressed. This could be helpful
|
||
in attracting Windows users to Linux, as Win95 and NT, for all
|
||
their faults and annoyances, <em>do</em> display scalable fonts
|
||
well.
|
||
|
||
<p>If anyone knows of a technique for generating bitmapped fonts
|
||
in various sizes from standard type-1 Postscript fonts, I'd love
|
||
to hear about it!
|
||
|
||
<p>Both the Gimp and SDCorp's WordPerfect 7 port will scale
|
||
Postscript fonts flawlessly; I assume they have their own
|
||
internal font-display engines. I imagine that StarOffice and
|
||
Applix can do the same.
|
||
<hr>
|
||
|
||
<p>A floridly-worded letter from Harry Baecker was printed in
|
||
issue 23 of LG, to which I felt compelled to respond: he seems
|
||
to think my opinions on text-processing are "a ritual obeisance
|
||
to received wisdom" and a "requisite Unixworld denigration of
|
||
word-processors and their users". On the contrary, I have little
|
||
interaction with Unix users and my expressed opinions are a
|
||
direct result of my experiences using both word-processors and
|
||
text-formatting systems. So there!
|
||
|
||
<p>The folks at SDCorp in Utah have made a welcome change to the
|
||
licensing scheme used in their Linux port of WordPerfect 7. When
|
||
the port was first released a licensing daemon had to be running
|
||
in order to run the word-processor, which would only work on the
|
||
original machine on which WP was installed. Now the daemon isn't
|
||
necessary, and the application isn't limited to one machine.
|
||
Rumor has it that WordPerfect 8 will be ported to Linux sometime
|
||
next year if sufficient interest is shown in the Linux community.
|
||
<hr>
|
||
|
||
<center><h3>New Editor Versions</h3></center>
|
||
|
||
<p>There have been new releases of several editors lately. Those
|
||
of you who are of the VI persuasion will be glad to hear of new
|
||
versions of all three of the actively-maintained VI-clones.
|
||
|
||
<p>Vim is probably the most featureful of the VI-style editors.
|
||
Judging by newsgroup postings, it may be the most popular as
|
||
well. With the release of vim-5.0s, vim 5 has finally reached a
|
||
beta rather than alpha state. This revision has a really
|
||
well-implemented syntax-highlighting system for many programming
|
||
and shell-script languages, and it's not too difficult to adapt
|
||
to new file-types and languages. The down-side is that vim is
|
||
growing larger, and is beginning to lose the quickness and low
|
||
memory-usage that has been a hallmark of VI-style editors. Of
|
||
course, memory is cheap and machines are more powerful these
|
||
days, so this isn't as much of a factor as it used to be.
|
||
|
||
<p>I tend to use XEmacs as my primary editor, due to its
|
||
excellent programming modes, with vile/xvile as an adjunct for
|
||
quick editing tasks, such as config files and e-mail messages.
|
||
Vile 7.3 was released recently, and it is in my opinion the ideal
|
||
vi-style editor for an Emacs user. It incorporates several of
|
||
the most common Emacs keystrokes, such as control-x-1 and
|
||
control-x-0, which softens the transition between the two.
|
||
|
||
<p>Recently Paul Fox, who several years ago modified the
|
||
Microemacs code until it became the first version of the vile
|
||
vi-like editor (sounds improbable, but it's true!), posted an
|
||
interesting response in the <i>comp.editors</i> newsgroup. He
|
||
was responding to a query concerning the differences between vile
|
||
and vim:<br>
|
||
|
||
<blockquote>
|
||
From: pgf@foxharp.boston.ma.us (Paul G. Fox)<br>
|
||
Newsgroups: comp.editors<br>
|
||
Subject: Re: Vile 7.3 Announcement<br>
|
||
Date: 29 Dec 1997 00:21:07 GMT<br>
|
||
|
||
brian moore (bem@news.cmc.net) wrote:<br>
|
||
: > How about portability? I use Vim under NT at work, Linux at home.<br>
|
||
:
|
||
: vile runs on both, and OS/2 and a bunch of other stuff. Hell, it even<br>
|
||
: works on Solaris! :)<br>
|
||
:
|
||
|
||
<p>and VMS and Win95. i'm not sure which i've used less. :-)
|
||
|
||
<p>as the original vile author, i'll chime in here, but a) i'm
|
||
biased :-), and b) i've never used vim much, except when looking
|
||
at a specific feature implementation.
|
||
|
||
<p>vile's design goal has always been a little different than that
|
||
of the other clones (and i mean elvis, vim, and nvi here -- i
|
||
don't know enough about any of the others). vile has never
|
||
really attempted to be a "clone" at all, though most people find
|
||
it close enough. i started it because in 1990 i wanted to to be
|
||
able to edit multiple files in multiple windows, i had been using
|
||
vi for 10 years already, and the sources to Micro-EMACS came
|
||
floating past my newsreader at a job where i had too much time on
|
||
my hands.
|
||
|
||
<p>i started by changing the uemacs keymaps in the obvious way, and
|
||
ran full-tilt into the "hey! where's 'insert' mode gonna come
|
||
from?!" problem. so i hacked a little more, and hacked a little
|
||
more, and eventually released in '91 or '92. (starting soon
|
||
thereafter, major version numbers tracked the year of release:
|
||
7.3 was the third release in '97. i don't know what tom is going
|
||
to do about the Y2K problem. ;-)
|
||
|
||
<p>but my goal has always been to preserve finger-feel, as opposed
|
||
to display visuals , and, selfishly, to preserve finger-feel most
|
||
for the commands i use. :-) i've never used ex mode much, so
|
||
vile doesn't have much of an ex mode. actually, it has quite an
|
||
amazing ex mode, that works very well -- it just <em>looks</em>
|
||
really odd, and a couple of commands ("t", and "m", which are
|
||
beyond the scope of the current parser) are missing. for the
|
||
same reasons, it also won't fully parse existing .exrc files,
|
||
since i don't really think that's very important -- it does
|
||
simple ones, but more sophisticated one's need some tweaking.
|
||
when you toss vile's built-in command/macro language, you quickly
|
||
forget you ever cared about .exrc.
|
||
|
||
<p>just for bragging rights, i think vile had X11 support earlier
|
||
than the others, thanks to work by Dave Lemke from NCD, and
|
||
Keving Buettner who made it <em>really</em> functional. i take
|
||
no credit -- i never use xvile. on the other hand, vile wasn't
|
||
real useful under DOS, since it doesn't use a swap file, and the
|
||
memory limits got in the way pretty quickly. (of course, this
|
||
isn't a practical problem under real OSes.)
|
||
|
||
<p>unfortunately, since none of the "vi rewrite" authors were
|
||
collaborating much in the early years (if we knew about one
|
||
another at all :-), i think we all made different choices for the
|
||
extension commands. vile tends to follow an emacs-like model,
|
||
and uses ^X and ^A as built-in (but rebindable, of course)
|
||
command prefixes, and indeed uses emacs bindings directly for
|
||
some commands: like ^X-2 to split a window in half.
|
||
|
||
<p>another typical difference: i insist that ":q" should quit the
|
||
editor, and not just close the current window. both nvi and vim
|
||
got this wrong, imho.
|
||
|
||
<p>another one: vile does infinite undo the way nvi does, and not
|
||
the way vim does. small differences, but ones that can make a
|
||
user prefer one over another.
|
||
|
||
<p>as someone else said in this thread -- if you're choosing a new
|
||
version of vi, you owe it to yourself to try them all, for half
|
||
an hour of real work with each, and make your choice based on
|
||
that. vim has lots and lots of support, and having this nice
|
||
"comp.editors.vim" newsgroup helps :-), but the others have
|
||
things to offer too, and you might like one of the others better.
|
||
i do. ;-)
|
||
|
||
<p>btw, i'm only peripherally involved in vile maintenance anymore
|
||
-- Tom Dickey does most of it (thanks tom) these days -- i just
|
||
run the mailing lists.
|
||
|
||
<p>current versions can be had from: ftp://ftp.clark.net/pub/dickey/vile
|
||
|
||
<p>paul
|
||
|
||
<p>paul fox, pgf@foxharp.boston.ma.us<br>
|
||
(arlington, ma, where it's 23.5 degrees)
|
||
</blockquote>
|
||
|
||
<p>Steve Kirkendall's Elvis editor has also been updated
|
||
recently. The X version, like vim's, has good syntax-highlighting
|
||
support, and also like vim, the windows (95/nt) version is
|
||
well-supported, for those users who need to work in that
|
||
environment. I confess I haven't spent as much time with elvis
|
||
as I have with vile and vim; perhaps another user might care to
|
||
contribute?
|
||
|
||
<p>XEmacs development continues apace. Versions 19.16 and 20.3
|
||
are available (from <a href="ftp://ftp.xemacs.org">the home
|
||
site</a> and its mirrors) but one of the most interesting
|
||
developments is taking place in the 20.5 series of betas.
|
||
|
||
<p>A common complaint about XEmacs is its bulk and lengthy
|
||
loading time. A full distribution is huge, with many bundled
|
||
packages for which most users have little use. Trying out a new
|
||
version was not to be undertaken lightly, as the download time
|
||
was long and a large block of disk space needed to be available
|
||
for compilation. The XEmacs team is in the process of unbundling
|
||
packages, which are now available individually. The base source
|
||
archive is now around eight megabytes, while the compiled LISP
|
||
(*.elc) archive is only one and one-third megabytes. The
|
||
packages are independent, and when this beta of XEmacs is
|
||
compiled it finds whichever packages you have installed and loads
|
||
their documentation, menu-items, and keybindings. The package
|
||
subdirectory is independent of the version-specific binary and
|
||
LISP directories, so unchanged package files need not be
|
||
downloaded when upgrading to a new XEmacs version. The easiest
|
||
way to try this out is to compile the base source archive without
|
||
any packages installed and see what doesn't work. Then packages
|
||
can be incrementally installed until the desired functions are
|
||
once again available. After a new package has been unpacked, the
|
||
/lib-src/DOC file should be deleted. Run <b>make</b> again and
|
||
the new package should be found and incorporated into the editor.
|
||
In other words, it's a good idea to keep the built source-tree on
|
||
your disk until you've generated an XEmacs which meets your
|
||
particular needs. Of the subset of the available packages which
|
||
I installed, only the Ediff package initially failed to work, but
|
||
after some experimentation I found that the line <br>
|
||
<kbd>(require 'ediff-hook)</kbd><br>
|
||
in the XEmacs init file caused it to be loaded.
|
||
|
||
<p>The release version of 20.5 should be available in the late
|
||
spring of 1998.
|
||
|
||
<p>A new version of NEdit has been released recently. NEdit has
|
||
become popular with programmers and general users due to its
|
||
nicely-designed interface, equally-useful mouse and keyboard
|
||
control, and relatively small size. Version 5.0 adds very
|
||
configurable (via dialog-boxes) syntax-highlighting and a new
|
||
macro language. It's one of the easiest editors to learn, and
|
||
it's nearly as powerful as Emacs without being as large and
|
||
memory-hungry. If you like mouse-based editing, the ability to
|
||
highlight a selection and drag it to another location in the file
|
||
will be appealing. This function isn't found, as far as I know,
|
||
in any other editor available for Linux.
|
||
|
||
<p>NEdit is strictly X-based; if you like to edit in a console
|
||
session (admittedly a minority view these days) this editor may
|
||
not be to your taste.
|
||
|
||
<p>There are now two versions available: the main
|
||
version is maintained by Mark Edel at Fermi National
|
||
Laboratories, and both source and binaries are available from
|
||
<a href="ftp://ftp.fnal.gov/KITS/pub/nedit/v5_0">ftp.fnal.gov</a>,
|
||
the home site. Max Vohlken has made a number of patches to NEdit
|
||
5 which for various reasons haven't been accepted into the main
|
||
distribution. He has been packaging his patched version into an
|
||
alternate release, and it can be also obtained from the above
|
||
site, in the <b>/KITS/pub/nedit/v5_0/contrib/max/5.0</b>
|
||
directory. Both versions have adherents, it seems.
|
||
<hr>
|
||
|
||
<center><h3>File-Managers</h3></center>
|
||
|
||
<p>Christian Bolik recently released the first new version of the
|
||
desktop- and file-manager TkDesk in nearly a year. Version 1.0b5
|
||
has some nice new features (check out the Be-style icon-bar!),
|
||
and is well worth looking into. This beta is supposed to be the
|
||
last; as soon as [incr tcl] (an object-oriented extension of Tcl) is
|
||
updated to work with Tcl8.0, TkDesk will also be able to make use
|
||
of the latest Tcl/Tk releases. The TkDesk web-page has recently
|
||
become inaccessible, but the new version is still in Sunsite's
|
||
/pub/Linux/Incoming directory.
|
||
|
||
<p>Henrik Harmsen's FileRunner is now (with version 2.4.1) a GNU
|
||
General Public License application, which means that it will be
|
||
more easily included in distributions such as RedHat and Debian.
|
||
FileRunner is small, quick, and efficient, and if you have
|
||
installed Tcl/Tk 8.0 you should give it a try. It can be
|
||
obtained from
|
||
<a href="http://www.cd.chalmers.se/~hch/filerunner.html">this site.</a>
|
||
|
||
<p>The Midnight Commander, the versatile text-mode
|
||
file-and-archive-manager, is still under continual development.
|
||
Beta 4.1.19 is the latest beta, and although none of the
|
||
X-windows versions are yet ready for prime-time, these recent
|
||
betas are well worth installing, as useful new features are
|
||
continually added. Source (which generally will compile without
|
||
a hitch) is available from
|
||
<a href="ftp://ftp.nuclecu.unam.mx/pub/Midnight/devel">this site.</a>
|
||
|
||
<p>I must confess that the numerous icon-based file-managers,
|
||
many of which have been released or updated lately, don't really
|
||
suit my needs. Several are based on the venerable xfm manager,
|
||
or its (apparently abandoned) successor moxfm. Surely one of you
|
||
readers out there prefers this type of file-manager? Why not
|
||
write an article or review for the Gazette? There's room here
|
||
for all sorts of views, after all!
|
||
|
||
<center><h3>Xlock and XScreensaver</h3></center>
|
||
|
||
<p>Jamie Zawinski is a programmer and hacker currently working
|
||
for Netscape. He has written several useful free software
|
||
programs, including xkeycaps and several of the screensaver modes
|
||
included with both Xlockmore and XScreensaver. He also was
|
||
involved in the early development of Lucid Emacs (an ancestor of
|
||
XEmacs), and has contributed to the development of many Emacs
|
||
packages including the Fontlock highlighting mode. I recently
|
||
received this message from him:<br>
|
||
|
||
<p>Date: Sat, 29 Nov 1997 20:20:12 -0800<br>
|
||
From: Jamie Zawinski <jwz@netscape.com><br>
|
||
Organization: Netscape Communications Corporation, Mozilla Division<br>
|
||
X-Mailer: Mozilla 3.02 (X11; U; IRIX 6.2 IP22)<br>
|
||
To: gazette@ssc.com<br>
|
||
CC: layers@marktwain.net<br>
|
||
Subject: xlockmore and xscreensaver<br>
|
||
|
||
<p>Dear Linux Gazette folks,
|
||
|
||
<p>I saw the article on Xlockmore by Larry Ayers in issue 18 of
|
||
the Linux Gazette, and I was surprised that it didn't mention,
|
||
even in passing, my XScreenSaver program!
|
||
|
||
<p>Allow me to engage in a bit of advocacy.
|
||
|
||
<p>Back in 1991, before Xlockmore existed, there was only Xlock.
|
||
Xlock was not a screensaver: it was only a locker. There was no
|
||
way to make it activate itself automatically when the console
|
||
became idle, nor was there any way to avoid having it lock the
|
||
screen: that is, there was no way to have it turn off when the
|
||
mouse moved.
|
||
|
||
<p>So, I wrote XScreenSaver.
|
||
|
||
<p>XScreenSaver is superior to Xlockmore in a number of ways.
|
||
The most important way, of course, is that it is actually a
|
||
*screen saver*. Although Xlockmore can be configured to not
|
||
require a password, it still doesn't have the ability to turn on
|
||
when the machine is idle; for that you have to use an external
|
||
program that launches and kills it.
|
||
|
||
<p>The second way in which XScreenSaver is better is that it
|
||
takes a server/client approach: the "xscreensaver" program itself
|
||
knows how to detect idleness, and to lock the screen. The
|
||
graphics hacks are not built in: the beauty of XScreenSaver is
|
||
that any program which can draw on the root window can be
|
||
launched by XScreenSaver for use as a graphics hack! This has
|
||
several benefits:
|
||
|
||
<ul>
|
||
<li>You don't have to recompile and reinstall xscreensaver to
|
||
install a new graphics hack: all you have to do is change your
|
||
X resources, and issue one command.
|
||
|
||
<li>Since programs don't have to be written *specifically* to run
|
||
inside the xscreensaver framework, there are many more potential
|
||
graphics hacks available. They don't even need to be written in
|
||
the same language: they just have to draw on the root. Thus,
|
||
it's easier to write programs to work with XScreenSaver than with
|
||
Xlock or Xlockmore, because they don't have to follow a complex
|
||
set of idiosynchratic rules on how to structure the code: the
|
||
only rule is, "draw on the root."
|
||
|
||
<li>By separating the task out into two processes, the whole
|
||
system becomes more robust: the memory protection provided
|
||
by the OS serves us well, in that, if one particular
|
||
graphics hack has a bug (leaks memory, corrupts memory, gets
|
||
a floating-point exception, etc) the integrity of the screen
|
||
saver itself is not compromised. The offending hack may
|
||
exit, but the screen saver itself is still running, and the
|
||
screen is still blackened (or locked.) Also, since a screen
|
||
saver is, by its nature, a very- long-running background
|
||
task, even a small leak would build up over time. By
|
||
arranging for the graphics hacks themselves to be relatively
|
||
short-running tasks, this problem goes away.
|
||
|
||
<li>On some systems, only programs which are running as root can
|
||
check passwords. Therefore, on such systems, a screen
|
||
locker would need to be a setuid-root program. Obviously
|
||
one needs to be very careful about what programs one allows
|
||
out of the security sandbox; a conscientious sysadmin would
|
||
want to examine such a program very carefully before
|
||
installing it. The XScreenSaver model allows this, by
|
||
having the priveleged part of the program (the saver itself)
|
||
be small, while letting the larger part (the graphics hacks)
|
||
remain unpriveleged.
|
||
</ul>
|
||
|
||
<p>XScreenSaver also includes a nice Demo Mode that lets the user
|
||
interactively experiment with the currently-configured graphics
|
||
hacks. (Until recently, most Linux users wouldn't have been able
|
||
to take advantage of this, since the code had required Motif; but
|
||
that is now configurable, and demo mode works with Athena widgets
|
||
too -- since release 1.27 back in January 1997.)
|
||
|
||
<p>If you have a system with more than one monitor, XScreenSaver
|
||
can save them both at once: a different graphics hack will run on
|
||
each, and if the two monitors have different depths (for example,
|
||
if one is monochrome and the other color) they can be configured
|
||
to choose their screenhacks from different lists, so that each
|
||
monitor is running the hacks that look best on it.
|
||
|
||
<p>Most of the xlockmore hacks (the ones that I liked, anyway,
|
||
including the GL modes) are included with the XScreenSaver
|
||
distribution; the only change made being to extract the various
|
||
display modes from the monolithic XLock executable, and turn them
|
||
into standalone root-window-oriented programs.
|
||
|
||
<p>However, it's possible to have XScreenSaver run xlock itself, as just
|
||
another one of its many modes -- the best of both worlds!
|
||
|
||
<p>Do check it out: the canonical web page is
|
||
<http://people.netscape.com/jwz/xscreensaver/>, which
|
||
includes screen shots and descriptions of most of the included
|
||
graphics hacks.
|
||
|
||
<p>The latest version, as of this writing, is 2.12. At last
|
||
count, it came with 64 different graphics hacks. Roughly a third
|
||
of these were written by me; the others were graciously
|
||
contributed by others.
|
||
|
||
<p>And, of course, it's all free, under the usual
|
||
X-Consortium-style copyright.
|
||
|
||
<p>You also might enjoy my philosophical rambli ngs on the nature
|
||
of screensavers, at
|
||
<http://people.netscape.com/jwz/gruntle/savers.html>.
|
||
|
||
|
||
<p>Jamie Zawinski http://people.netscape.com/jwz/
|
||
about:jwz
|
||
<hr>
|
||
|
||
<center><h3>The Gimp</h3></center>
|
||
|
||
<p>Since I last wrote about the <b>G</b>nu <b>I</b>mage
|
||
<b>M</b>anipulation <b>P</b>rogram (in LG #18) both the GTK
|
||
toolkit (the underlying programming framework of the Gimp) and
|
||
the Gimp itself have undergone several revisions. The
|
||
long-awaited version 1.0 still hasn't been released, but may have
|
||
been by the time you read this. There has been talk of a release
|
||
by Christmas.
|
||
|
||
<p>There's really no reason to wait for a non-beta release,
|
||
though, as the version available as of mid-December is very
|
||
useful and impressive. Some incredible new plug-ins are bundled
|
||
with version 19.16, and general stability has been much
|
||
improved. A useful feature for new users has been added: at
|
||
start-up a small window appears which contains a different usage
|
||
tip at each invocation. This can be disabled at any time. One
|
||
caveat: be sure to obtain the corresponding version of GTK (in
|
||
this case gtk+-0.99.0), as unlike some earlier versions it is no
|
||
longer bundled with the Gimp.
|
||
|
||
<p>Here are brief descriptions of some of the new plug-ins:<br>
|
||
|
||
<center><h4>Iwarp</h4></center>
|
||
|
||
Some plug-ins are very useful, but tend to be taken for granted,
|
||
such as the various blurring or image-format modules. Then there
|
||
are plug-ins which, though not immediately useful, are
|
||
fascinating due to the unexpected and interesting changes they
|
||
can wreak upon an unsuspecting image. The Iwarp plug-in,
|
||
as an example.
|
||
|
||
<p>I admit I've never used Adobe's Photoshop and the many commercial
|
||
plug-ins available for it. Therefore my initial reaction
|
||
(composed of equal parts of awe and wonder) to this plug-in may
|
||
seem a bit naive, as there are several commercial extenders for
|
||
Photoshop with similar capabilities. Be that as it may, clicking
|
||
the mouse pointer on an image thumbnail and actually stirring and
|
||
shifting pixels interactively is quite amazing.
|
||
|
||
<p>A screenshot will give you an idea of the nature of the
|
||
interface and the options available:<br>
|
||
|
||
<p>
|
||
<center><img alt="the Iwarp plug-in" src="./gx/ayers/iwarp.gif"></center>
|
||
|
||
<p>The plug-in offers a choice of six different methods of
|
||
changing an area of pixels in an image: clock-wise rotation,
|
||
counter-clockwise rotation, growing, moving, shrinking, or
|
||
removing. Playing around with this plug-in will give you a good
|
||
idea of its capabilities. Try setting it to one of the rotation
|
||
options, then hold the first mouse button down as you slowly move
|
||
it across an image. It's as if a miniature hurricane is
|
||
travelling across the image, leaving spirals of distortion in its
|
||
wake. I imagine that a drawing tablet would be handy to
|
||
use with this plug-in, allowing more precise control than that
|
||
provided by a mouse.
|
||
|
||
<p>Like icing on a cake, Iwarp has animation capabilities
|
||
built-in. Once you have warped an image to your satisfaction,
|
||
select the animation tab in the plug-in's window; this lets you
|
||
choose how many frames to create, and whether to make them cycle
|
||
repeatedly (the ping-pong effect) or just play from start to
|
||
finish. Each frame is saved in a separate layer, and there is a
|
||
convenient plug-in called Animation Playback which will let you
|
||
view it.
|
||
|
||
<p>So what's the use of this? You can use it to create animated
|
||
GIF files for web-pages, or perhaps tweak a small area of an
|
||
image, but mostly it is just a lot of fun!
|
||
|
||
<center><h4>Flame and Fuse</h4></center>
|
||
|
||
<p>Gimp 0.99.16 must be something of a milestone for Scott
|
||
Draves, creator of the Flame and Fuse plug-ins (as well as the
|
||
Bomb interactive screen hack). Though successive versions of the
|
||
Flame plug-in have been available for some months now, the
|
||
maintainers of the Gimp have been reluctant to include it in the
|
||
Gimp distribution due to certain licensing restrictions which
|
||
Scott had placed on the program and its output. Recently Scott
|
||
relaxed those restrictions and Flame is now a part of the Gimp.
|
||
|
||
<p>Flame is similar in some ways to the IFS-Explorer plug-in, in
|
||
that is based on Iterated Function Systems fractal algorithms,
|
||
but the approach and interface are different. Rather than
|
||
manipulating three triangles, which is the traditional IFS
|
||
interface used by IFS Explorer, Flame does much of its work
|
||
"behind the scenes", though there are still several options
|
||
available to the user. One nice feature is the built-in support
|
||
for the Gimp's color gradients. Several of Scott Draves' own
|
||
gradients are included in the plug-in, but any others can be
|
||
entered into an entry-field in the plug-in window. Here's a
|
||
screenshot of a typical window:<br>
|
||
|
||
<p><img alt="Flame Window" src="./gx/ayers/flame.gif">
|
||
|
||
<p>Flame can generate some really intriguing images; some of
|
||
Scott Draves' examples can be seen on
|
||
<a href="http://www.cs.cmu.edu/~spot/flame.html">this web
|
||
page</a>. If you are using an earlier Gimp version, a binary of
|
||
the plug-in has been thoughtfully included in the Flame archive
|
||
file available from the page. Just drop the binary into your
|
||
Gimp plug-in directory; the next time you start the Gimp Flame
|
||
should be accessible from the "Render" sub-menu.
|
||
|
||
<p>It's interesting to compare the results obtainable from Flame
|
||
and the IFS-Explorer plug-ins, as they both are based on the same
|
||
mathematical principles but have such different methods of
|
||
implementing them.
|
||
|
||
<p>Another plug-in from Scott Draves is called Fuse. This one is
|
||
used to disassemble a pair of images and merge them into one,
|
||
using what seems to be some sort of AI trial-and-error process.
|
||
A preview window shows the various attempts in real-time, which
|
||
can be interesting to watch. The process is time-consuming, as
|
||
the plug-in seems to be repeatedly dissatisfied with its results,
|
||
and will back up to a previous branch in the process and start
|
||
anew. Scott Draves has achieved some interesting results with
|
||
Fuse, which can be viewed on this
|
||
<a href="http://www.cs.cmu.edu/~spot/fuse/index.html">web-page</a>.
|
||
It would take some practice to gain proficiency with this plug-in;
|
||
this is one of those applications which may require reading the
|
||
source code to get a feel for just what is going on behind the
|
||
scenes. In other words, no on-line help!
|
||
|
||
<center><h3>Illusion</h3></center>
|
||
|
||
<p>The Illusion plug-in is another interesting one to experiment
|
||
with. It was written by Hirotsuna Mizuno, a Japanese
|
||
programmer. What this one does is difficult to describe; it
|
||
seems to duplicate an image and tile a new one with "faded-out"
|
||
copies of the original. This results in a surrealistic sort of
|
||
pattern, and could be useful in creating watermark-like
|
||
backgrounds. A before-and-after pair of screenshots should
|
||
convey an idea of its capabilities:<br>
|
||
|
||
<p><center><img alt="Illusion #1"
|
||
src="./gx/ayers/illusion.gif"></center>
|
||
|
||
<p><center><img alt="Illusion #2"
|
||
src="./gx/ayers/illusion2.gif">
|
||
</center>
|
||
<hr>
|
||
|
||
<center><h3>Map-Object</h3></center>
|
||
|
||
<p>The Map-Object plug-in, though included with 19.15,
|
||
unfortunately wasn't supplied with the 0.99.16 release. It is
|
||
being developed by Tom Bech, of the University of Bergen in
|
||
Norway. This plug-in will map or project an image onto the
|
||
surface of either a sphere or a skewed plane, with full control
|
||
of many parameters such as the light source's orientation and
|
||
color. The background can easily be set to be transparent, which
|
||
makes the output useful in HTML files. If you are still using
|
||
version 19.15 of the Gimp the current version is functional.
|
||
Perhaps by the time Gimp 1.0 is released Mr. Bech will find time
|
||
to adapt this ingenious plug-in to the rapidly-changing Gimp/GTK
|
||
environment.
|
||
|
||
<p>Just as I was finishing this article Gimp 0.99.17 was
|
||
released, and Map-Object has been reinstated into the
|
||
distribution. A new version of GTK was released concurrently;
|
||
visit <b>ftp.gimp.org</b> if you'd like to obtain the
|
||
source. Debian and Redhat packages of these releases are also
|
||
available there.
|
||
|
||
<p>This is just a sampling of the more than sixty plug-ins
|
||
bundled with the 19.16 release; more are appearing regularly, and
|
||
when the 1.0 release is completed (and development of the Gimp
|
||
moves on to a new beta version) the resulting "fixed target"
|
||
should make developing new plug-ins easier for programmers.
|
||
|
||
|
||
<!-- hhmts start -->
|
||
Last modified: Sun 4 Jan 1998
|
||
<!-- hhmts end -->
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, Larry Ayers <BR>
|
||
Published in Issue 24 of <i>Linux Gazette</i>, January 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="./ayers.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./moore.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>
|
||
<!--===================================================================-->
|
||
<P><I>[A reader requested this article by Gary Moore from the <A HREF="http://www.ssc.com/lj/issue36/index.html">April
|
||
'97</A> issue of <A HREF="http://www.ssc.com/lj/index.html">Linux
|
||
Journal</A>. --Editor]</I>
|
||
<P> <HR> <P>
|
||
<center>
|
||
<H1>Product Review: Applixware</H1>
|
||
<H4>by Gary Moore</H4>
|
||
</center>
|
||
|
||
<P> <HR> <P>
|
||
<ul>
|
||
<li>Product: Applixware 4.2 For Linux
|
||
<li>Publisher: Red Hat Software, Inc.
|
||
<li>Phone: 800 454-5502
|
||
<li>Fax: 203 454-2582
|
||
<li>WWW: http://www.redhat.com/
|
||
<li>Price: USD $495, student price USD $79.95
|
||
</ul>
|
||
|
||
<P> <HR> <P>
|
||
|
||
|
||
<P>Applixware is is an excellent "office suite"
|
||
that may open doors to wider use of Linux.
|
||
|
||
<P>Applixware features a word processor, a spreadsheet, a presentation
|
||
graphics tool, a drawing tool, an e-mail client, database
|
||
connectivity and an object-oriented application builder. For some
|
||
time, this professional set of programs has been available for other
|
||
Unix platforms, including HP-UX, Solaris, AIX and Digital Unix,
|
||
and now Applixware is available for Intel-compatible Linux machines and Microsoft
|
||
Windows; at the time of this writing, the NT version is out and the 95
|
||
version is in beta testing.
|
||
|
||
<P><CENTER><IMG SRC="./gx/moore/0202f1.gif"></CENTER>
|
||
<P><CENTER><B>An Applixware On-Line Book</B></CENTER>
|
||
|
||
<P>If you install Applixware on your system, you'll notice an impact
|
||
on system resources. A complete installation with the included Red Hat
|
||
RPM files requires 210MB--if that's more than you have available,
|
||
you can make a partial installation from a live,
|
||
"unpacked" directory on the CD-ROM. In fact, Applixware
|
||
can be launched and used directly from the CD-ROM, though this
|
||
makes program operation a little leisurely. I was
|
||
using Red Hat Linux 4.0 when I reviewed Applixware,
|
||
but the software should work fine on other
|
||
distributions, and installation instructions are
|
||
included.
|
||
|
||
<P>The CD speed may not seem bad if you're using a 486DX25, on which
|
||
Applixware is fast enough to be usable, but probably too slow for a
|
||
production environment; I found my meager CPU power to be a real
|
||
problem only when I started using the graphics tools.
|
||
|
||
<P>This is not an application for low-memory systems. As
|
||
cheap as RAM is today, this shouldn't be too painful a state to
|
||
rectify. With 16MB of RAM, the word processor was snappy enough with
|
||
X and the Afterstep window manager running, but having much else
|
||
loaded caused so much paging of virtual memory I needed something to
|
||
read while waiting.
|
||
|
||
<P><CENTER><IMG SRC="./gx/moore/0202f2.gif"></CENTER>
|
||
<P><CENTER><B>Applix Words</B></CENTER>
|
||
|
||
|
||
<P>Not much reading material comes with Applix--at least, not on
|
||
paper. Back when it was known as Asterix and also in version 3.x of
|
||
Applix, there was a manual for each module, but either with the Linux
|
||
version or with the later releases, virtually all documentation is in
|
||
the "On-Line Books". Use the on-line tutorials if you're
|
||
new to the system, or the on-line help if you just need a reference.
|
||
|
||
<P><I>Applix Words</I> is a full-featured word processor with
|
||
everything you'd expect to find in a modern product. That is, unless
|
||
you're looking to do something which really should be done
|
||
using desktop publishing software. By the way, one thing you
|
||
never want to do with it is embed, oh, 80 or so large,
|
||
256-color GIFs in a single document--at somewhere around 8MB,
|
||
application behavior gets a bit wacky. Linking is much,
|
||
much better.
|
||
|
||
<P><I>Words</I> gives you tables, borders, shading, embedded equations and
|
||
calculations, conditional text and cross-referencing, international
|
||
dictionaries, thesauri and a multi-font, multi-size WYSIWYG
|
||
display. You can rely on multiple undo and redo, and when you're done,
|
||
you can save PostScript and PCL printer files or send them directly to
|
||
a networked printer.
|
||
|
||
<P><CENTER><IMG SRC="./gx/moore/0202f3.gif"></CENTER>
|
||
<P><CENTER><B>Applix Graphics</B></CENTER>
|
||
|
||
<P>HTML is easy with the Applix HTML authoring tool. Documents can be
|
||
imported from Applix or another popular word processor using one of
|
||
the format filters or created from scratch with the same ease as a
|
||
word processing document. Clip art, GIFs and linked or embedded
|
||
Applix Graphics images are converted seamlessly. <I>Applix
|
||
Spreadsheets</I> documents and queries from the database interface
|
||
application, <I>Data</I>, can be included, too. Tables, colors, and
|
||
more than 25 standard HTML styles are all under your control.
|
||
|
||
<P><I>Applix Graphics</I> is a terrific drawing and presentation graphics
|
||
tool. At your disposal are user-definable fill patterns, various
|
||
brush styles, shearing, drop shadows, incremental zoom, rotating,
|
||
scaling, color pixel editing and text wrapping, to name a few. Grid
|
||
snap, guide lines, rulers, and coordinates help create precise and
|
||
complex drawings quickly. I found graphics as easy to
|
||
produce with <I>Graphics</I> as with <I>Powerpoint</I>.
|
||
|
||
<P>The good news continues with <I>Applix Spreadsheets</I> with
|
||
calculation-based attributes, 3D charts, named views and dynamic
|
||
links to objects in other Applixware applications. When your linked
|
||
data from elsewhere changes, it is automatically updated in your
|
||
spreadsheet. There are live links to a relational
|
||
database through <I>Applix Data</I>, goal seeking, drag-and-drop,
|
||
projection tables and background recalculation. You can import those
|
||
old Lotus 1-2-3 and Excel spreadsheets, too.
|
||
|
||
<P>You might not think you need another mail client, but check out
|
||
<I>Applix Mail</I>. When you receive mail, a dialog box pops up with
|
||
the sender name and subject, giving you the options "Read
|
||
Now", "Read Later", and "Help". You can
|
||
attach Applix files to your mail messages and upon receipt, launch
|
||
the appropriate Applix tool for viewing. Mail can be marked
|
||
"Urgent", marked with a "Reply by" date, and
|
||
also sent by "certified" mail, giving you a receipt when the
|
||
recipient has read the mail. Of course you can "Cc" and
|
||
"Bcc" people. You also get shared mail folders, automatic
|
||
conversion of messages and documents to your preferences, encryption,
|
||
and mail filtering based on rules you specify.
|
||
|
||
<P><I>Applix Data</I> connects Applixware applications to SQL databases
|
||
like Informix, Oracle, Ingres, and Sybase, seamlessly querying data
|
||
from one or more tables, selecting information with query conditions,
|
||
and performing advanced queries and joins. Rows can be edited,
|
||
inserted, and deleted. A live link in your document to the database
|
||
means up-to-date data. <I>Data</I> provides a lot of capability when
|
||
teamed with ELF and <I>Builder</I>.
|
||
|
||
<P><CENTER><IMG SRC="./gx/moore/0202f4.gif"></CENTER>
|
||
<P><CENTER><B>Applix Builder</B></CENTER>
|
||
|
||
<P>The Extension Language Facility (ELF) is an interpreted language with
|
||
which users can build and deploy applications, front-ends to
|
||
applications, automate tasks and connect to databases and other
|
||
external sources of data. The Applix user interfaces are built with
|
||
ELF and ELF macros can be used to automate tasks in any of the
|
||
Applixware applications. Some capabilities include: TCP/IP socket
|
||
interfacing, remote procedure calls, interactive debugging, many
|
||
built-in macros, string manipulation, and arithmetic and Boolean
|
||
operators.
|
||
|
||
<P><I>Builder</I> is object oriented and gives you access to external data
|
||
sources as well as the capabilities of the Applixware application
|
||
suite for use in your custom applications. Also, full access to ELF
|
||
macros and functions, external objects, shared classes, RPC and shared
|
||
library support. Plus, the applications you develop in <I>Builder</I>
|
||
on one platform are portable to Applixware on other platforms without
|
||
modification.
|
||
|
||
<P>Applixware is a terrific package. When I heard it was available for
|
||
Linux, I knew I could let go of Microsoft Office (and MS Windows) forever.
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, Gary Moore <BR>
|
||
Published in Issue 24 of <i>Linux Gazette</i>, January 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="./berglund.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>A Bit About Security</H2>
|
||
<H4>By <a href="mailto:mabs@ancc.com.au">Marcus Berglund</a></H4>
|
||
</center>
|
||
<P> <HR> <P>
|
||
If you are a potential website/permanent connection, the first thing you
|
||
should know about is security...
|
||
<P>
|
||
I, from personal experience know what happens when people 'hack' into my
|
||
machine, it nearly become an international court case. I won't go into
|
||
details, but it was from my ignorance, and is why I lost my job.
|
||
<P>
|
||
When setting up a machine you should have a guess who might be able to
|
||
access you machine, and when you setup a new user, eg. to get pirated
|
||
programs, they'll know how to get in. Sure, you might be able to get free
|
||
programs and people might look at you in a different way, but if someone
|
||
with more experience than you (and there is always alot of them, no matter
|
||
how good you are) sees an obvious security hole they will exploit it as
|
||
much as they can, so they don't get in trouble and you do.
|
||
<P>
|
||
Linux/Unix is a very flexible/Configureable OS and thats where security
|
||
holes apear, and disapear. Just ask a system administrator, most Linux
|
||
distributions need some work before they are close to internet useable, or
|
||
hack proof. I personally couldn't list every file you would need to edit,
|
||
but startup files (or links with redhat & debian) you will need to
|
||
remove, if you don't use them, and /etc/inetd.conf is another place to
|
||
start, if you don't understand these files, imidiately remove network
|
||
connection, and read man pages!!!
|
||
<P>
|
||
A basic checklist might be: time, echo, nfs*, telnet*, smb (netbios), ftp,
|
||
login, pop3, nntp, tftp*, netstat, finger, http, etc... (* these are
|
||
popular protocols, but are can be very insecure), if you are on a network
|
||
and are unsure, ask your sysadmin, they will most certainly know more from
|
||
experience what you should and shouln't use, and most (experienced with
|
||
Linux) could probably give you some good advice...
|
||
<P>
|
||
At this stage you've gone through and remove unecessary services, now
|
||
restart your config files ('shutdown now' and login then as root then
|
||
'init 3' or restart (better ideas - send them in)), now you learn how the
|
||
protocols work, what files they access, and what security holes they
|
||
leave, eg. if you have people that are only using windows to share drives
|
||
you might set them up in a group that has no telnet and ftp access (for
|
||
example).
|
||
<P>
|
||
Adding new users should never be as easy as it seems, unless you can trust
|
||
the person, eg. I have an 'smb' group on my machine for samba users, and
|
||
they are denied access through telnet and ftp, since they are they only
|
||
other services I offer on my machine. When working out what people have
|
||
access to what, plan what you are going to do, eg. restrict certain
|
||
'groups' access to paticular services.
|
||
<P>
|
||
At this stage you are probably thinking, "What alot of stuffing around",
|
||
but as an 'NT ISP' recently proved to me, even they are succeptable to
|
||
incorrect user access attacks, so don't say that it is only resricted to
|
||
the Unicies, all OS's suffer, it's just that Unicies can be a little
|
||
harder to configure than NT, and can be attacked easier by very
|
||
experienced Unix hackers, as NT with NT hackers...
|
||
<P>
|
||
But probably the biggest advantage to Linux is that 99% of the time you
|
||
can get the source code and, I ask one question, if you gave away the
|
||
source code for a program, are you going to leave obvious security holes
|
||
for personal access, I think not...
|
||
<P>
|
||
It all mainly comes down to asking the computer, people on the internet
|
||
and sysadmins what you should and shouldn't do, and a little common sense
|
||
does help alot too, and have fun in the meanwhile.
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, Marcus Berglund<BR>
|
||
Published in Issue 24 of <i>Linux Gazette</i>, January 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="./moore.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./rogers.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>The Standard C Library for Linux, Part one: <stdio.h> file functions</H2>
|
||
<H4>By <a href="mailto:jrogers@acmewidgets.com">James M. Rogers</a></H4>
|
||
</center>
|
||
<P> <HR> <P>
|
||
C is a very small language. This is a good thing. C programmers
|
||
will use nearly the entire C language every time they write a fair sized
|
||
program. The standard C library extends the functionality of C in
|
||
a way that is predictable on multiple systems. The library gives
|
||
us tools like scanf() and printf() that make reading and writing formatted
|
||
output much easier than working with blocks of characters using read()
|
||
and write(). Also when you move from one C programming environment
|
||
to another, the functionality of printf() will be the same. You don't
|
||
have to relearn how to print formatted output every time you change machines.
|
||
|
||
<P>In this series of articles I will discuss the tools that are available
|
||
for the programmers in the standard C library. At the end is a bibliography
|
||
of the books and articles that I used to get this information. I
|
||
refer to these books and magazines on a daily basis when I program.
|
||
If you want to work as a C programmer I strongly recommend that you buy
|
||
and read these books and magazines.
|
||
|
||
<P>Many times the standard functions are overlooked and reinvented by programmers
|
||
(including myself!) to do things like seeing if a character is a letter
|
||
by:
|
||
|
||
<P> (c=>'a'
|
||
|| c<='z' && c=>'A' || c<='Z')
|
||
|
||
<P>instead of using
|
||
|
||
<P> isalpha(c);
|
||
|
||
<P>The second form is much easier to read and figure out. There is
|
||
another reason to use the second form. The first example only works
|
||
for ASCII character sets, the second will work on _any_ machine.
|
||
If you want to write portable code (code that can be compiled and ran on
|
||
any machine with very minor changes) then use the standard C library.
|
||
|
||
<P>Several times in the past I have written code that took time to write
|
||
and debug and interface to the rest of my program only to discover that
|
||
there was already a function that did what I wanted to do. A few
|
||
months ago I was writing my own Multi User Dimension (MUD), based on a
|
||
client/server article in Linux Journal, and I needed to process what the
|
||
user had entered, one word at a time. So I wrote my own string tokenizer.
|
||
Turns out I could have used the strtok() function to do almost the exact
|
||
same thing. And other people will know what the strtok() function
|
||
does without having to decipher my code.
|
||
|
||
<P>Make your life easier, use the standard C library. It will also
|
||
help all of us who try to update and maintain your code later.
|
||
|
||
<P>The GNU compiler, gcc, comes with the GNU standard C library.
|
||
This compiler is one of the best in the world and the GNU standard C library
|
||
conforms almost exactly to the standard. In the places where the
|
||
standard is imprecise, you can expect very reasonable behavior from both
|
||
the compiler and the library. I am going to discuss the GNU standard
|
||
C library in these articles.
|
||
|
||
<P>The <stdio.h> library handles the standard input and output functions
|
||
for C programmers. It is also by far the largest library. Because
|
||
the library is so large I am going to group the commands in these sections:
|
||
file operations, input and output.
|
||
|
||
<P>Now before we talk about files we need to agree on the words that we
|
||
are going to use. In Linux a file or device is considered to be a
|
||
<B>stream</B> of data. This stream of data that is associated with
|
||
a file or hardware device is accessed by your program <B>opening</B> the
|
||
file or device. Once the stream is opened then you can <B>read</B>
|
||
and/or <B>write</B> to it.
|
||
|
||
<P>Three streams are opened automatically when you execute a program.
|
||
Standard input (<B>stdin</B>), standard output (<B>stdout</B>), and standard
|
||
error (<B>stderr</B>). These can all be redirected by your shell
|
||
when you run the program but normally stdin is your keyboard and stdout
|
||
and stderr both go to your monitor.
|
||
|
||
<P>After you are done with your streams you need to tell the operating
|
||
system to clean up buffers and finish saving data to the devices.
|
||
You do this by <B>closing</B> the stream. If you don't close your
|
||
stream then it is possible to lose data. stdin, stdout and stderr
|
||
are all closed automatically the same way they are opened automatically.
|
||
|
||
<P>One of the most important things to remember when dealing with devices
|
||
and files is that you are dealing with the real world. <I>Don't assume
|
||
that the function is going to work.</I> Evan something like printf
|
||
can fail. Disks fill up or occasionally fail, users input the wrong data,
|
||
processors get too busy, other programs have your files locked. Murphy's
|
||
Law is in full effect when it comes to computer systems. Every function
|
||
that deals with the real world returns an error condition if the function
|
||
failed. Always check every return value and take the appropriate
|
||
action when there is an error condition. <I>Exceptions are not errors
|
||
unless they are handled badly.</I> <I>Exceptions are opportunities for
|
||
extra computation</I> (William Kahan, on exception handling.)
|
||
|
||
<P>The first example is to basically show how to open a file for reading.
|
||
It just dumps a file called test in the current directory to the standard
|
||
out. All exceptions are reported to standard error and then program
|
||
halted is with an error return. It should produce an error if a file
|
||
called test doesn't exist.
|
||
|
||
<P>--------------------------------------------------------
|
||
<BR><TT>#include <stdio.h> /* this is a compiler directive
|
||
that tells the</TT>
|
||
<BR><TT>
|
||
the compiler that you are going to be using</TT>
|
||
<BR><TT>
|
||
functions that are in the standard input /</TT>
|
||
<BR><TT>
|
||
output library</TT>
|
||
<BR><TT>
|
||
*/</TT>
|
||
<BR><TT>main (){</TT>
|
||
|
||
<P><TT>/* declare variables */</TT>
|
||
<BR><TT> FILE *stream;
|
||
/* need a pointer to FILE for the stream */</TT>
|
||
<BR><TT> int buffer_character; /* need
|
||
an int to hold a single character */</TT>
|
||
|
||
<P><TT>/* open the file called test for reading in the current directory
|
||
*/</TT>
|
||
<BR><TT> stream = fopen("test", "r");</TT>
|
||
|
||
<P><TT>/* if the file wasn't opened correctly than the stream will be</TT>
|
||
<BR><TT> equal to NULL. It is now customary to
|
||
represent NULL by casting</TT>
|
||
<BR><TT> the value of 0 to the correct type yourself
|
||
rather than having the</TT>
|
||
<BR><TT> compiler guess at the type of NULL to use.</TT>
|
||
<BR><TT>*/</TT>
|
||
<BR><TT> if (stream == (FILE *)0) {</TT>
|
||
<BR><TT> fprintf(stderr, "Error
|
||
opening file (printed to standard error)\n");</TT>
|
||
<BR><TT> exit (1);</TT>
|
||
<BR><TT> } /* end if */</TT>
|
||
|
||
<P><TT>/* read and write the file one character at a time until you reach</TT>
|
||
<BR><TT> end-of-file on either our file or output.
|
||
If the EOF is on file_descriptor</TT>
|
||
<BR><TT> then drop out of the while loop. if the end-of-file
|
||
is on report write</TT>
|
||
<BR><TT> errors to standard out and exit the program
|
||
with an error condition</TT>
|
||
<BR><TT>*/</TT>
|
||
<BR><TT> while ((buffer_character=getc(stream))!=EOF)
|
||
{</TT>
|
||
<BR><TT> /* write the character
|
||
to standard out and check for errors */</TT>
|
||
<BR><TT> if((putc(buffer_character,
|
||
stdout)) == EOF) {</TT>
|
||
<BR><TT>
|
||
fprintf(stderr,"Error writing to standard out. (printed to standard
|
||
error)\n");</TT>
|
||
<BR><TT>
|
||
fclose(stream);</TT>
|
||
<BR><TT>
|
||
exit(1);</TT>
|
||
<BR><TT>
|
||
} /* end if */</TT>
|
||
<BR><TT> } /* end while
|
||
*/</TT>
|
||
|
||
<P><TT>/* close the file after you are done with it, if file doesn't close
|
||
then report and exit */</TT>
|
||
<BR><TT> if ((fclose(stream)) == EOF) {</TT>
|
||
<BR><TT> fprintf(stderr,"Error
|
||
closing stream. (printed to standard error)\n");</TT>
|
||
<BR><TT> exit(1);</TT>
|
||
<BR><TT> } /* end if */</TT>
|
||
|
||
<P><TT>/* report success back to environment */</TT>
|
||
<BR><TT> return 0;</TT>
|
||
|
||
<P><TT>} /* end main*/</TT>
|
||
<BR>-------------------------------------------------------------
|
||
<BR>
|
||
<BR>The above simple program is an example of opening a file, reading
|
||
the file, and then closing the file while also using stdout, and stderr.
|
||
I cut and pasted the code to a vi session and then saved, compiled, and
|
||
ran the program.
|
||
|
||
<P>What follows is a quick summary of the <B>file operations</B> in the
|
||
<stdio.h> library. These are the operations that work directly
|
||
with streams.
|
||
<H4>
|
||
Opening Streams</H4>
|
||
Before a stream can be used you must <B>associate</B> the stream with some
|
||
device or file. This is called opening the stream. Your program
|
||
is asking for permission from the operating system to read or write to
|
||
a device. If you have the correct permissions, the file exists or
|
||
you can create the file and no-one else has the file locked then the operating
|
||
system allows you to open the file and gives you back an object that is
|
||
the stream. Using this object you can read and write to the stream
|
||
and when you are done you can close the stream.
|
||
|
||
<P>Let me discribe the format of the descriptions that you will see here
|
||
and in the man pages. The first entry is the type that is returned
|
||
by the function call. The second part is the function name itself
|
||
and the third part is the list of variable types that the function takes
|
||
for arguments.
|
||
|
||
<P>Looking at the first line below we see that the fopen function takes
|
||
two pointers to strings, one is a path to a file and the other is the open
|
||
mode of the program. The function will return a pointer to FILE type
|
||
which is a complex object that is defined in the <stdio.h> library.
|
||
So in order to accept the return type you must have declared a variable
|
||
of type pointer to FILE, like the stream variable in the example above
|
||
on line 9. On line 13 of the example you can see where I call the
|
||
function fopen with the static filename of "test" and a mode of "r" and
|
||
then accept the return value into the stream object.
|
||
|
||
<P>A stream can be opened by any of these three functions:
|
||
|
||
<P><TT><FONT SIZE=+1> FILE *fopen( char *path,
|
||
char *mode)</FONT></TT>
|
||
<BR><TT><FONT SIZE=+1> FILE *fdopen( int fildes,
|
||
char *mode)</FONT></TT>
|
||
<BR><TT><FONT SIZE=+1> FILE *freopen( char *path, char
|
||
*mode, FILE *stream)</FONT></TT>
|
||
|
||
<P><TT><FONT SIZE=+1>char *path</FONT></TT> is a pointer to a string with
|
||
the filename in it.
|
||
<BR><TT><FONT SIZE=+1>char *mode</FONT></TT> is the mode of opening the
|
||
file (table follows.)
|
||
<BR><TT><FONT SIZE=+1>int fildes</FONT></TT> is a file descriptor which
|
||
has already been opened and whose mode matches.
|
||
<UL>You can get a file descriptor with the UNIX system function <B>open</B>.
|
||
Please note that a file descriptor is not a pointer to FILE. You
|
||
cannot close(stream), you must fclose(stream). This is a very hard
|
||
error to find if your compiler doesn't warn you about it. If you
|
||
are interested in Linux System calls type `man 2 intro` for an introduction
|
||
to the functions and what they do.</UL>
|
||
<TT><FONT SIZE=+1>FILE *stream</FONT></TT> is an already existing stream.
|
||
|
||
<P>These functions return a pointer to FILE type that represents the data
|
||
stream or a NULL of type <TT><FONT SIZE=+1>(FILE *)0 </FONT></TT>on any
|
||
error condition.
|
||
|
||
<P><B>fopen</B> is used to open the given filename with the respective
|
||
mode. This is the function that is used the most to open files.
|
||
|
||
<P><B>fdopen</B> is used to assign a stream to a currently opened file
|
||
descriptor. The file descriptor mode and the fdopen mode must match.
|
||
|
||
<P><B>freopen</B> is normally used redirect stdin, stdout and stderr to
|
||
file. The stream that is given will be closed and a new stream opened
|
||
to the given path with the given mode.
|
||
|
||
<P>This table shows the modes and their results:
|
||
|
||
<P><TT><FONT SIZE=+1> open stream for
|
||
truncate create starting</FONT></TT>
|
||
<BR><TT><FONT SIZE=+1>mode read write
|
||
file file position</FONT></TT>
|
||
<BR><TT><FONT SIZE=+1>---- ---- -----
|
||
---- ---- --------</FONT></TT>
|
||
<BR><TT><FONT SIZE=+1>"r" y
|
||
n n
|
||
n beginning</FONT></TT>
|
||
<BR><TT><FONT SIZE=+1>"r+" y
|
||
y n
|
||
n beginning</FONT></TT>
|
||
<BR><TT><FONT SIZE=+1>"w" n
|
||
y y
|
||
y beginning</FONT></TT>
|
||
<BR><TT><FONT SIZE=+1>"w+" y
|
||
y y
|
||
y beginning</FONT></TT>
|
||
<BR><TT><FONT SIZE=+1>"a" n
|
||
y n
|
||
y end-of-file</FONT></TT>
|
||
<BR><TT><FONT SIZE=+1>"a+" y
|
||
y n
|
||
y end-of-file</FONT></TT>
|
||
|
||
<P>To read the first line, "r" will open a stream for read, the stream
|
||
will not be opened for write, will not truncate the file to zero length,
|
||
will not create the file if it doesn't already exist and will be positioned
|
||
at the beginning of the stream.
|
||
<H4>
|
||
Stream Flushing</H4>
|
||
Sometimes you want your program to ensure that what you have written to
|
||
a file has actually gone to the disk and is not waiting in the buffer.
|
||
Or you might want to throw out a lot of user input and get fresh input,
|
||
for a game. The following two functions are useful for emptying the
|
||
streams buffers, though one just throws the data away while the other stores
|
||
it safely on to the stream.
|
||
|
||
<P><TT><FONT SIZE=+1> int fflush(FILE *stream)</FONT></TT>
|
||
<BR><TT><FONT SIZE=+1> int fpurge(FILE *stream)</FONT></TT>
|
||
|
||
<P><TT><FONT SIZE=+1>FILE *stream</FONT></TT> is an already existing stream.
|
||
|
||
<P>These functions return a 0 on success. On a failure they return
|
||
an EOF.
|
||
|
||
<P><B>fflush</B> is used to write out the buffers of the stream to a device
|
||
or file.
|
||
|
||
<P><B>fpurge</B> is used to clear the buffers of unwritten or unread data
|
||
that is in a buffer waiting. I think of this as a destructive purge
|
||
because it clears the read and write buffers by dumping the contents.
|
||
<H4>
|
||
Closing Streams</H4>
|
||
When you are done with a stream you must clean up after your program.
|
||
When you close a stream the command ensures that the buffers are successfully
|
||
written and that the stream is truly closed. If you just exit a program
|
||
without closing your files then more than likely the last few bytes that
|
||
you wrote will be there. But you won't know unless you check.
|
||
Also there is a limit to how many streams a single process can have open
|
||
at one time. So if you keep on opening streams without closing the old
|
||
streams you will use up system resources. Only one command is used
|
||
to close any stream.
|
||
|
||
<P><TT><FONT SIZE=+1> int fclose(FILE *stream)</FONT></TT>
|
||
|
||
<P><TT><FONT SIZE=+1>FILE *stream</FONT></TT> is an already existing stream.
|
||
|
||
<P>Returns a 0 on success, or an EOF otherwise.
|
||
|
||
<P><B>fclose</B> flushes the given streams buffers and then disassociates
|
||
the stream from the pointer to FILE.
|
||
<H4>
|
||
Renaming and Removing Files</H4>
|
||
These two commands work just like rm and mv, but without the options.
|
||
They are not recursive but your programs can be so watch that you don't
|
||
accidentally build your own version of <TT><FONT SIZE=+1>rm -rf / </FONT></TT><<<by
|
||
they way don't type this, it would delete your entire harddrive!!>>>
|
||
|
||
<P><TT><FONT SIZE=+1> int remove(char
|
||
*path)</FONT></TT>
|
||
<BR><TT><FONT SIZE=+1> int rename(char
|
||
*oldpath, const char *newpath)</FONT></TT>
|
||
|
||
<P><TT><FONT SIZE=+1>char *path, oldpath and newpath</FONT></TT> are all
|
||
pointers to existing files.
|
||
|
||
<P>Returns a 0 on success and a non-zero otherwise.
|
||
|
||
<P><B>remove</B> works just like rm to remove the file in the string pointed
|
||
to by path.
|
||
|
||
<P><B>rename</B> works just like move to rename a file from oldpath to
|
||
newpath, changing directories if need be.
|
||
<H4>
|
||
Temporary Files</H4>
|
||
You can create your own temp files by using the following functions:
|
||
|
||
<P><TT><FONT SIZE=+1> FILE *tmpfile(void)</FONT></TT>
|
||
|
||
<P>This command returns a pointer to a FILE of stream which is a temp file
|
||
that magically goes away when your program is done running. You never
|
||
even know the files name. If the function fails it returns a NULL
|
||
pointer of type (FILE *)0.
|
||
|
||
<P><TT><FONT SIZE=+1> char *tmpnam(char *string)</FONT></TT>
|
||
|
||
<P>This function returns a filename in the tmp directory that is unique,
|
||
or a NULL if there is an error. Each additional call overrides the
|
||
previous name so you must move the name somewhere else if you need to know
|
||
the name after you open the file.
|
||
<H4>
|
||
Stream Buffering</H4>
|
||
Normally a stream is block buffered, unless it is connected to a terminal
|
||
like stdin or stdout. In block buffered mode the stream reads ahead
|
||
a set amount a and then gives you what the input that you ask for as you
|
||
ask for it. Sometimes you want this to be bigger or smaller to improve
|
||
performance in some program. The following four functions can be
|
||
used to set the buffering type and the size of the buffers. The defaults
|
||
are normally pretty good so you shouldn't have to worry too much about
|
||
these.
|
||
|
||
<P><TT><FONT SIZE=+1> int setbuf(
|
||
FILE *stream, char *buf);</FONT></TT>
|
||
<BR><TT><FONT SIZE=+1> int setbuffer( FILE *stream,
|
||
char *buf, size_t size);</FONT></TT>
|
||
<BR><TT><FONT SIZE=+1> int setlinebuf( FILE *stream);</FONT></TT>
|
||
<BR><TT><FONT SIZE=+1> int setvbuf(
|
||
FILE *stream, char *buf, int mode , size_t size);</FONT></TT>
|
||
|
||
<P>Where mode is one of the following:
|
||
<BR><TT><FONT SIZE=+1> _IONBF</FONT></TT> unbuffered,
|
||
output sent as soon as received.
|
||
<BR><TT><FONT SIZE=+1> _IOLBF</FONT></TT> line buffered,
|
||
output sent as soon as a newline is received.
|
||
<BR><TT><FONT SIZE=+1> _IOFBF</FONT></TT> fully buffered,
|
||
output isn't sent until size characters are received.
|
||
|
||
<P><B>setbuf</B> is an alias for <TT><FONT SIZE=+1>setvbuf(stream,
|
||
buf, buf ? _IOFBF : _IONBF, BUFSIZ);</FONT></TT>
|
||
<BR><B>setbuffer</B> is an alias for <TT><FONT SIZE=+1>setvbuf(stream,
|
||
buf, buf ? _IOFBF : _IONBF, size);</FONT></TT>
|
||
<BR><B>setlinebuf</B> is an alias for <TT><FONT SIZE=+1>setvbuf(stream,
|
||
(char *)NULL, _IOLBF, 0);</FONT></TT>
|
||
|
||
<P><B>setvbuf</B> sets a buffer for the given stream of size_t size and
|
||
of buffer mode.
|
||
<H4>
|
||
Stream Posistioning</H4>
|
||
Once you open a stream you are located at a certain postition depending
|
||
on what mode you opened the stream in, as you read or write your position
|
||
increases with each character. You can see where you are at in the
|
||
stream and jump to any position in the stream. If you are writing
|
||
a database program you don't want to have to read and ignore a million
|
||
characters to get to the record that you want, you want to be able to jump
|
||
right to the record and start reading.
|
||
|
||
<P>Note that terminals cannot have their stream repositioned, only block
|
||
devices (like hard drives) will allow this.
|
||
|
||
<P>Also note that if you open a file for writing and use fseek to go out
|
||
10,000 bytes, write one character and then close the file that you will
|
||
not have a file of 10,001 bytes. The file will be much smaller.
|
||
This is called a sparse file. If you move a sparse file using the
|
||
mv command it will not change size because a mv is only a change to the
|
||
directory structure, not the file. If you cp or tar a sparse file
|
||
then it will expand out to its true size.
|
||
|
||
<P><TT><FONT SIZE=+1> int fseek( FILE *stream,
|
||
long offset, int whence);</FONT></TT>
|
||
<BR><TT><FONT SIZE=+1> long ftell( FILE *stream);</FONT></TT>
|
||
<BR><TT><FONT SIZE=+1> void rewind( FILE *stream);</FONT></TT>
|
||
<BR><TT><FONT SIZE=+1> int fgetpos( FILE *stream, fpos_t
|
||
*pos);</FONT></TT>
|
||
<BR><TT><FONT SIZE=+1> int fsetpos( FILE *stream, fpos_t
|
||
*pos);</FONT></TT>
|
||
|
||
<P><TT><FONT SIZE=+1>FILE *stream</FONT></TT> is a pointer to an already
|
||
existing stream.
|
||
<BR><TT><FONT SIZE=+1>long offset</FONT></TT> is added to the position
|
||
indicated by the whence.
|
||
<BR><TT><FONT SIZE=+1>int whence </FONT></TT>is<TT><FONT SIZE=+1> SEEK_SET,
|
||
SEEK_CUR, or SEEK_END </FONT></TT>depending on where you want the offset
|
||
to be applied to: the beginning, the current position or the end.
|
||
<BR><TT><FONT SIZE=+1>fpos_t *pos</FONT></TT> is a complex file position
|
||
indicator. On some systems you must use this to get and set stream
|
||
positions.
|
||
<BR>
|
||
<BR>If these functions are successful <B>fgetpos, fseek, fsetpos</B> return
|
||
0, and <B>ftell</B> returns the current offset. Otherwise,
|
||
EOF is returned. There is no return value from <B>rewind</B>.
|
||
|
||
<P><B>fseek</B> sets the file position in the stream to the value of offset
|
||
plus the position indicated by the whence, either the begginning, the current
|
||
or the end of file to get the new position in the stream. This is
|
||
useful for reading along, adding something to the end of the stream and
|
||
then going back to reading the stream where you left off.
|
||
|
||
<P><B>ftell</B> returns the current position of the stream.
|
||
|
||
<P><B>rewind</B> sets the current position to the beginning of the stream.
|
||
Notice that no error code is returned. This function is assumed to
|
||
always suceed.
|
||
|
||
<P><B>fgetpos</B> is used like ftell to return the position of the stream.
|
||
The position is returned in the pos variable which is of type fpos_t.
|
||
|
||
<P><B>fsetpos</B> is used like fseek in that it will set the current postion
|
||
of the stream to the value in pos.
|
||
|
||
<P>On some systems you have to use <B>fgetpos</B> and <B>fsetpos</B> in
|
||
order to reliably position your stream.
|
||
<H4>
|
||
Error Codes</H4>
|
||
When any of the above functions return an error you can see what the error
|
||
was and even get a text error message to display for the user. There
|
||
are a group of functions that deal with error values. It is enough
|
||
for now to be able to see that you have an errors and stop.
|
||
|
||
<P>However, if you write a nice GUI word processor you don't want the program
|
||
to stop everytime it can't open a file. You want it to display the
|
||
error message to the user and continue. In a future article I will
|
||
deal this error code functions, or someone else can summarize them for
|
||
us and send in an article and some commented source code to show us how
|
||
it's done.
|
||
|
||
<P>If anyone is interested the functions are: <B>clearerr, feof, ferror,
|
||
and fileno.</B>
|
||
<H4>
|
||
Conclusion</H4>
|
||
Well that's enough for this month. I have learned a lot and I hope
|
||
you have as well. Most of this information is available through man
|
||
page system but the dates on these are 4 years old. If anyone has
|
||
updates on any of this information please send it to me and I will correct
|
||
myself in further articles.
|
||
|
||
<P>Next month I want to talk about input and output. I will take
|
||
the simple program above and add some functionallity to it to add a column
|
||
of numbers and output the results to standard out. Hopefully this
|
||
example program can grow into something useful.
|
||
<H4>
|
||
Bibilography:</H4>
|
||
<I>The ANSI C Programming Language, Second Edition</I>, Brian W. Kernighan,
|
||
Dennis M. Ritchie, Printice Hall Software Series, 1988
|
||
|
||
<P><I>The Standard C Library</I>, P. J. Plauger, Printice Hall P T R, 1992
|
||
|
||
<P><I>The Standard C Library, Parts 1, 2, and 3</I>, Chuck Allison, <I>C/C++
|
||
Users Journal</I>, January, February, March 1995
|
||
|
||
<P>STDIO(3), BSD MANPAGE, <I>Linux Programmer's Manual</I>, 29 November
|
||
1993
|
||
|
||
<P><I>Unidentified File Objects</I>, Lisa Lees, <I>Sys Admin</I>, July/August
|
||
1995
|
||
|
||
<P><I>A Conversation With William Kahan</I>, Jack Woehr, <I>Dr Dobb's Journal</I>,
|
||
November 1997<I></I>
|
||
|
||
<P><I>Java and Client-Server</I>, Joe Novosel, <I>Linux Journal</I>, January
|
||
1997
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, James Rogers <BR>
|
||
Published in Issue 24 of <i>Linux Gazette</i>, January 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="./berglund.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./zawinski.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>xscreensaver</H2>
|
||
<H4>By <a href="mailto:jwz@netscape.com">Jamie Zawinski</a></H4>
|
||
</center>
|
||
<P> <HR> <P>
|
||
|
||
I saw the article on Xlockmore by Larry Ayers in issue 18 of the Linux
|
||
Gazette, and I was surprised that it didn't mention, even in passing,
|
||
my XScreenSaver program!
|
||
<P>
|
||
Allow me to engage in a bit of advocacy.
|
||
<P>
|
||
Back in 1991, before Xlockmore existed, there was only Xlock. Xlock
|
||
was not a screensaver: it was only a locker. There was no way to
|
||
make it activate itself automatically when the console became idle,
|
||
nor was there any way to avoid having it lock the screen: that is,
|
||
there was no way to have it turn off when the mouse moved.
|
||
<P>
|
||
So, I wrote XScreenSaver.
|
||
<P>
|
||
XScreenSaver is superior to Xlockmore in a number of ways. The most
|
||
important way, of course, is that it is actually a *screen saver*.
|
||
Although Xlockmore can be configured to not require a password, it
|
||
still doesn't have the ability to turn on when the machine is idle;
|
||
for that you have to use an external program that launches and kills
|
||
it.
|
||
<P>
|
||
The second way in which XScreenSaver is better is that it takes a
|
||
server/client approach: the "xscreensaver" program itself knows how
|
||
to detect idleness, and to lock the screen. The graphics hacks are
|
||
not built in: the beauty of XScreenSaver is that any program which
|
||
can draw on the root window can be launched by XScreenSaver for use
|
||
as a graphics hack! This has several benefits:
|
||
<P>
|
||
* You don't have to recompile and reinstall xscreensaver to
|
||
install a new graphics hack: all you have to do is change your
|
||
X resources, and issue one command.
|
||
<P>
|
||
* Since programs don't have to be written *specifically* to run
|
||
inside the xscreensaver framework, there are many more potential
|
||
graphics hacks available. They don't even need to be written in
|
||
the same language: they just have to draw on the root. Thus,
|
||
it's easier to write programs to work with XScreenSaver than with
|
||
Xlock or Xlockmore, because they don't have to follow a complex
|
||
set of idiosynchratic rules on how to structure the code: the
|
||
only rule is, "draw on the root."
|
||
<P>
|
||
* By separating the task out into two processes, the whole system
|
||
becomes more robust: the memory protection provided by the OS
|
||
serves us well, in that, if one particular graphics hack has a
|
||
bug (leaks memory, corrupts memory, gets a floating-point
|
||
exception, etc) the integrity of the screen saver itself is not
|
||
compromised. The offending hack may exit, but the screen saver
|
||
itself is still running, and the screen is still blackened (or
|
||
locked.) Also, since a screen saver is, by its nature, a very-
|
||
long-running background task, even a small leak would build up
|
||
over time. By arranging for the graphics hacks themselves to be
|
||
relatively short-running tasks, this problem goes away.
|
||
<P>
|
||
* On some systems, only programs which are running as root can check
|
||
passwords. Therefore, on such systems, a screen locker would need
|
||
to be a setuid-root program. Obviously one needs to be very
|
||
careful about what programs one allows out of the security sandbox;
|
||
a conscientious sysadmin would want to examine such a program
|
||
very carefully before installing it. The XScreenSaver model allows
|
||
this, by having the priveleged part of the program (the saver
|
||
itself) be small, while letting the larger part (the graphics
|
||
hacks) remain unpriveleged.
|
||
<P>
|
||
XScreenSaver also includes a nice Demo Mode that lets the user
|
||
interactively experiment with the currently-configured graphics hacks.
|
||
(Until recently, most Linux users wouldn't have been able to take
|
||
advantage of this, since the code had required Motif; but that is now
|
||
configurable, and demo mode works with Athena widgets too -- since
|
||
release 1.27 back in January 1997.)
|
||
<P>
|
||
If you have a system with more than one monitor, XScreenSaver can save
|
||
them both at once: a different graphics hack will run on each, and if
|
||
the two monitors have different depths (for example, if one is
|
||
monochrome and the other color) they can be configured to choose their
|
||
screenhacks from different lists, so that each monitor is running the
|
||
hacks that look best on it.
|
||
<P>
|
||
Most of the xlockmore hacks (the ones that I liked, anyway, including
|
||
the GL modes) are included with the XScreenSaver distribution; the only
|
||
change made being to extract the various display modes from the
|
||
monolithic XLock executable, and turn them into standalone
|
||
root-window-oriented programs.
|
||
<P>
|
||
However, it's possible to have XScreenSaver run xlock itself, as just
|
||
another one of its many modes -- the best of both worlds!
|
||
<P>
|
||
Do check it out: the canonical web page is <A
|
||
HREF="http://people.netscape.com/jwz/xscreensaver/">
|
||
http://people.netscape.com/jwz/xscreensaver</A>, which includes screen
|
||
shots and descriptions of most of the included graphics hacks.
|
||
<P>
|
||
The latest version, as of this writing, is 2.12. At last count, it came
|
||
with 64 different graphics hacks. Roughly a third of these were written
|
||
by me; the others were graciously contributed by others.
|
||
<P>
|
||
And, of course, it's all free, under the usual X-Consortium-style
|
||
copyright.
|
||
<P>
|
||
You also might enjoy my philosphical ramblings on the nature of
|
||
screensavers, at <A
|
||
HREF="http://people.netscape.com/jwz/gruntle/savers.html">
|
||
http://people.netscape.com/jwz/gruntle/savers.html</A>.
|
||
|
||
<!--===================================================================-->
|
||
<P> <hr> <P>
|
||
<center><H5>Copyright © 1998, Jamie Zawinski <BR>
|
||
Published in Issue 24 of <i>Linux Gazette</i>, January 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="./rogers.html"><IMG SRC="../gx/back2.gif"
|
||
ALT=" Back "></A>
|
||
<A HREF="./lg_backpage24.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_backpage24.html#authors">About This Month's Authors</a>
|
||
<li><a HREF="./lg_backpage24.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">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">André D. Balsa</H4>
|
||
André lives in France, 80 miles south of Lyon. He currently runs
|
||
a small Internet consulting business. When not busy exploring Linux
|
||
performance issues, Andrew likes to spend his time with his 1-year old
|
||
daughter, or else try different French recipes on his friends.
|
||
He also helped set up the Linux Benchmarking Project pages at
|
||
<A HREF="http://www.tux.org/bench/">http://www.tux.org/bench/</A>.
|
||
and a web site at <A HREF="http://www.tux.org/~balsa/linux/cyrix">
|
||
http://www.tux.org/~balsa/linux/cyrix</A>,
|
||
about the use of Cyrix 6x86 processors with Linux,
|
||
which has had more than 9,000 visitors in less than two months uptime.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Gerd Bavendiek</H4>
|
||
Gerd has worked as a software engineer with various flavors of Unix since 1988.
|
||
In
|
||
1994 he realized that using Linux could make his every-day work more
|
||
convenient.
|
||
Since that time he has used Linux and various GNU-software. He lives in Essen,
|
||
Germany.
|
||
In my spare time I build model-steam engines using real hardware: lathe,
|
||
milling-machine and a lot of hand tools.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Erik Campo</H4>
|
||
Erik is a Computer Science graduate from UQAM (Universite du
|
||
Quebec A Montreal) since June 1997. He has been working as a network
|
||
programmer (C, C++, Java), teaching assistant and as a systems
|
||
administrator in the Teleinformatique laboratory of UQAM for a year and
|
||
a half. He is now working at UQAM's Registrar's Office as a Webmaster and
|
||
as system administrator for the Teleinformatique laboratory. Erik is a
|
||
Unix/Linux specialist, having installed and managed several flavours of
|
||
Unix as Coherent, Minix, Linux and Solaris. He likes to write articles
|
||
about Linux, listens to Heavy Metal music, plays both spanish and electric
|
||
guitar and is a fanatic of the Spanish Civil War, history of General
|
||
Franco and the political transition period in Spain from 1975 to 1978. For
|
||
more information, please consult his web page at: http://campo.ti.ml.org/.
|
||
|
||
<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">Joel Jaeggli</H4>
|
||
Joel is a programer consultant with the University of Oregon
|
||
Computing Center. Fomerly he worked for the Network Startup Resource
|
||
Center http://www.nsrc.org, helping ngos in emerging nation connect to the
|
||
internet, and of course discover the joy of free Unixes.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Dave Nelson</H4>
|
||
Dave is a manager who mostly deals with computing as an
|
||
abstraction. He used to do computational science research, and
|
||
Linux helps him stay in touch with reality.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Mark Nielsen</H4>
|
||
Mark works at the Health Sciences Library at The Ohio State
|
||
University
|
||
as a systems specialist. One day he hopes to replace NT computers
|
||
with Linux and KDE.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">James M. Rogers</H4>
|
||
James and Shahla Rogers own a farm in the back woods of Ohio and have 6
|
||
dogs and 3 cats. He has served 14 years in the Airforce and Army,
|
||
both enlisted and officer. His first computer was a TS-1000.
|
||
He gave up his C128 in 1991 for Linux. He is currently a UNIX and
|
||
C contract programmer for the University of Washington.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Ylian Saint-Hilaire</H4>
|
||
Ylian is a Computer Science graduate from UQAM (Universite du Quebec
|
||
A Montreal) since last summer and is now completing his master's degree
|
||
at the same university specializing in Network Computing. He is a web site
|
||
publishing and Internet specialist. He has been working with Internet and
|
||
computer applications development for the last seven years, both as part
|
||
of his formal education and as a personal passion. From 1981 to 1984 he lived
|
||
on a sailboat in the Caribbean with his family. In 1991 he was selected
|
||
by the Montreal Chamber of Commerce as one of the "Leaders of Tomorrow".
|
||
He is also a commercial pilot. His web address is
|
||
http://kairos.dsa.uqam.ca/software/.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Michael E. Smith</H4>
|
||
Michael is the Acting Managing Director of LXNY - New York's
|
||
Free Computing Organization; editor of the Unigroup of New York
|
||
Newsletter (editor@unigroup.org); and enthusiastic advocate for
|
||
Unix-like systems. He is a philosopher who has made his living as a
|
||
computer consultant, presently as a Senior Associate of Charles River
|
||
Computers, Inc., doing Unix Systems Administration at J. P. Morgan.
|
||
Career highlights include authoring and deploying an original database
|
||
system in MUMPS-15 and doing SETL research under Jacob T. Schwartz.
|
||
Smith is a man of wide interests inside and outside of the computer
|
||
field, but lately of little time to pursue them.
|
||
|
||
<P>
|
||
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Jamie Zawinski</H4>
|
||
<A HREF="http://people.netscape.com/jwz/">Jamie</A>
|
||
is a card-carrying
|
||
<A HREF="http://catalog.com/hopkins/unix-haters/login.html">Unix
|
||
Hater</A>, who doesn't use Linux, but despite that, has authored an
|
||
awful lot of software that runs on Linux, including
|
||
<A HREF="http://www.xemacs.org/">Lucid Emacs</A>,
|
||
<A HREF="http://people.netscape.com/jwz/xscreensaver/">XScreenSaver</A>,
|
||
<A HREF="http://people.netscape.com/jwz/xdaliclock/">XDaliClock</A>,
|
||
and the initial Unix versions of
|
||
<A HREF="http://home.netscape.com/">Netscape</A> Navigator, and the
|
||
Netscape Mail and News readers.
|
||
|
||
<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>
|
||
Margie and I had a great Christmas break in Houston, Texas, where much of
|
||
her family lives. Besides visiting with family and numerous friends we got
|
||
to tour the Cockrell butterfly habitat, which was very pretty. Mostly sunny
|
||
days and highs in the 60s made it tough to return to the middle of a
|
||
Seattle winter, but we managed.
|
||
<p>
|
||
Have fun!
|
||
|
||
<P> <hr> <P>
|
||
<!-- A HREF="http://www.ssc.com/ssc/Employees/Margie/margie.html"> -->
|
||
Riley P. Richardson<br>
|
||
Editor, <i>Linux Gazette</i> <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="./zawinski.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
|
||
<p><hr><p>
|
||
<I>Linux Gazette</I> Issue 24, January 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>
|