Archive for February 8th, 2006

Canada on Rails conference in Vancouver, Apr 13-14

Wednesday, February 8th, 2006


The
Canada on Rails
conference takes place Apr 13-14 in Vancouver.
Until I saw where it was I was thinking of going.
But Vancouver, well that’s a bit too far.
Maybe Ottawa, or Montréal; but not *Vancouver*.

:-)


Thanks to their page, I found out about a
Rails podcast.
I will have to listen and see what it’s like.

Right now I am trying to get Rails running under IIS 5, which is proving a challenge.
Fortunately there are a few pages
like this one
that help.

Clonus vs. “The Island”

Wednesday, February 8th, 2006

Okay, I’m a glutton for punishment. I went out and bought “Clonus (1979)” — rated 3.5/10 on IMDB and a Mystery Science Theatre 3000 victim, so I could compare it to “The Island (2005)”. It is true that some ideas have been taken from Clonus, however Clonus is barely a high-school film-class project. There is a crucial difference in the treatment of the clones, among many other things. “The Island (2005)” is a satirical movie with cloned pieces from many other movies. Clonus is nothing. I fell asleep during it. I will complete my suffering tonight.

Mail.app’s email address database

Wednesday, February 8th, 2006


Did you ever notice how Mac OS X’s Mail.app remembers a whole bunch of email addresses that are not in your Address Book?

Did you ever wonder where they were kept?

Wonder no more..


sqlite3 ~/Library/Mail/"Envelope Index" 'select address, comment from addresses'

Using SQLite‘s ‘.schema’ command, we get a table layout like this:


CREATE TABLE addresses (ROWID INTEGER PRIMARY KEY, address, comment, UNIQUE(address, comment));
CREATE TABLE attachments (ROWID INTEGER PRIMARY KEY, message_id INTEGER, name, type, UNIQUE(message_id, name));
CREATE TABLE mailboxes (ROWID INTEGER PRIMARY KEY, url UNIQUE);
CREATE TABLE messages (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, message_id, in_reply_to, remote_id INTEGER, sender INTEGER, subject_prefix, subject INTEGER, date_sent INTEGER, date_received INTEGER, date_last_viewed INTEGER, mailbox INTEGER, remote_mailbox INTEGER, original_mailbox INTEGER, flags INTEGER, read, flagged, size INTEGER, color, encoding, pad);
CREATE TABLE properties (ROWID INTEGER PRIMARY KEY, key, value, UNIQUE (key));
CREATE TABLE recipients (ROWID INTEGER PRIMARY KEY, message_id INTEGER, type, address_id INTEGER);
CREATE TABLE sqlite_sequence(name,seq);
CREATE TABLE subjects (ROWID INTEGER PRIMARY KEY, subject);
CREATE TABLE threads (ROWID INTEGER PRIMARY KEY, message_id INTEGER, reference, is_originator);
CREATE INDEX address_address_index ON addresses(address);
CREATE INDEX attachments_type_index ON attachments(type);
CREATE INDEX date_index ON messages(date_received);
CREATE INDEX date_last_viewed_index ON messages(date_last_viewed);
CREATE INDEX message_flagged_index ON messages(flagged);
CREATE INDEX message_mailbox_index ON messages(mailbox, date_received);
CREATE INDEX message_message_id_index ON messages(message_id);
CREATE INDEX message_read_index ON messages(read);
CREATE INDEX message_remote_mailbox_index ON messages(remote_mailbox, remote_id);
CREATE INDEX message_sender_index ON messages(sender);
CREATE INDEX recipients_address_index ON recipients(address_id);
CREATE INDEX recipients_message_id_index ON recipients(message_id);
CREATE INDEX references_message_id_index ON threads(message_id);
CREATE INDEX references_reference_index ON threads(reference);
CREATE INDEX subject_index ON messages(subject);
CREATE INDEX subject_subject_index ON subjects(subject);
CREATE TRIGGER after_delete_message AFTER DELETE ON messages BEGIN DELETE FROM threads WHERE threads.message_id == OLD.ROWID; DELETE FROM attachments WHERE attachments.message_id == OLD.ROWID; DELETE FROM recipients WHERE recipients.message_id == OLD.ROWID; DELETE FROM subjects WHERE ROWID = OLD.subject AND (SELECT COUNT() FROM messages WHERE subject = OLD.subject) = 0; DELETE FROM addresses WHERE ROWID = OLD.sender AND (SELECT COUNT() FROM messages WHERE sender = OLD.sender) + (SELECT COUNT() FROM recipients WHERE address_id = OLD.sender) = 0; END;

Hm, that last line is pretty long and it has ‘;’s in it.
I wonder if it has to be all one line or not?
Ah well.

I’m sure there’s much more information to be mined from this.
No time to poke about right now though..