How to allow link-local access to Apache when using IPv6

Some of my Apache pages are served only to clients on the local network. Using IPv4, it was easy to Allow from the local subnet. Nowadays, most machines are autoconfigured for IPv6 as well as IPv6, and local traffic seems to go over IPv6 (entries in my Apache log file prove that). Not being up-to-date on IPv6 addressing schemes, I spent some time looking for the solution. The default Apache config file already contains references to ip6-localhost (resolves to ::1). It appears that the link-local unicast addresses can be masked using fe80::/10 (see Internet Protocol Version 6 Address Space).

Hence the syntax to allow from the local network only apache2.conf is:

    Allow from fe80::/10

JavaScript variable scope inside a loop

I got stung because I forgot (once again) that JavaScript does not have block scope. Doh! So I hope writing this down (even if it is embarrassing) will help me remember for next time.

A loop such as this:
for (i = 0; i < 10; i++) {
var x;
if (Math.random() > .5) x = i;
alert(x);
}
will not yield occasional empty x values, as one might expect. In JavaScript, having a variable declaration within the for-loop block does not reset the variable's value, as it would in languages that do have block scope.


Transparent PNGs in IE6 (when does it end!!!)

When transparent PNGs look ugly in IE6, your first step should be to use the AlphaImageLoader Filter, or use one of the ready-made JavaScript snippets, like the excellent pngfix.js script.  But those scripts may be complicated to use, and if you have a lot of images (e.g. icons in a list) the filters will slow down your page.  Then you can use the GIMP to make a transparent PNG with background color:
  1. Open the original image.
  2. Set a proper background colour as oposed to it being transparent. It is best to make this colour similar to the background colour of the website to generate the antialiasing in your image borders in order for the image to blend nicely.
  3. Flatten the image (Image - Flatten image).
  4. Add an alpha channel (Layer - Transparency - Add alpha channel).
  5. Select the background color (Selection - By color).
  6. Clear the background colour (Edit - Clear).
  7. Convert the image to indexed color (Image - Mode - Indexed color).
  8. Save the image to the final PNG file (File - Save as) and remember to check: Save color values from transparent pixels.
Thank you Matthew!



P.S. And yes, there are still people out there using IE6.