Weekly spam summary on September 2nd, 2006
Our SMTP frontend survived all this week without problems, which wassomething of an accomplishment this week. Because this week, we:
- got 13,546 messages from 227 different IP addresses.
- handled 19,984 sessions from 1,283 different IP addresses.
- received 1,419,542 connections from at least 52,806 different IPaddresses.
- hit a highwater of 9 connections being checked at once.
Yes, that is not a
Link: The Single Unix Specification et al
The Open Group Base Specification Issue 6 is, well, toquote it:
This standard is the single common revision to IEEE Std 1003.1-1996,IEEE Std 1003.2-1992, and the Base Specifications of The Open GroupSingle UNIX Specification, Version 2.
(Those IEEE standards are better known as 'POSIX'.)
The Single Unix Specification (SUS) is a very useful authoritativereference for how various things should behave in theory
Why Postfix is not my favorite mailer
Today I was unpleasantly surprised to discover that Postfix defaults tohaving a 50 megabyte size limit on user mailboxes, after which emailbounces. This default limit is apparently sufficiently unimportant tonot be mentioned in the 'basic' or 'standard' general configurationdocumentation.
Perhaps this will strike people as a petty reason for disliking Postfix;after all, it's just one configuration option. But it is the symptom ofa deeper problem.
Since Postfix people have made one dangerous random arbitrary default(and not drawn attention
SIGCHLD versus Python: a problem of semantics
In the process of looking at my program's code again to write the lastentry , I think I may have solved the mystery ofhow my impossible exception gets generated.
My program does a lot of forking and thus cleanups of now-dead children.The code that it generally dies on is:
def _delip(pid, ip): del ipmap[ip][pid] if len(ipmap[ip]) == 0: del ipmap[ip]
It takes a KeyError on the len
How dd does blocking
For a conceptually simple program, dd has a number of dark corners.One of them (at least for me) is how it deals with input and outputblock sizes, and how the various blocking arguments change thingsaround.
ibs=sets the input block size, the size of theread()s thatddwill make. Since you can get partial reads in varioussituations, this is really the maximum size thatddwill everread at once.obs=sets the output block size and makesdd'
A problem with debugging threaded Python programs
I have a heavily threaded Python program that dies every now and thenwith a mysterious exception (that as far as I can see just shouldn'thappen, which means that I don't completely understand my code).
My off and on attempts to debug this have pointed out a frustratingproblem in Python's (lack of) support for debugging threaded Pythonprograms: there's no such thing as a global exception, something thatwill freeze, backtrace, and terminate all threads when an erroroccurs.
How to lose readers of your syndication feed
It's pretty simple:
- change your syndication feed URL
- but don't remove or redirect the old feed, just stop updating it
- and don't put up an entry about it (visible in the old feed).
Readers who are not especially attentive may not notice for weeks, onlyvaguely wondering if you've taken a vacation or something. Especially ifthey read a fair amount of feeds and are behind in their reading.
As far as I've gathered, most feed readers are perfectly willing to
An interesting filesystem corruption problem
Today we had a fun problem created by a combination of entirely rational find optimizations and a corrupted, damaged filesystem.
An important Linux server took some kind of hit that turned some filesinto directories (with contents, presumably stolen from some other poordirectory). We found some but were pretty sure there were others lurkingout there too, and wanted to do our best to find them. (If only tofigure out what we needed to restore from the last good backups.)
As it happens, most of the
Documentation should be cheap
Although documentation is not free , it shouldbe cheap. By that, I mean that documentation should cost as little aspossible to produce, so that you get as much of it as possible for yourbudget. Again, the major cost is in people's time, so you want writingdocumentation to be as fast (and easy) as possible.
The golden rule is that time that people are spending doing anythingexcept writing down the actual content is overhead. You get the mostbang to the buck by minimizing
Documentation is not free
Yes, system administrators should document things. At the same time,it's important to understand that documentation is not free; it has acost. Since documentation does not appear from thin air in zero time,producing it costs people's time.
(And this doesn't even count testing it afterward .)
Unless your sysadmins don't have enough to do (which is a ratherrare occurrence around here), this means that documentation costsreal dollars. If you want to do everything you currently