Linux
Linux
"The DNS directory service consists of DNS data, DNS
servers, and Internet protocols for fetching data from the servers. The
billions of resource records in the DNS directory are split into millions
of files called zones. Zones are kept on authoritative servers distributed
all over the Internet, which answer queries according to the DNS network
protocols. In contrast, caching servers simply query the authoritative
servers and cache any replies. Most servers are authoritative for some
zones and perform a caching function for all other DNS information. Most
DNS servers are authoritative for just a few zones, but larger servers are
authoritative for tens of thousands of zones." - What is DNS?
" The term Ethernet refers to the family of local-area
network (LAN) products covered by the IEEE 802.3 standard that defines
what is commonly known as the CSMA/CD protocol."
" The original Ethernet was developed as an experimental coaxial cable
network in the 1970s by Xerox Corporation to operate with a data rate of 3
Mbps using a carrierxi sense multiple access collision detect (CSMA/CD)
protocol for LANs with sporadic butxi occasionally heavy traffic
requirements. Success with that project attracted early attentionxi and
led to the 1980 joint development of the 10-Mbps Ethernet Version 1.0
specificationxi by the three-company consortium: Digital Equipment
Corporation, Intel Corporation,xi and Xerox Corporation." - Internetworking
Technology Handbook: Ethernet
Netfilter is the system compiled into the kernel which
provides hooks into the IP stack which loadable modules (e.g. iptables)
can use to perform operations on packets. IPTables consists of two
parts: user-space tools and kernel-space modules. The latter are
distributed with the kernel, and include the main ip_tables module as
well as modules for NAT, logging, connection tracking, etc. The former
takes the form of the iptables binary, distributed separately from the
kernel and used to add, remove or edit rules for the various modules.
The netfilter/iptables project is the Linux 2.4.x / 2.5.x firewalling
subsystem. It delivers you the functionality of packet filtering
(stateless or stateful), all different kinds of NAT (Network Address
Translation) and packet mangling.
" Internet Protocol (IP) multicast is a
bandwidth-conserving technology that reduces traffic by simultaneously
delivering a single stream of information to thousands of corporate
recipients and homes. Applications that take advantage of multicast
include videoconferencing, corporate communications, distance learning,
and distribution of software, stock quotes, and news." - Internet
Protocol Multicast
"Short for Point-to-Point Tunneling Protocol, a new
technology for creating Virtual Private Networks (VPNs) , developed
jointly by Microsoft Corporation, U.S. Robotics, and several remote access
vendor companies, known collectively as the PPTP Forum. A VPN is a private
network of computers that uses the public Internet to connect some nodes.
Because the Internet is essentially an open network, the Point-to-Point
Tunneling Protocol (PPTP) is used to ensure that messages transmitted from
one VPN node to another are secure. With PPTP, users can dial in to their
corporate network via the Internet." - Webopedia
"Short for Unix-to-Unix Copy, a Unix utility and protocol
that enables one computer to send files to another computer over a direct
serial connection or via modems and the telephone system. For most file
transfer applications, UUCP has been superseded by other protocols, such
as FTP, SMTP and NNTP." - Webopedia
"A private data network that makes use of the public
telecommunication infrastructure, maintaining privacy through the use of a
tunneling protocol and security procedures." - VPNC Glossary
UNIX/Linux Software
"Why is AWK so important? It is an excellent filter and report
writer. Many UNIX utilities generates rows and columns of information. AWK is
an excellent tool for processing these rows and columns, and is easier to use
AWK than most conventional programming languages. It can be considered to be a
pseudo-C interpretor, as it understands the same arithmatic operators as C.
AWK also has string manipulation functions, so it can search for particular
strings and modify the output. AWK also has associative arrays, which are
incredible useful, and is a feature most computing languages lack. Associative
arrays can make a complex problem a trivial exercise." - Bruce Barnett (from
Awk)
"IEEE 754-1985 governs binary floating-point arithmetic. It
specifies number formats, basic operations, conversions, and exceptional
conditions. The related standard IEEE 854-1987 generalizes 754 to cover
decimal arithmetic as well as binary." - IEEE 754 Group
"The Inter-Language Unification system (ILU) is a
multi-language object interface system. The object interfaces provided by ILU
hide implementation distinctions between different languages, between
different address spaces, and between operating system types. ILU can be used
to build multi-lingual object-oriented libraries ("class libraries") with
well-specified language-independent interfaces. It can also be used to
implement distributed systems. It can also be used to define and document
interfaces between the modules of non-distributed programs. ILU interfaces can
be specified in either the OMG's CORBA Interface Definition Language (OMG
IDL), or ILU's Interface Specification Language (ISL). - Inter-Language Unification
Page
"The IPC interface in BSD-like versions of Unix is implemented
as a layer over the network TCP and UDP protocols. Message destinations are
specified as socket addresses; each socket address is a communication
identifier that consists of a port number and an Internet address.
The IPC operations are based on socket pairs, one belonging to a
communication process. IPC is done by exchanging some data through
transmitting that data in a message between a socket in one process and
another socket in another process. When messages are sent, the messages are
queued at the sending socket until the underlying network protocol has
transmitted them. When they arrive, the messages are queued at the receiving
socket until the receiving process makes the necessary calls to receive them."
- Sockets
Programming in Java
"Sed is the ultimate stream editor. If that sounds strange,
picture a stream flowing through a pipe. Okay, you can't see a stream if it's
inside a pipe. That's what I get for attempting a flowing analogy. You want
literature, read James Joyce. Anyhow, sed is a marvelous utility.
Unfortunately, most people never learn its real power. The language is very
simple, but the documentation is terrible. The on-line manual pages for sed
are five pages long, and two of those pages describe the 34 different errors
you can get. A program that spends as much space documenting the errors that
it does documenting the language has a serious learning curve." - Bruce
Barnett (from Sed)
"What is a shell, anyway? It's simple, really. The UNIX
operating system is a complex collection of files and programs. UNIX does not
require any single method or interface. Many different techniques can be used.
The oldest interface, which sits between the user and the software, is the
shell. Twenty five years ago many users didn't even have a video terminal.
Some only had a noisy, large, slow hard-copy terminal. The shell was the
interface to the operating system. Shell, layer, interface, these words all
describe the same concept. By convention, a shell is a user program that is
ASCII based, that allows the user to specify operations in a certain sequence.
There are four important concepts in a UNIX shell:
"A set of library routines that enable C programmers to describe
arbitrary data structures in a machine-independent way." - External
Data Representation: Technical Notes
Linux/UNIX
Software
The original version of this
document resides at http://stommel.tamu.edu/~baum/programming.html.
From The Linux System Administrator's
Guide.
Can be installed from FreeBSD, Linux or DOS, and can boot
*BSD or Linux from the end (greater than 8 Gb) of a single hard drive or
from a second or later hard drive.
Can boot OSs installed in primary and extended partitions
on any available hard disk. Supports and can be installed from nearly all
OSs, e.g. OS/2, Windows, Linux DOS, *BSD, SCO, etc.
Designed to avoid BIO limitations by not using the BIOS,
i.e. can be used to boot from any place on a hard drive up to 137 Gb.
Works with the ext2 filesystem and IDE drives.
Uses
something called UltraIO to "work with almost all x86 PCs, operating
systems and partition types." The installation requirements are a PC
clone, a hard disk and a single FAT partition.
"Absolutely OS independent."
A boot loader that operates off an MS-DOS/Windows FAT
filesystem, i.e. it can (only) boot Linux from a FAT filesystem.
A kernel module that allows Linux to
boot another kernel image into RAM and restart the machine from that
kernel.
Officially supoprts DOS, FreeBSD and Linux.
Supports
BeOS, MS-DOS, FreeDOS, Linux (with LILO), Solaris, VxWorks 5.x, Windows
95/98/ME, Windows NT/2000 and "others." This also has many features not
found in other freely available boot manager.
This is a
commercial offering that costs around $40. The Amazon
reviews indicate that it covers all the major available x86 operating
systems except for Solaris x86. All the material therein is probably
covered in the following freely available entries, but if you want it
all in one place and can afford to part with the Franklins, then there
it is. I'm not paid a cent for any commercial listings I may put in
here, by the way.
To
install Linux on a machine which already has Windows ME taking up the
entire hard disk, one must embark on a series of steps including one -
the repartioning step - that entails booting into real DOS mode via
ME. Bill Gates has seen fit to hide this option in ME. This site
offers a method of working around this perfidious decision.
An
article detailing how to use the patch described in the previous
entry.
Another method for booting into DOS from ME that
requires a copy of Windows 98.
Yet another option that entails creating a bootable floppy in
ME, a process that Gates has also deliberately made more difficult
than it used to be.
A recommended option
for booting OpenBSD along with Windows 3.1, Windows 95/98 and DOS.
A most helpful primer
on hard drives and how they are partitioned.
How to multiboot OpenBSD and
Windows NT using NTloader.
"Describes how to use NTLDR to boot Windows NT, Windows 98,
Linux and old versions of DOS using NTLDR."
"A MacOS application which boots the NetBSD/mac68k (and
OpenBSD/mac68k) operating system."
"MAP stands
for Internet Message Access Protocol. It is a method of accessing
electronic mail or bulletin board messages that are kept on a (possibly
shared) mail server. In other words, it permits a "client" email program
to access remote message stores as if they were local. For example, email
stored on an IMAP server can be manipulated from a desktop computer at
home, a workstation at the office, and a notebook computer while
traveling, without the need to transfer messages or files back and forth
between these compuuters." - What is IMAP?
"Lightweight Directory Access Protocol (LDAP) is an open-standard
protocol for accessing X.500 directory services. The protocol runs over
Internet transport protocols, such as TCP. LDAP is a lightweight
alternative to the X.500 Directory Access Protocol (DAP) for use on the
Internet. It uses TCP/IP stack verses the overly complex OSI stack. It
also has other simplications, such as the representing most attribute
values and many protocol items as textual strings, that are designed to
make clients easier to implement." - OpenLDAP
Faq-O-Matic
To support
files larger than 2 GiB on 32-bit systems, e.g. x86, PowerPC and MIPS, a
number of changes to kernel and C library have to be done. This is
called Large File Support (LFS). The support for LFS is not yet complete
in Linux and this article should give a short overview of the current
status.
The complete text of
the configuration help files for kernels 1.2.x through 2.2.x.
"GGI stands for "General Graphics
Interface", and it is a project that aims to develop a reliable, stable
and fast graphics system that works everywhere. We want to allow any
program using GGI to run on any platform requiring at most a recompile."
"Explores important network design
issues for today's modern mixed intranets. The authors discuss many
different platforms, including Windows 95, Windows 98, Windows NT, OS/2
Warp, OS/2 Warp Server, AIX, Macintosh, WorkSpace On-Demand, Linux,
Solaris, and others. The [536 page] book examines how to connect these
systems in a reliable, flexible, high-performance TCP/IP network."
"A networking-centric micro-distribution of Linux that
can be used in place of a traditional router. LRP is small enough to fit
on a single floppy disk, and makes building and maintaining routers,
bridges, firewalls, switches, and access servers very easy."
The
original version of this document resides at http://stommel.tamu.edu/~baum/programming.html.
This FAQ contains x86 assembly language information common to all
assemblers.
"The tutorial has extensive coverage of
interfacing assembly and C code and so might be of interest to C programmers
who want to learn about how C works under the hood. All the examples use the
free NASM (Netwide) assembler. The tutorial only covers programming under
32-bit protected mode and requires a 32-bit protected mode compiler."
"This
document describes the basics of assembly language programming for the Intel
80x86 microprocessors. It is geared towards using the freely available
NetWide Assembler, NASM, to generate programs that will run under MS-DOS. As
such, it will concentrate on producing 16-bit .COM programs, using only the
facilities that have been present since the original 8086."
"In this tutorial I
will attempt to show you how you can use assembly language writing Unix
programs, specifically under FreeBSD. This tutorial does not explain the
basics of assembly language. ... However, once the tutorial is finished, any
assembly language programmer will be able to write programs for FreeBSD
quickly and efficiently."
An
extended and annotated version of the previous entry.
A free
account must be established to view this.
A free acount must be established
to view this.
A PDF version of the following entry.
An
HTML version of the previous entry.
"This is a
glossary of C++ terms, organized alphabetically by concept."
"alt.comp.lang.learn.c-c++ is a self-moderated newsgroup for the
discussion of issues that concern novice to intermediate C and C++
programmers."
"What
follows is a set of rules, guidelines, and tips that we have found to be
useful in making C++ code portable across many machines and compilers.
This information is the result of porting large amounts of code across
about 25 different machines, and at least a dozen different C++ compilers.
Some of these things will frustrate you and make you want to throw your
hands up and say, ``well, that's just a stupid compiler if it doesn't do
[insert favorite C++ feature].'' But this is the reality of portable code.
If you play by the rules, your code will seamlessly work on all of the
Mozilla platforms and will be easy to port to newer machines."
Requires
free registration to view.
"Meant for programmers making the
transition from BASIC or Pascal to C or C++."
"For
knowledgeable users of C who would like to make the transition to C++."
"Some general guidelines
for avoiding some of the more common mistakes that will cause code bloat."
"A template
idiom providing a class which allows us to wrap an instance of another
class, maintaining access to that class's members, but adding
functionality in a way that is transparent to the wrapped class."
A technique for
writing programs in a subset of C++ which are interpreted at compile time,
e.g. language features such as for loops and if statements can be replaced
by template specialization and recursion.
"A C++ technique for
passing expressions as function arguments."
Requires free registration for access.
Requires free registration for access.
Requires free registration for access.
Requires free registration for access.
Requires
free registration for access. The angry badger quelled our fears by
pontificating about interfrastic counterfactuals.
"This handout should serve you only as a reference to the commands
of Fortran in the ANSI 77, 90 and 95 standards. Only rudimentary examples
are given to remind you of the syntax, and some tedious details that you
are not expected to remember are tabulated for reference purposes."
"This
guide concentrates on topics which are not discussed in ordinary Fortran
courses and regular textbooks: good programming practices, and various
technical and numerical issues."
"The Fortran Journal is no longer published.
However, a few old issues are available online."
This one has been lost to the
ages, although leaving it in allows me to spot those who borrow
this page without attribution.
"Solves some
compatibility problems of the f2c Fortran-to-C translator and other
f77-extended-standard compilers."
From the Sun Fortran
Programmer's Guide.
"Pyfort is a tool for
connecting Fortranroutines to Python."
"A Python
program that generates Python C/API modules wrapping Fortran 77/90/95
codes to Python."
"So I conclude that 754 is a virus, infecting individual programs,
and making them unable to run on non-IEEE-754 hardware."
"This
directory contains a small collection of test programs for examining the
behavior of IEEE 754 floating-point arithmetic, together with test input
andxi output files. There are also a few additional test programs for other
data types."
"A
precision and range independent tool to test whether an implementation of
floating-point arithmetic (in hardware or software) is compliant with the
principles of the IEEE floating-point standard."
"A free, high-quality software implementation
of the IEC/IEEE Standard for Binary Floating-point Arithmetic."
"A program for testing whether a computer's
floating-point conforms to the IEC/IEEE Standard for Binary Floating-point
Arithmetic."
ipchains
iptables
PostScript version.
"A wrapper generator for matrix languages."
"Inline.pm is a new module that glues other programming languages
to Perl. It allows you to write C, C++, and Python code directly inside
your Perl scripts and modules."
"A C++ library which enables seamless interoperability
between C++ and the Python programming language."
"SIP is a tool that makes it very easy to create Python bindings
for C++ libraries."
"Pyrex lets you write code that mixes Python and C data
types any way you want, and compiles it into a C extension for Python."
"The weave package allows the inclusion of C/C++ within Python
code."
"SILOON (Scripting Interface Languages for Object-Oriented
Numerics) gives users the ability to rapidly prototype their scientific
codes in a simple yet elegant fashion using the popular scripting
languages Python and Perl. While programming in these flexible and dynamic
languages, SILOON users maintain the capability of accessing the full
power and complexity of C++ and FORTRAN 90 libraries executed on
high-performance parallel computers."
Chapter from Designing and Building Parallel
Programs.
"An object-oriented 3D toolkit offering a comprehensive
solution to interactive graphics programming problems."
"Using
Open Inventor to create 3D scenes and animation effects."
"Describes how
to create new classes and how to customize existing classes in the Open
Inventor toolkit."
"A powerful and comprehensive programming interface for
developers creating real-time visualization and other performance-oriented
3D graphics applications."
"A development environment used to build portable
2D/3D/stereo high performance graphics, virtual reality, visualization
applications and games for UNIX/X11 and Win32 platforms."
"A high-level 3D graphics library which offers binary and source
level compatibility with Apple's Quickdraw 3D API."
"A high performance 3D scene graph and effect visualization toolkit
for Linux, Win32 and IRIX."
"A graphics library designed for drawing two or three
dimensional graphics of a scalar function of two variables and a two
dimensional vector field on a variable grid."
A book available in PDF format.
RTF
format only.
A detailed guide to the basic workings of Microsoft's SMB/CIFS
protocol suite. Covers NBT, SMB, NBNS/WINS, the Network Neighborhood, and
Authentication. Provides all the information needed to build a working
SMB/CIFS client to interoperate with Samba and MS-Windows Servers.
Elk is an implementation of the
Scheme programming language. In contrast to existing, stand-alone Scheme
systems Elk has been designed specifically as an embeddable, reusable
extension language subsystem for applications written in C or C++.
This document is an attempt to fully
describe the SCSI subsystem in the Linux kernel. At the time of this
writing, the document is incomplete in the sense that there are many
sections of this document that are not yet written.
This is a three
page PDF file.
"Shell has emerged
as a family of programming languages for the UNIX Operating System in the
same sense that JCL emerged as a programming language for mainframe job
control in the 1960s. It is a family of languages because we find variant
syntaxes and capabilities in the Bourne shell, the Korn shell, the C shell,
and others. Most of the patterns described here apply equally well to all
these variants. These patterns do not form a full pattern language nor are
they a comprehensive collection of patterns for the "architecture" of a
Shell program. They cover frequent Shell programming problems that often are
resolved only with expert insight."
The Open Group Single UNIX
Specification's definition of the XSI Shell Command Language.
Rc is a command interpreter for
Plan 9 that provides similar facilities to UNIX's Bourne shell, with some
small additions and less idiosyncratic syntax.
"Eshell is a command shell implemented
entirely in Emacs Lisp. It invokes no external processes beyond those
requested by the user. It is intended to be a functional replacement for
command shells such as bash, zsh, rc, 4dos; since Emacs itself is capable of
handling most of the tasks accomplished by such tools."
"The standard
interpreter associated with the hush library is a shell, called hush,
including a number of the available extensions of Tcl/Tk and widgets
developed by ourselves (such as a www and a video widget). The hush library
offers a C++ interface to the Tcl/Tk toolkit and its extensions. It allows
the programmer to employ the functionality of Tcl/Tk in a C++
program."
Scsh is a Scheme shell,
i.e. a Unix shell which uses Scheme as its scripting language.
"The OpenACS
toolkit is a PostgreSQL port of the ArsDigita Community System, a
comprehensive Open Source toolkit for building Web sites backed by
Oracle."
The author says these
online notes are obsolete, although a more current version is
available in PS and PDF format.
"FXDR is a library that allows you to make
calls to the XDR (eXternal Data Representation) routines from Fortran."
A set of HTMLized X11 man
pages with internal crosslinks.
This is a PDF document.
Part of Coping with
UNIX: A Survival Guide.
The original version of this document
resides at http://stommel.tamu.edu/~baum/programming.html.