2007/11/21

A brief history

Liking xemacs meta-A to call set-mark-command:

(defun php-hook ()
""
(define-key php-mode-map [(meta a)] 'set-mark-command))

(add-hook 'php-mode-hook 'php-hook)
(require 'php-mode)

I don't care to recall how many times I have had to resurrect this arcane formula over the years.

And php-mode is in portage for emacs, but not xemacs...

2007/11/15

What big documentation you have

I used kdoc to some effect previously. It was a good habit to get into.

doxygen is the generator of choice where I am at the moment.

The incantation I stumbled on
involves:
$ doxygen -g proj.dox
$ vi proj.dox
...
ALWAYS_DETAILED_SEC = YES
JAVADOC_AUTOBRIEF = YES
EXTRACT_ALL = YES
INPUT = x.h y.h ...
GENERATE_MAN = YES
...
$ doxygoen proj.dox


The html is ok and I like the man pages it spits out.

2007/11/14

Command Lines to Forget

Things I find useful to keep handy...

Installing CPAN modules somewhere other than in the system perl directories

perl Makefile.PL INSTALL_BASE=/home/me/perl
perl Makefile.PL PREFIX=/home/me/perl

Generating usable postscript from man pages

groff -man -Tps apage.3pm >apage.ps

Landscape pages from a2ps

a2ps --columns=1 -f 9 -r -o RESULTS.ps RESULTS.txt

Validate XML against an external DTD

xmllint --noout --postvalid --dtdvalid the.dtd the.xml

Extracting an rpm to the current directory

rpm2cpio foo.rpm | cpio --extract --verbose --preserve-modification-time --no-absolute-filenames --make-directories

2007/10/26

C99 or back to the future

Its almost 10yrs since I had to look at any significant C, and it was pleasant to find that C99 has added:
  1. for loop initialisers are supported
  2. declarations can be mixed with code
  3. there is a bool type
  4. the C++ // comment is supported
  5. and some weird array and macro stuff (variable length arrays are broken in gcc)
And C style casting was something that I tried very hard to forget.

2007/10/24

Large File Support in HP-UX

fsadm is the key to turning on large file support in a HP-UX filesystem. Then the fun begins making sure that compiler flags allow you at your >2GB goodness.

There is a reasonable discussion of the other steps in the Tru64 Transition document set.

2007/10/18

Soft-boiled egg cracking

Endianness is great make-work and telling the which orientation a box is at runtime is interesting (especially as some architectures are bi) - snippet derived from the IBM article:

int
main(int argc, char* argv[])
{
int i = 1;
char *p = (char *)&i;

if (p[0] == 1)
printf("little endian\n");
else
printf("big endian\n");

return 0;
}

Anyway, HP-UX on Itanium is big (as was/is PA-RISC), linux on Intel is little.

2007/10/15

Caching nameserver with ISC bind

Handy to do in the presence of dodgy local nameserver(s) - on gentoo:

# emerge bind
# vi /etc/bind/named.conf
...
//forward first; // uncomment to avoid going to the root nameservers
forwarders {
192.168.6.53; // local dodgy ns #1
192.168.5.53; // local dodgy ns #2
};
...
# vi /etc/resolv.conf
...
nameserver 127.0.0.1
# rc-config add named
# /etc/init.d/named start
# dig www.dilbert.com # <- note query time
# dig www.dilbert.com # <- note reduced query time
#