The complexity of not lying to Makefiles
So, suppose that you are tired of lying to your Makefiles and want to fix the problem (in the abstract; you can'tcompletely fix your Makefiles, because it's not fixable in anything likeordinary make ). What does this take?
What you really need to capture is the state of the 'build inputs'. Thebuild inputs are whatever goes in to creating the output, which is a lotmore than just the source files involved; it also includes things likethe test of the execution
An irritating awk limitation: getting a range of fields
Writing things in awk has a number of little irritations that come upevery so often. One of them is that it has no built in way to retrievea range of input fields as a string, ie there is no equivalent of whatin Python one could write as something like ' r = " ".join(input[2:]) '(which turns everything from the third field onwards back into a singlestring).
Of course, you can do this with an awk function. But it'
Forcing sort ordering in Unix shell scripts
There are a number of situations in Unix shell scripts where you knowthe order that the lines in your output should be in, but you can'tproduce it in that order and nothing in your normal output is usefulto sort on. One common case is awk scripts that accumulate informationinto arrays and then dump it out in their END blocks with ' for (keyin array) ... '; array keys are, of course, produced in no particularorder.
In this situation, some people go
Some notes about iSCSI multipathing in Solaris
Our new fileservers have multiple networkpaths to the backend iSCSI storage, which means that we needed to setup some sort of multipathing. Theoretically, there's at least threedifferent ways of doing this: bonding multiple network interfacestogether, a native iSCSI feature for this called 'multiple connectionsper session' (MC/S), and high level, cross device multipathing. Inpractice, the complexity of getting network bonding working in across-vendor environment gave me hives and neither Solaris nor our LinuxiSCSI targets
We've lost the password battle
It's been an article of faith, frequently professed to users, that theyshould never write down their password or otherwise record it. Yourusers probably profess to follow this, and may even honestly believethat they are.
But find a user with a machine that recently rebooted (this oftendoesn't take long) and watch what happens next, as the userre-establishes their environment and restarts their applications.Did they get asked for a password when their IMAP-based mail programstarted, or is
How we set up our Solaris ZFS-based NFS fileservers
A SAN backend is fairly useless withouta front end, so we have some of those too. First, a brief bit ofbackground: our overall goal is to provide flexible NFS fileservice . The actual SAN front end servers do nothingexcept NFS service; all user work happens on other machines.
That said, the NFS fileservers are Solaris 10 x86 servers, specificallySolaris 10 Update 5. Hardware wise, they are SunFire X2200s with 8 GBof RAM, although we may
How we set up our iSCSI target servers
The SAN backend for our new fileserver environment is Linux serversacting as iSCSI targets. There's two sides to their setup; the hardwareand the software.
Hardware-wise, the biggest problem was that there are essentially nogeneric servers (especially inexpensive ones) that have enough disks. Sowe punted; we're using 'generic' 1U servers, specifically SunFire X2100M2s, with the iSCSI data disks in external ESATA-based enclosures. Ourcurrent enclosures give us twelve
A problem with Python's help()
I mentioned in passing that when I ampoking around an unfamiliar object (well, class), I usually reach firstfor dir() and only somewhat later try help() . There's several reasonsfor this, but one of them is that help() is overly verbose in a uselessway.
The problem is that many objects have a lot of completely standardmethods like __repr__ , generally with absolutely no usefuldocumentation text, and help() will gleefully tell you all about them
SSL certificate revocation doesn't work (for web browsers)
How SSL certificate revocation is supposed to workis conceptually simple. The CA publishes a CRL , andSSL-using programs check the CA's CRL before actually accepting a signedSSL certificate. Despite this, SSL certificate revocation doesn't workon the web in either practice or in theory.
It doesn't work in practice because, well, it doesn't; you cannotrevoke a SSL certificate today and have most web users notice. Theonly web browser that actively supports any sort of CRL checkingis
Consider having obvious interfaces too
Python offers any number of ways to create very Pythonicinterfaces to your objects, natural ways of getting variousbits of information out of them. For an example that is freshto my mind , the len() of M2Crypto 's Cipher objects is the number of bits that the cipher uses.
The M2Crypto example also illustrates the problem with this way ofcreating interfaces: it is not necessarily very intuitive to peopleusing your code. The len() of a cipher being its bits strikes meas