Resizing Google Chrome’s file dialog on OS X Yosemite

There is a bug in Apple’s OS X Yosemite in which the file dialog boxes grow larger than the screen. However, it does not seem Apple are in a rush to fix this.

The workaround is different for each application but for Google Chrome you can temporary solve it by running the following commands.

defaults delete com.google.Chrome NSNavPanelExpandedSizeForSaveMode
defaults delete com.google.Chrome NSNavPanelExpandedSizeForOpenMode

The box will continue to grow each time you use it, so you will have to run these commands again every time the box gets too big again.

Synergy disappeared from Ubuntu desktop

If you’re using Synergy for mouse and keyboard sharing, you may find that it suddenly disappears from Ubuntu. It will show up as installed in the Software Centre, but you won’t be able to remove or reinstall it, and there will be no icon on the unity bar.

If you try running it from the command line using the following command.

synergys

You may get an error similar to the following.

no configuration file found

The easiest way to solve this is to download the .deb package from the Synergy website, then open up a terminal and install it from there.

cd /home/your-name/Downloads
sudo dpkg -i synergy-1.4.10-Linux-x86_64.deb

This will then reinstall it and you should then be able to find the programme listed in the dash home.

Gnome fails to start after switching Nvidia drivers on Ubuntu

If you’ve tried to switch to a different Nvidia graphics driver on Ubuntu and suddenly found that X / Gnome will no longer load and all you have is a command line, you can fix it by switching back to the original driver.

jockey-text -l
jockey-text -e xorg:nvidia_current

These commands will show you a list of drivers available, and then activate the standard Nvidia driver.

Selenium Cannot assign requested address

If you’re using BDD (Cucumber or Behat for example) with Selenium, you may find you occasionally get an error where the framework is unable to communicate with the Selenium server.

Failed to connect to 127.0.0.1: Cannot assign requested address

This seems to occur when there are two many requests going to Selenium. This can be alleviated be rewriting your tests to ensure you are now sending too many requests at once.

For example, if you’re using Behat/Mink, then avoid using the wait() function on the Session object, as this can cause excessive requests to be sent to Selenium.

Conditional tasks in Ant

If you’re using Ant build scripts, there is a good chance that you will want to do some tasks conditionally – for example, if you’re using CI you will want to run your unit tests every time some code is committed – but you might only want to regenerate documentation or update a stakeholders’ preview build every night.

There is a lot of talk about conditional tags, but all these really allow you to do is set even more variables. You can use if/then/else from Ant-Contrib but that involves adding extra libraries and complicating the issue.

Actually, it turns out it is really simple to set up conditional tasks in your build process. All you need to do is call the task, but in the task header use the if attribute.

For example, I have a build task which calls all the other tasks.

<target name="build" depends="clean,checkout,nightly,phpunit,documentation" />

Even though I’m running this every time, I’m calling the “nighty” task. Below shows how I define that.

<target name="nightly" if="${env.NIGHTLY}">

Finally, in my Jenkins CI install, I make the project a parameterised build, and add a boolean called NIGHTLY that defaults to false. I can then also trigger a build by cron that specifies the NIGHTLY parameter as true, so that when it runs on a night, it runs the additional tasks as well.

MacPorts mysql5-server not working on boot

If you’ve installed MacPorts’ mysql5-server, you may find that it doesn’t work after a restart.

This can be resolved by running the following commands to make sure you’ve killed off everything MySQL related.

sudo port unload mysql5-server
ps -ax | grep mysql
sudo kill 

Once you have done this, load it again.

sudo port load mysql5-server

Not it should be working. This is fine, but quickly gets very annoying every time you restart your computer! A common cause is that you have a MySQL sock file in your tmp directory. Removing this may allow it to start automatically.

cd /tmp
rm -f mysql.sock

Once removed, restart your computer and see if MySQL works first time – hopefully, it will.

Install an MSI from a user account

Sometimes you might want to install an MSI on your Windows system, without being logged in as an administrator. Normally, you would just right click and select “Run as Administrator” but this option is not available on MSIs.

Instead, right click on “Command Prompt” in the start menu, then select “Run as Administrator”. Once this is running, use the msiexec command to execute the MSI.

msiexec /i Filename.msi

This will then run the installer using administrative privileges.

Data missing from MySQL replication due to column mismatch

If you are running MySQL replication, you may find that the structure of a table is brought over, but not the data. You can troubleshoot this by logging into the slave MySQL and showing the status.

SHOW SLAVE STATUS \G;

You may find an error similar to the following.

Table definition on master and slave does not match: 
Column 1 size mismatch - master has size 150, example_db.test_table 
on slave has size 50. Master's column size should be <= the slave's column size.

This is usually caused because you are using different character sets. In the example above, the master is set to UTF8 (utf8_general_ci) while the slave database is set up in Latin1. You can fix this in two ways (and should probably do both).

First, to change the database, log into phpMyAdmin and go to the operations tab. Here you change it from the dropdown and then hit save.

Secondly, you should change the default charset in MySQL to be UTF8 (you could also change it to Latin1 if that is what your master is running but in this day and age, everything should really be running UTF8). You can do this by editing your my.cnf.

[mysqld]
default-character-set=utf8

After editing it, you will need to restart MySQL. Any databases created from then on will default to UTF8.

Installing Imagick on Ubuntu 12

To install Imagick, you would normally do this via PECL.

sudo pecl install imagick

However, when trying this on Ubuntu 12.04 LTS, you may get an error similar to the following.

checking ImageMagick MagickWand API configuration program...
configure: error: not found. Please provide a path to MagickWand-config or Wand-config program

You can resolve this by installing a few extra packages.

sudo apt-get install libmagickwand-dev libmagickcore-dev

Now try re-running the original command and it should be successful.