Monthly Archives: July 2002

Bookmarklet fun!Calling all Ma …

Bookmarklet fun!
Calling all Mailman administrators! Are you sick of continually clicking on “Discard”, “Discard”, “Discard” to rid your lists of all that spam? If you are then drag this link to your toolbar or bookmark it. When you go into Mailman simply click on that bookmark and it will auto-select the discard radio box.

* <a href="javascript:var i=0,j,D,E,F=document.forms,discard=2;while(i<=F.length){E=F[i].elements;for(j=0;j<e.length;j++){D=E[j];if(D.type=='radio'&&D.value==discard){D.checked=true;}}i++;}
“>Discard Mailman Spam *

If you’re using Mailman 2.0 or upwards then change the $discard variable to ’3′ because that version has an extra field.
update! You’ll have to remove the BR tag at the end of the bookmarklet for it to work. Not sure where it came from, could be blogger.

More phplib fun!We're using de …

More phplib fun!

We’re using default_auth on our site and thanks to some help I managed to make phplib play nicely with our template system. That is, until my boss tested it and discovered that if you enter an incorrect username/password the phplib loginform appears. Look around line 174 of auth.inc for the culprit.
After I was almost finished a long email to the phplib list I figured out what to do. If the user types in an incorrect username/password then log them in as “nobody”!
The fix to do that took all of 5 seconds and is below:

Edit local.inc, look for auth_validatelogin(), this is around line 146 of my local.inc, and modify those lines to look like the following:

if( $this->db->num_rows() )
{
    while($this->db->next_record())
    {   
        $uid = $this->db->f(“uid”);
        $this->auth["perm"]  = $this->db->f(“perms”);
        $this->auth["uname"] = $this->db->f(“username”);
    }
}
else
{
    // Log them in as “nobody”
    $this->auth["perm"]  = “”;
    $this->auth["uid"] = “nobody”;
    $uid = “nobody”;
}

When you try and login now with incorrect details the loginform will be printed again within the confines of your site templates and nobody will be the wiser as to the grief this caused you!

PostgreSQL has a feature calle …

PostgreSQL has a feature called MVCC or Multi-Version Concurrency Control. Here’s a simple example to show it in action. I think it’s like CVS for databases.

MVCC, or Multi-Version Concurrency Control, is the technology that PostgreSQL uses to avoid unnecessary locking. If you have ever used another SQL capable DBMS, such as MySQL or Access, you have probably noticed that there are times when a reader has to wait for access to information in the database. The waiting is caused by people who are writing to the database. In short, the reader is blocked by writers who are updating records.

By using MVCC, PostgreSQL avoids this problem entirely. MVCC is considered better than row-level locking because a reader is never blocked by a writer. Instead, PostgreSQL keeps track of all transactions performed by the database users. PostgreSQL is then able to manage the records without causing people to wait for records to become available.