Helpful Hints – Tabbing to form fields in Firefox
Ever wish you could press in Firefox and get focus on the first form field of the page, ignoring all the links? Or maybe you want to tab between all form elements with the exception of text fields? Or perhaps you want tabbing behaviour that is some combination of the above?
The developers behind Firefox realized that people would want tab behaviour conforming to their personal keyboard accessibility requirements, and to this end they’ve included a very handy means of getting the behaviour you want.
Enter the accessibility.tabfocus configuration. This property allows you to specify an integer corresponding to a particular tab focusing behaviour.
From the Mozillazine Knowledgebase, the possible values for this property are:
1 – Give focus to text fields only. (The default in OS X.)
2 – Give focus to all form elements except text fields.
4 – Give focus to links (and linked images) only.
The value for accessibility.tabfocus can also be an integer like 7 (which is the default value). 7 (1+2+4) implies that Firefox will focus all field elements and links as well; its effect is the behaviour of 1, 2, and 4, combined.
You can read up a bit more to understand the different values.
For those who have forgotten how to manipulate the advanced configuration preferences in Firefox, you can do so as follows:
Open a new tab and enter “about:config” into the address bar:

Firefox's about:config disclaimer.
Accept the disclaimer that you may break Firefox if you don’t know what you’re doing. I’d advise the reader to be careful about what they do beyond this point!
Enter “tabfocus” into the Filter field to find the accessibility.tabfocus property:

The 'accessibility.tabfocus' property on the about:config page.
Now just double click the property to be prompted for a new value.
Personally, I would like to tab through all form fields while ignoring links on the page. To achieve this outcome, I used a value of 3 (1 + 2), a combination of tabbing through text fields and tabbing through other form fields.
I hope this Helpful Hint is of use to those of you who are big on keyboard accessibility.
Riding Tokyo
Planning to travel Tokyo’s vast Metro system? You’d better be packing this awesome colour map of the system!
(Found via: http://oduinn.com/2009/03/18/directions-to-hombu-dojo-tokyo/)
MySQL: “Access denied for user ‘debian-sys-maint’@'localhost’”
For all you Ubuntu/MySQL developers out there, have you ever seen the following?
neo@thematrix:~$ sudo /etc/init.d/mysql restart
* Stopping MySQL database server mysqld [fail]
* Starting MySQL database server mysqld [ OK ]
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'So, what is this “debian-sys-maint” user? Well, this MySQL user is created for the Ubuntu to be able to start/stop the database and to carry out other maintenance operations.
Sounds well enough, but then why do I keep running into the “access denied” problem for this user? Well, the issue is that with each update to MySQL, the user’s password in the database is overwritten. Ubuntu seems to go to the file /etc/mysql/debian.cnf in order to find this user’s password, but obviously the password is out of sync after the update has been applied.
As a result of this behaviour, I’ll run into the “access denied” problem every so often. Thankfully, the solution to this issue is fairly simple.
First, list the contents of the /etc/mysql/debian.cnf file:
neo@thematrix:~$ sudo cat /etc/mysql/debian.cnfThe contents of the file should look something like the following:
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = debian-sys-maint
password = n4aSHUP04s1J32X5
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
user = debian-sys-maint
password = n4aSHUP04s1J32X5
socket = /var/run/mysqld/mysqld.sock
basedir = /usrSee that password? That’s what we’re looking for!
Next, we want to issue a command to MySQL that tells it to grant the debian-sys-maint user all necessary privileges using the new password.
Login to your mysql server using your root account and the root password you had originally set:
neo@thematrix:~$ mysql -u root -p <password>Issue the GRANT command now to grant those permissions:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'n4aSHUP04s1J32X5';Voila! If you restart MySQL, you’ll find that you should no longer be getting the “access denied” error message.
neo@thematrix:~$ sudo /etc/init.d/mysql restart
* Stopping MySQL database server mysqld [ OK ]
* Starting MySQL database server mysqld [ OK ]
* Checking for corrupt, not cleanly closed and upgrade needing tables.Bear in mind, because we just switched the password, and the change hasn’t been affected yet, you may need to kill the MySQL server processes in order to get MySQL to shut down at all.
dpkg problems relating to ‘cups’ in Ubuntu
Firefox 3.0.5, Mozilla’s latest security fix for the venerable browser has recently been released. Tonight it was pushed out to Ubuntu 8.10 users, and so I promptly updated my Ubuntu installation. Noticing that there were other updates as well, I applied them all.
Unfortunately, dpkg wasn’t able to complete the update of all selected packages. I wanted to review the problem, so from the command-line I brought up aptitude via:
sudo aptitude
Aptitude was nice enough to let me know that I needed to run the following command to correct the problem:
sudo dpkg --configure -a
… unfortunately it didn’t work:
$ sudo dpkg --configure -a
dpkg: ../../src/packages.c:221: process_queue: Assertion `dependtry <= 4' failed.
Aborted
I decided to go back into aptitude to see if any packages would be selected there for installation due to a failure to install previously. Sure enough, when I pressed ‘g’ to process all actions, it attempted to install cups, cups-bsd, and cups-client, but failed:
dpkg: error processing cups (--configure):
package cups is not ready for configuration
cannot configure (current status `triggers-awaited')
dpkg: error processing cups-client (--configure):
package cups-client is not ready for configuration
cannot configure (current status `triggers-awaited')
dpkg: ../../src/packages.c:221: process_queue: Assertion `dependtry <= 4' failed.
E: Sub-process /usr/bin/dpkg exited unexpectedly
A package failed to install. Trying to recover:
dpkg: ../../src/packages.c:221: process_queue: Assertion `dependtry <= 4' failed.
Aborted
These were the packages that had failed to install successfully earlier.
What could I do to get around this? Aptitude wasn’t able to handle it for me, and nor could dpkg process the configuration of these packages. After some futzing around, I even tried downgrading the packages in aptitude, but the same dpkg errors came up:
Preconfiguring packages ...
Selecting previously deselected package cups.
(Reading database ... 148514 files and directories currently installed.)
Preparing to replace cups 1.3.9-2ubuntu4 (using .../cups_1.3.9-2_amd64.deb) ...
* Stopping Common Unix Printing System: cupsd [ OK ]
Unpacking replacement cups ...
Selecting previously deselected package cups-bsd.
Preparing to replace cups-bsd 1.3.9-2ubuntu4 (using .../cups-bsd_1.3.9-2_amd64.deb) ...
Unpacking replacement cups-bsd ...
Selecting previously deselected package cups-client.
Preparing to replace cups-client 1.3.9-2ubuntu4 (using .../cups-client_1.3.9-2_amd64.deb) ...
Unpacking replacement cups-client ...
Processing triggers for doc-base ...
Processing 1 changed doc-base file(s)...
Registering documents with scrollkeeper...
Processing triggers for man-db ...
Processing triggers for ufw ...
ERROR: Couldn't stat '/etc/default/ufw'
dpkg: subprocess post-installation script returned error exit status 1
E: Sub-process /usr/bin/dpkg returned an error code (2)
A package failed to install. Trying to recover:
Setting up cups-client (1.3.9-2) ...
Setting up ufw (0.23.2) ...
Setting up cups (1.3.9-2) ...
Installing new version of config file /etc/apparmor.d/usr.sbin.cupsd ...
Reloading AppArmor profiles : done.
* Starting Common Unix Printing System: cupsd [ OK ]
dpkg: ../../src/packages.c:221: process_queue: Assertion `dependtry <= 4' failed.
Aborted
Press return to continue.
But wait, what’s that error?
Processing triggers for ufw ...
ERROR: Couldn't stat '/etc/default/ufw'
dpkg: subprocess post-installation script returned error exit status 1
E: Sub-process /usr/bin/dpkg returned an error code (2)
A-hah! It looked like the cups installation needed to process some triggers for the package ufw, and this failed. ufw is Uncomplicated FireWall package for Ubuntu, but it’s a package I’m not using.
So, maybe if I were to uninstall ufw, the cups packages would successfully install?
sudo aptitude purge ufw
If you want to keep the ufw configuration files, you can try this instead:
sudo aptitude remove ufw
Removing ufw may display some cups errors, but ufw should still successfully uninstall.
At this point, the resolution that aptitude first suggested worked as well:
sudo dpkg --configure -a
And now to install the latest version of cups instead of the downgraded versions I attempted to install.
Preconfiguring packages ...
(Reading database ... 148481 files and directories currently installed.)
Preparing to replace cups 1.3.9-2 (using .../cups_1.3.9-2ubuntu4_amd64.deb) ...
* Stopping Common Unix Printing System: cupsd [ OK ]
Unpacking replacement cups ...
Preparing to replace cups-bsd 1.3.9-2 (using .../cups-bsd_1.3.9-2ubuntu4_amd64.deb) ...
Unpacking replacement cups-bsd ...
Preparing to replace cups-client 1.3.9-2 (using .../cups-client_1.3.9-2ubuntu4_amd64.deb) ...
Unpacking replacement cups-client ...
Processing triggers for doc-base ...
Processing 1 changed doc-base file(s)...
Registering documents with scrollkeeper...
Processing triggers for man-db ...
Setting up cups (1.3.9-2ubuntu4) ...
Installing new version of config file /etc/apparmor.d/usr.sbin.cupsd ...
Reloading AppArmor profiles : done.
* Starting Common Unix Printing System: cupsd [ OK ]
Setting up cups-client (1.3.9-2ubuntu4) ...
Setting up cups-bsd (1.3.9-2ubuntu4) ...
Press return to continue.
Presto! It worked!
At this point I reinstalled ufw and all was as it should be.
Along the way I was also able to find a cool way of listing packages on one’s system that are not completely installed. From a command line terminal, you can enter the following:
sudo dpkg -l | grep -v ^ii
The first portion of this command, sudo dpkg -l, will list all the packages on your system. The second portion, grep -v ^ii, says, ’search through that list of packages for any line that does not start with “ii“‘. The letters “ii” at the beginning of a line of the package listing indicates the package is successfully installed.
Quite an eventful application of system updates! I love Ubuntu for its simplicity, and the fact that upgrades and installations are usually hassle-free. But, even when there’s a problem, the power inherent in Linux allows you to quickly and effectively resolve the issue.
NB: Sorry about the poor formatting of this post, WordPress is simply not co-operating.
Star Trek beams onto Apple Movie Trailers
May 8th, 2009, a date which previously had no meaning to me, is now a date marked on my calendar.
What’s up on that auspicious day? Star Trek is up, that’s what:
