Friday, September 2, 2011

Ubuntu + iPhone: Upgrade/Restore

It's no secret. Ubuntu + iPhone is a pain in the ass! However, it just got a little less painful for me.

You see, the way I've been approaching this is to never plug my iPhone into my computer. If the two don't meet, there can't be any problems. Don't solve your problems. Get rid of them!

Unfortunately, I've been losing reception the last two weeks and it's been annoying me to no end. I called my service provider and they determined it's probably because I'm still on 3.1.3. Great. I need to upgrade my iPhone. iPhone, meet Ubuntu. Ubuntu, meet iPhone. Now PLEASE play nice.

Of course, that was too much to ask for. I installed VirtualBox and got Windows XP installed. I then added the iPhone as a USB connection in the settings. I then proceeded to plug in my iPhone. iTunes detects my iPhone. Yay! A small triumph. I decided to restore instead of upgrade. I wanted to start from scratch anyways.

After iTunes wiped out my data, it started to prepare for the restore. At which it hung. After a few minutes, it gave me a 1602 error. I tried everything I could think of: reboot iPhone, reboot VirtualBox, reboot Ubuntu, re-plug in iPhone, etc. The best I got out of all this was a different error: 1604. At this point, my iPhone is permanently in Recovery Mode and now, I couldn't even select the iPhone USB connection in VirtualBox.

I thought to myself, "Screw this. I'm fixing you even if it takes all night!" And so, I did. Thanks to this post.

Follow it. It works.

Here are the keypoints and some added tips from the comments.
  • Add yourself to both the vboxusers and audio groups.
  • Change the USB filter settings so that only Name and Vendor ID have values. DELETE EVERYTHING ELSE. It's not recommended. It's mandatory!

After all this, I was able to restore my iPhone without problems. Booyah!

Monday, August 29, 2011

Rails 3.0: RSpec 2 + Machinist + ActiveRecord

RSpec 2 usually cleans up after itself if you set config.use_transactional_fixtures to true. However, if you use Machinist 2, this isn't the case. Apparently Machinist likes to keep around a cached version to speed things up. This is bad when trying to run independent tests.

To prevent this from happening, add this to config/environments/test.rb.
Machinist.configure do |config|
  config.cache_objects = false
end

References

http://blog.angelbob.com/posts/315-RSpec-not-clearing-database-when-you-use-machinist---published-rails

Sunday, August 28, 2011

Rails 3.0: PostgreSQL

If you're starting fresh, getting a Rails application running on PostgreSQL can be rather involved.

Install PostgreSQL on Ubuntu.
sudo apt-get install postgresql libpq-dev pgadmin3 -y

Create a new Rails application with PostgreSQL.
rails new <project name> -d postgresql

If this is an old project, install the gem in Gemfile.
gem 'pg'

Create the PostgreSQL user. The username will be the same name as your project which can be found in config/database.yml.
sudo su postgres -c psql
# Enters the psql console.
create user "<username>" with [superuser] password "<password>";
# Outputs CREATE ROLE.
\q
The superuser keyword is optional but makes things easier in development.

If you get the error "FATAL: ident authentication failed", edit /etc/postgresql/8.4/main/pg_hba.conf.
local all all ident
to
local all all md5

Restart PostgreSQL.
sudo service postgresql restart

Create the development and test databases through the terminal.
createdb <project name>_development -U <username> -W
createdb <project name>_test -U <username> -W

References

http://olmonrails.wordpress.com/2008/08/12/switching-rails-to-postgresql/

Thursday, July 21, 2011

Ubuntu 11.04: Window Docking Shortcuts

I stumbled upon some new shortcuts in Natty Narwhal to dock a window in a certain position.

Try out Ctrl+Alt+<Number Pad Key>. This will dock your window according the position of the number in the number pad. Note that it doesn't work with the numbers along the top of the keyboard.

1: Bottom left corner
2: Bottom
3: Bottom right corner
4: Left
5: Middle (but not maximized)
6: Right
7: Top left corner
8: Top
9: Top right corner
0: Maximize

If you press the same number several times, it will change the size of the window.

I found this super handy when I needed to fit things inside my monitor, such as having 2 terminals side-by-side.

Try it out and let me know what you think down below in the comments!

Wednesday, July 13, 2011

Ubuntu 11.04: Redshift

Redshift is a program that changes the temperature of your monitor according to the time of day. It basically emulates sunset and encourages your body to sleep earlier. Something that I desperately need to do.

I recently upgraded to Ubuntu 11.04 Natty Narwhal, and was happy to find that Redshift had made it into the repositories! Unfortunately, after installing both the application and its GUI counterpart, it did not start.

I tried it in the terminal and to my dismay, I got the following:
> redshift
No clock applet was found.
Initialization of gnome-clock failed.
Trying next provider...
Latitude and longitude must be set.

So what's going on? Well, as of Ubuntu 11.04, Gnome is no longer the default. It's Unity. Hence, there is no gnome-clock.

Luckily, Ubuntu uses Redshift v1.6. In this version, a configuration file can be added! Just create the file ~/.config/redshift.conf with the following:
[redshift]
location-provider=manual

[manual]
lat=49.3
lon=123.06

After saving the file, you can now restart Redshift from the GUI.

Enjoy and sleep early!

Thursday, June 9, 2011

Logging Bootup/Startup Scripts

I was writing some startup scripts in /etc/init.d/ to be run during bootup. However, there was a problem and the scripts weren't running properly. Unfortunately, there were no logs anywhere.

System Wide Logging

I found a solution in Ubuntu which was to open up /etc/default/bootlogd and set the option to yes. You supposedly see the boot logs in /var/log/boot. However, I found it was writing to /var/log/boot.log. Sort of. I got partial output (about 6 lines). The file was never fully written to.

Script Specific Logging

I found a workaround. Instead of using a system wide log, use a script specific log. Add this to your script. It will log all output.
exec > /tmp/debug-my-script.txt 2>&1

References

Tuesday, June 7, 2011

Automatic Server Bootup on Power Failure

Imagine a power failure where your servers are running. Of course, they should be plugged into a UPS, but what if that goes down too? Your server will power off.

When the power comes back, your server will remain quiet unless you tell your servers to come back to life by themselves.

There are 2 things you must do in the BIOS to make this happen.

  1. Tell the server to bootup after a power failure. This is the AC Power Loss Restart option in the BIOS. This should be set to On.
  2. Ignore a missing keyboard. There is an area in the BIOS that handles halting on errors. It should be set so that it ignores keyboard errors. If this is not ignored, the server will wait for the user to press F1.