old-www/LDP/LG/issue24/issue24.html

7133 lines
295 KiB
HTML
Raw Permalink Blame History

<!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 &copy; 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&eacute; 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
&amp; 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>&quot;Linux Gazette...<I>making Linux just a little more
fun!</I>&quot;</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&eacute 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 &copy; 1998 Specialized Systems Consultants, Inc. </H5>
<P> <HR> <P>
<H4>&quot;Linux Gazette...<I>making Linux just a little more fun!</I>
&quot;</H4>
<P> <hr> <P>
<!-- QUICK TIPS SECTION ==================================================
-->
<center>
<H1><A NAME="tips"><IMG ALIGN=MIDDLE ALT="" SRC="../gx/twocent.gif">
More 2&#162; 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>
&gt; In the October 97 issue, Dave Nelson suggests using<br>
&gt;<code> find . -type f -exec grep "string" /dev/null {} \;</code><br>
&gt; to persuade grep to print the filenames that it finds the search<br>
&gt; expression in. This starts up a grep for each file, however. A<br>
&gt; shorter
and more efficient way of doing it uses backticks:<br>
&gt;<br>
&gt;<code> grep "string" `find . -type f`</code><br>
&gt;<br>
&gt; Note however, that if the find matches a large number of files you<br>
&gt; 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>
&gt;In the October 97 issue, Dave Nelson suggests using<br>
&gt;<br>
&gt;<code> find . -type f -exec grep "string" /dev/null {} \;</code><br>
&gt;<br>
&gt;to persuade grep to print the filenames that it finds the search<br>
&gt;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 &lt;pattern&gt; -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
&gt;&gt;&gt; a = (10+3)/7
&gt;&gt;&gt; a
1
&gt;&gt;&gt; a = (10.+3)/7
&gt;&gt;&gt; a
1.85714285714
&gt;&gt;&gt; a/32
0.0580357142857
&gt;&gt;&gt; "it takes %7.2f percent" % a
'it takes 1.86 percent'
&gt;&gt;&gt; "it takes %-7.2f percent" % a
'it takes 1.86 percent'
&gt;&gt;&gt; from Numeric import *
&gt;&gt;&gt; b = array(arange(12))
&gt;&gt;&gt; b.shape = 3,4
&gt;&gt;&gt; b
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
&gt;&gt;&gt; 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]])
&gt;&gt;&gt;
</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>
&gt; I know this one of those *really* simple ones, but it's beating me. How<br>
&gt; do I stop the cron.hourly setup mailing a 'fortune' to root? This used<br>
&gt; to happen daily, no biggie, but when I upgraded to 5.0, its hourly.. spam<br>
&gt; :)
<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 &copy; 1998 Specialized Systems Consultants, Inc. </H5>
<P>
<H4>&quot;Linux Gazette...<I>making Linux just a little more fun!</I>&quot;</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&ouml;ln). It follows the tradition
of the Linux conference series (Heidelberg 94, Berlin 95/96 and
W&uuml;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 &copy; 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 &copy; 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 &copy; 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 &copy; 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 - &lt;&lt; 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 &copy; 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&eacute; 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 &copy; 1998, Andr&eacute; 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 &quot;scientific&quot; or quantitative approach and the &quot;benchmarketing&quot;
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 &quot;best&quot; means
in this context is not clear, however; probably the same as &quot;coolest&quot;),</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: &quot;Figures don't lie, but liars figure&quot;.</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 &quot;coming back to the village&quot;).</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>&quot;Down that path lies madness. On the other hand the road to
Hell is paved with melting snowballs.&quot;</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 &quot;scientific
approach&quot;.</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
&lt; $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 &quot;optimizers&quot; 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 &quot;superior&quot; 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 &quot;right&quot; and that their opponents are &quot;wrong&quot;.
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 &quot;administrative
costs&quot;, 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 &quot;SPEC Run and Reporting Rules for CPU95
Suites&quot;. 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 &lt; 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>&quot;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.&quot;</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>&quot;An Implementation Of Multiprocessor Linux&quot;, 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>&quot;...actually, it's pretty simple. GNU &quot;make&quot; 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>&quot;Andre Derrick Balsa&quot; wrote:</TT></P>
<P><TT>-&gt; Great news :-)</TT></P>
<P><TT>-&gt;</TT></P>
<P><TT>-&gt; Thanks to Andy who actually tried this on a dual PPro SMP
system and</TT></P>
<P><TT>-&gt; explained the whole thing to me, I am pleased to announce
a version of</TT></P>
<P><TT>-&gt; the Linux 2.0.0 kernel compilation application benchmark for
SMP</TT></P>
<P><TT>-&gt; systems:</TT></P>
<P><TT>-&gt;</TT></P>
<P><TT>-&gt; Just replace the &quot;make vmlinux&quot; (was &quot;make
zImage&quot;) by &quot;make -j n</TT></P>
<P><TT>-&gt; vmlinux&quot;. Replace n by 2, 3 ... and make will launch
2, 3 ... processes</TT></P>
<P><TT>-&gt; in parallel. Since Linux SMP will transparently distribute
processes</TT></P>
<P><TT>-&gt; between the SMP processors, there is no need to program anything
special</TT></P>
<P><TT>-&gt; in terms of message-passing, clone(), etc...</TT></P>
<P><TT>-&gt;</TT></P>
<P><TT>-&gt; Andy doesn't have any exact figures available, but it seems
this would</TT></P>
<P><TT>-&gt; provide a 30% decrease in compilation time (over a single
serialized</TT></P>
<P><TT>-&gt; process). Thanks, Andy. :-)</TT></P>
<P><TT>-&gt; </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 &quot;standard&quot; 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 &quot;sync&quot; before issuing the final
&quot;make&quot; 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>&quot;time make vmlinux&quot; 107.32user 149.01system 4:27.91elapsed
95%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (143472major+167951minor)pagefaults
0swaps</TT></P>
<P><TT>&quot;time make -j 2 vmlinux&quot; 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).&quot;</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&ccedil;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 (&lt; 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 &copy; 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 &copy; 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 &amp; <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 &copy; 1998, Ylian Saint-Hilaire &amp; 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 &copy; 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 &lt;emarsden@mail.dotcom.fr&gt;<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&nbsp;&nbsp;&nbsp;&nbsp;Traverse Communications<br>
Systems Coordinator&nbsp;&nbsp;&nbsp;&nbsp;223 Grandview Pkwy, Suite 108<br>
oliver@traverse.com&nbsp;&nbsp;&nbsp;&nbsp;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 &lt;galbraith@mixing.qc.dfo.ca&gt;<br>
<p>Nice summary!<br>
&gt; Emacs provides excellent syntax highlighting for LaTeX files,<br>
&gt; 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>
&gt; Xtem has one feature which is useful for LaTeX beginners:<br>
&gt; 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 &lt;dms@nutri-matic.mechanoid.soton.ac.uk&gt;
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>&lt;rant&gt;<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> &lt;/rant&gt;
<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>
: &gt; 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 &lt;jwz@netscape.com&gt;<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
&lt;http://people.netscape.com/jwz/xscreensaver/&gt;, 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
&lt;http://people.netscape.com/jwz/gruntle/savers.html&gt;.
<p>Jamie Zawinski&nbsp;&nbsp;&nbsp;http://people.netscape.com/jwz/
&nbsp;&nbsp;&nbsp;&nbsp;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 &copy; 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 &copy; 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 &copy; 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: &lt;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.&nbsp; This is a good thing.&nbsp; C programmers
will use nearly the entire C language every time they write a fair sized
program.&nbsp; The standard C library extends the functionality of C in
a way that is predictable on multiple systems.&nbsp; 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().&nbsp; Also when you move from one C programming environment
to another, the functionality of printf() will be the same.&nbsp; 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.&nbsp; At the end is a bibliography
of the books and articles that I used to get this information.&nbsp; I
refer to these books and magazines on a daily basis when I program.&nbsp;
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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (c=>'a'
|| c&lt;='z' &amp;&amp; c=>'A' || c&lt;='Z')
<P>instead of using
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; isalpha(c);
<P>The second form is much easier to read and figure out.&nbsp; There is
another reason to use the second form.&nbsp; The first example only works
for ASCII character sets, the second will work on _any_ machine.&nbsp;
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.&nbsp; 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.&nbsp; So I wrote my own string tokenizer.&nbsp;
Turns out I could have used the strtok() function to do almost the exact
same thing.&nbsp; 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.&nbsp; 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.&nbsp;
This compiler is one of the best in the world and the GNU standard C library
conforms almost exactly to the standard.&nbsp; In the places where the
standard is imprecise, you can expect very reasonable behavior from both
the compiler and the library.&nbsp; I am going to discuss the GNU standard
C library in these articles.
<P>The &lt;stdio.h> library handles the standard input and output functions
for C programmers.&nbsp; It is also by far the largest library.&nbsp; Because
the library is so large I am going to group the commands in these sections:&nbsp;
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.&nbsp; In Linux a file or device is considered to be a
<B>stream</B> of data.&nbsp; 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.&nbsp; 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.&nbsp;
Standard input (<B>stdin</B>), standard output (<B>stdout</B>), and standard
error (<B>stderr</B>).&nbsp; 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.&nbsp;
You do this by <B>closing</B> the stream.&nbsp; If you don't close your
stream then it is possible to lose data.&nbsp; 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.&nbsp; <I>Don't assume
that the function is going to work.</I>&nbsp; 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.&nbsp; 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.&nbsp; Always check every return value and take the appropriate
action when there is an error condition.&nbsp; <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.&nbsp;
It just dumps a file called test in the current directory to the standard
out.&nbsp; All exceptions are reported to standard error and then program
halted is with an error return.&nbsp; It should produce an error if a file
called test doesn't exist.
<P>--------------------------------------------------------
<BR><TT>#include &lt;stdio.h>&nbsp;&nbsp;&nbsp; /* this is a compiler directive
that tells the</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
the compiler that you are going to be using</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
functions that are in the standard input /</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
output library</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*/</TT>
<BR><TT>main (){</TT>
<P><TT>/* declare variables */</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; FILE *stream;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* need a pointer to FILE for the stream */</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; int buffer_character;&nbsp;&nbsp;&nbsp; /* 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>&nbsp;&nbsp;&nbsp; stream = fopen("test", "r");</TT>
<P><TT>/* if the file wasn't opened correctly than the stream will be</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; equal to NULL.&nbsp; It is now customary to
represent NULL by casting</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; the value of 0 to the correct type yourself
rather than having the</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; compiler guess at the type of NULL to use.</TT>
<BR><TT>*/</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; if (stream == (FILE *)0) {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fprintf(stderr, "Error
opening file (printed to standard error)\n");</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit (1);</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; /* end if */</TT>
<P><TT>/* read and write the file one character at a time until you reach</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; end-of-file on either our file or output.&nbsp;
If the EOF is on file_descriptor</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; then drop out of the while loop. if the end-of-file
is on report write</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; errors to standard out and exit the program
with an error condition</TT>
<BR><TT>*/</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; while ((buffer_character=getc(stream))!=EOF)
{</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* write the character
to standard out and check for errors */</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((putc(buffer_character,
stdout)) == EOF) {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
fprintf(stderr,"Error writing to standard out.&nbsp; (printed to standard
error)\n");</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
fclose(stream);</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
exit(1);</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}&nbsp; /* end if */</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; /* 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>&nbsp;&nbsp;&nbsp; if ((fclose(stream)) == EOF) {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fprintf(stderr,"Error
closing stream.&nbsp; (printed to standard error)\n");</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(1);</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; /* end if */</TT>
<P><TT>/* report success back to environment */</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; return 0;</TT>
<P><TT>}&nbsp; /* end main*/</TT>
<BR>-------------------------------------------------------------
<BR>&nbsp;
<BR>The above simple program is an example of&nbsp; opening a file, reading
the file, and then closing the file while also using stdout, and stderr.&nbsp;
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
&lt;stdio.h> library.&nbsp; 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.&nbsp; This is called opening the stream.&nbsp; Your program
is asking for permission from the operating system to read or write to
a device.&nbsp; 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.&nbsp; 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.&nbsp; The first entry is the type that is returned
by the function call.&nbsp; 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.&nbsp; The function will return a pointer to FILE type
which is a complex object that is defined in the &lt;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.&nbsp; 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>&nbsp;&nbsp;&nbsp; FILE&nbsp;&nbsp; *fopen( char *path,
char *mode)</FONT></TT>
<BR><TT><FONT SIZE=+1>&nbsp;&nbsp;&nbsp; FILE&nbsp; *fdopen( int fildes,
char *mode)</FONT></TT>
<BR><TT><FONT SIZE=+1>&nbsp;&nbsp;&nbsp; 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>.&nbsp;
Please note that a file descriptor is not a pointer to FILE.&nbsp; You
cannot close(stream), you must fclose(stream).&nbsp; This is a very hard
error to find if your compiler doesn't warn you about it.&nbsp; If you
are interested in Linux System calls type `man 2 intro`&nbsp; 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.&nbsp; 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.&nbsp; The file descriptor mode and the fdopen mode must match.
<P><B>freopen</B> is normally used redirect stdin, stdout and stderr to
file.&nbsp; 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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; open stream for&nbsp;
truncate create starting</FONT></TT>
<BR><TT><FONT SIZE=+1>mode&nbsp;&nbsp; read&nbsp;&nbsp;&nbsp; write&nbsp;&nbsp;&nbsp;
file&nbsp;&nbsp;&nbsp;&nbsp; file&nbsp;&nbsp; position</FONT></TT>
<BR><TT><FONT SIZE=+1>----&nbsp;&nbsp; ----&nbsp;&nbsp;&nbsp; -----&nbsp;&nbsp;&nbsp;
----&nbsp;&nbsp;&nbsp;&nbsp; ----&nbsp;&nbsp; --------</FONT></TT>
<BR><TT><FONT SIZE=+1>"r"&nbsp;&nbsp;&nbsp;&nbsp; y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
n&nbsp;&nbsp;&nbsp;&nbsp; beginning</FONT></TT>
<BR><TT><FONT SIZE=+1>"r+"&nbsp;&nbsp;&nbsp; y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
n&nbsp;&nbsp;&nbsp;&nbsp; beginning</FONT></TT>
<BR><TT><FONT SIZE=+1>"w"&nbsp;&nbsp;&nbsp;&nbsp; n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
y&nbsp;&nbsp;&nbsp;&nbsp; beginning</FONT></TT>
<BR><TT><FONT SIZE=+1>"w+"&nbsp;&nbsp;&nbsp; y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
y&nbsp;&nbsp;&nbsp;&nbsp; beginning</FONT></TT>
<BR><TT><FONT SIZE=+1>"a"&nbsp;&nbsp;&nbsp;&nbsp; n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
y&nbsp;&nbsp;&nbsp;&nbsp; end-of-file</FONT></TT>
<BR><TT><FONT SIZE=+1>"a+"&nbsp;&nbsp;&nbsp; y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
y&nbsp;&nbsp;&nbsp;&nbsp; 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.&nbsp; 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>&nbsp;&nbsp;&nbsp; int fflush(FILE *stream)</FONT></TT>
<BR><TT><FONT SIZE=+1>&nbsp;&nbsp;&nbsp; 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.&nbsp; 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.&nbsp; 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.&nbsp;
When you close a stream the command ensures that the buffers are successfully
written and that the stream is truly closed.&nbsp; If you just exit a program
without closing your files then more than likely the last few bytes that
you wrote will be there.&nbsp; But you won't know unless you check.&nbsp;
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.&nbsp; Only one command is used
to close any stream.
<P><TT><FONT SIZE=+1>&nbsp;&nbsp;&nbsp; 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.&nbsp;
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>&lt;&lt;&lt;by
they way don't type this, it would delete your entire harddrive!!>>>
<P><TT><FONT SIZE=+1>&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp; remove(char
*path)</FONT></TT>
<BR><TT><FONT SIZE=+1>&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp; 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>&nbsp;&nbsp;&nbsp; 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.&nbsp; You never
even know the files name.&nbsp; If the function fails it returns a NULL
pointer of type (FILE *)0.
<P><TT><FONT SIZE=+1>&nbsp;&nbsp;&nbsp; char&nbsp; *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.&nbsp; 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.&nbsp; 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.&nbsp; Sometimes you want this to be bigger or smaller to improve
performance in some program.&nbsp; The following four functions can be
used to set the buffering type and the size of the buffers.&nbsp; The defaults
are normally pretty good so you shouldn't have to worry too much about
these.
<P><TT><FONT SIZE=+1>&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp; setbuf(
FILE *stream, char *buf);</FONT></TT>
<BR><TT><FONT SIZE=+1>&nbsp;&nbsp;&nbsp; int&nbsp; setbuffer( FILE *stream,
char *buf, size_t size);</FONT></TT>
<BR><TT><FONT SIZE=+1>&nbsp;&nbsp;&nbsp; int setlinebuf( FILE *stream);</FONT></TT>
<BR><TT><FONT SIZE=+1>&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp; 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>&nbsp;&nbsp;&nbsp; _IONBF</FONT></TT> unbuffered,
output sent as soon as received.
<BR><TT><FONT SIZE=+1>&nbsp;&nbsp;&nbsp; _IOLBF</FONT></TT> line buffered,
output sent as soon as a newline is received.
<BR><TT><FONT SIZE=+1>&nbsp;&nbsp;&nbsp; _IOFBF</FONT></TT> fully buffered,
output isn't sent until size characters are received.
<P><B>setbuf</B> is an alias for&nbsp;&nbsp;&nbsp;&nbsp; <TT><FONT SIZE=+1>setvbuf(stream,&nbsp;
buf,&nbsp; buf&nbsp; ?&nbsp; _IOFBF&nbsp;&nbsp; :&nbsp;&nbsp; _IONBF, BUFSIZ);</FONT></TT>
<BR><B>setbuffer</B> is an alias for&nbsp; <TT><FONT SIZE=+1>setvbuf(stream,&nbsp;
buf,&nbsp; buf&nbsp; ?&nbsp; _IOFBF&nbsp;&nbsp; :&nbsp;&nbsp; _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.&nbsp; You can see where you are at in the
stream and jump to any position in the stream.&nbsp; 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.&nbsp; The file will be much smaller.&nbsp;
This is called a sparse file.&nbsp; 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.&nbsp; If you cp or tar a sparse file
then it will expand out to its true size.
<P><TT><FONT SIZE=+1>&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp; fseek( FILE *stream,
long offset, int whence);</FONT></TT>
<BR><TT><FONT SIZE=+1>&nbsp;&nbsp;&nbsp; long&nbsp; ftell( FILE *stream);</FONT></TT>
<BR><TT><FONT SIZE=+1>&nbsp;&nbsp;&nbsp; void rewind( FILE *stream);</FONT></TT>
<BR><TT><FONT SIZE=+1>&nbsp;&nbsp;&nbsp; int fgetpos( FILE *stream, fpos_t
*pos);</FONT></TT>
<BR><TT><FONT SIZE=+1>&nbsp;&nbsp;&nbsp; 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:&nbsp; the beginning, the current position or the end.
<BR><TT><FONT SIZE=+1>fpos_t *pos</FONT></TT> is a complex file position
indicator.&nbsp; On some systems you must use this to get and set stream
positions.
<BR>&nbsp;
<BR>If these functions are successful <B>fgetpos, fseek, fsetpos</B> return&nbsp;
0,&nbsp; and&nbsp; <B>ftell</B> returns the current offset.&nbsp; Otherwise,
EOF is returned.&nbsp; 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.&nbsp; 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.&nbsp;
Notice that no error code is returned.&nbsp; This function is assumed to
always suceed.
<P><B>fgetpos</B> is used like ftell to return the position of the stream.&nbsp;
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.&nbsp; There
are a group of functions that deal with error values.&nbsp; 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.&nbsp; You want it to display the
error message to the user and continue.&nbsp; 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.&nbsp; I have learned a lot and I hope
you have as well.&nbsp; Most of this information is available through man
page system but the dates on these are 4 years old.&nbsp; 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.&nbsp; 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.&nbsp; 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 &copy; 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 &copy; 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 &copy; 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&eacute; D. Balsa</H4>
Andr&eacute; 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.&nbsp; He has served 14 years in the Airforce and Army,
both enlisted and officer.&nbsp; His first computer was a TS-1000.&nbsp;
He gave up his C128 in 1991 for Linux.&nbsp; 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>