Finally a use for Netscape!

August 14, 2005 by RyanC · Comments Off
Filed under: Macs 

All of these were easily copied across using a cross over cable, no problems there - but shock horror, my emails were another story.

Microsoft Outlook Express stores emails in a non-standard format which can't be read by Apple Mail - disaster!

It was then that I remembered once installing Netscape to test compatibility of my web site. Netscape had very nicely offered to import the Internet and email settings from Internet Explorer and Outlook Express.

Checking up on this I found that when it does this it stores the resulting emails in a standard .mbox format - which can then be read by any sensible email client. Wohoo!

So the basic steps to import your emails from Outlook Express on Windows to Apple Mail on the Mac:

  • Install Netscape on the Windows box.
  • Allow it to import from your Outlook Express.
  • Copy the newly created .mbox files to your Mac.
  • Show Apple Mail where it can find them when it asks.

That’s it – yay!

Ooo and make sure you remember to uninstall Netscape afterwards or your PC might become contaminated or something hehehe.

Apple, Mac, Outlook Express, Apple Mail, email, switching, OS]]>

Wow, Wil Wheaton

August 14, 2005 by Oliver · Comments Off
Filed under: Personal 

Wil Wheaton’s blog. Playing possibly the most annoying Star Trek character of all time doesn’t seem to have been a problem after all.

A quick glance around at the stuff on the page suggests a person far more web aware than I imagined: Firefox supporter, Onion reader, blogads user…

I might just have to buy that book of his (a review of which on Amazon reveals I’m rather late in discovering his blog).

Wil Wheaton, Star Trek, Wesley Crusher]]>

Target denied

August 14, 2005 by Oliver · Comments Off
Filed under: Javascript 

The target attribute of a tags is no longer allowed in HTML (HTML 4.01 Strict and XHTML 1.0 Strict).

This is technically corect since HTML is for marking structure of a document and opening things in different windows is a user-interface issue and hence is within the domain of javascript.

What's really odd though is the suggested workaround. Mark tags that need to open in a different frame or window somehow (rel="external" for instance) and then use a javascript function to give all those links a target attribute.

Seems silly to me.

HTML, XHTML, standards, Javascript, ECMAScript, DOM]]>

A Post!

August 14, 2005 by RyanC · Comments Off
Filed under: Personal 

pointless]]>

Progress in Finnish

August 14, 2005 by Oliver · Comments Off
Filed under: Languages 

Pimsleur, Finnish]]>

Start semantics simply

August 12, 2005 by Oliver · Comments Off
Filed under: Web Programming 

But there are much simpler good practices that need to be encouraged regarding semantic markup first.

This blog post illustrates a wonderful misuse of HTML and offers an important explanation about why it is a misuse (or at least a decidely-less-useful use)
semantic web, HTML, XHTML, microformats]]>

Making progress in German

August 12, 2005 by Oliver · Comments Off
Filed under: Languages 

"She will suggest a series of times to you. Refuse each time in turn and suggest an hour later."

Another funny thing I noticed looking at the covers for the rest of the course, the three levels are "Beginner", "Intermediate" but not "Advanced". The third level is "Intermediate Plus". Subtle way of saying even if you complete the course you have a way to go yet.

Least favourite German fragment so far: "jetzt nichts".

German, Pimsleur]]>

Bad DOM

August 11, 2005 by Oliver · Comments Off
Filed under: Javascript, PHP 

Dom Scripting Taskforce says adding non-standard markup to page using Javascript is OK. Well I wouldn’t call it a “best practice” but from a personal point of view I can’t see a practical disadvantage.

For me the problems with bad markup come from trying to parse it automatically (using PHP’s SimpleXML object for instance). Since the javascript will basically only affect the page a human sees and not a machine, many of the disadvantages of non-standard markup fade away.

PHP, programming, SimpleXML, XML, XHTML, HTML, Javascript]]>

How I wrote the list thingy in Javascript

August 11, 2005 by Oliver · Comments Off
Filed under: Javascript 

First the source code:

function setUp() {
    var myULs = document.getElementById(‘tree’).getElementsByTagName(‘ul’);
    for (var i = 1; i < myULs.length; i++) {
        var toggleObject = document.createElement('a');
        toggleObject.innerHTML = '+ ';
        myULs[i].parentNode.insertBefore(toggleObject, myULs[i].parentNode.firstChild);
        toggleObject.onclick = eventCaller(toggleObject, myULs[i]);
    }
}

function eventCaller(toggleButton, list) {
    list.style.display = 'none';
    return function() {
        if (list.style.display == 'none') {
            list.style.display = '';
            toggleButton.innerHTML = '- ';
        } else {
            list.style.display = 'none';
            toggleButton.innerHTML = '+ ';
        }
    }
}

onload = setUp;

First, how function setUp works.

var myULs = document.getElementById('tree').getElementsByTagName('ul');

To use the code you need an element with the id of “tree” surrounding the list you want it to work. This code just gets a collection of ul tags with in the id="tree" tag. This collection is looped through using a for loop.


var toggleObject = document.createElement('a');
toggleObject.innerHTML = '+ ';

This creates a new anchor a element and sets the text inside to a plus sign. I probably shouldn’t use innerHTML but it makes things simpler.

myULs[i].parentNode.insertBefore(toggleObject, myULs[i].parentNode.firstChild);

This looks messy but is really simple. someNode.insertBefore adds a node to someNode before some child of someNode. In this case we want our newly created anchor tag to be the first child of the ul‘s parent. (i.e. place the link before the ul and before any text as well).

toggleObject.onclick = eventCaller(toggleObject, myULs[i]);

The onclick event is then set to some function. It is important to realise the onclick is not set to eventCaller but the function eventCaller returns.

function eventCaller(toggleButton, list)

The function is called with two arguments: a list and the link before it that will toggle the display of the list.

list.style.display = 'none';

First we just set the list to not display by default.

Then the clever bit, we return a function.

What the function does is simple, it toggles the display style attribute of the list and changes the “button” between plus and minus signs.

But the function is different for each list. Because the function is declared within another function, this new anonymous function still has the scope of the function that created it. This means each copy of this new function has different list and toggleButton variables.

Javascript, ECMAScript, closure, DOM, programming, tutorial

]]>

Cunning closures

August 11, 2005 by Oliver · Comments Off
Filed under: Javascript 

javascript file with a script tag (obviously). Then put a span element around the list you want to be undisplayable that has the class tree (in fact it can be element with the correct class).

The clever bit (for me at least) is that it uses a closure to do this. Explaining what a closure is is difficult to do quickly but it involves a function returning a function that is altered by the values passed to the function (the first one).

It’s being used right now to in my sidebar to display “pages”.

Javascript, programming, closure, scripts, ECMAScript]]>

« Previous PageNext Page »