Jan 30 2007

Windows Vista

Tag: LifeAlex @ 12:09 am

It makes me ROFL.

EOT


Jan 26 2007

External Storage

Tag: LifeAlex @ 5:18 pm

Pleiages Taurus Dual-Bay EnclosureSunday night I bit the bullet and bought a new hard-drive enclosure online. The enclosure I got is a Pleiages Taurus 3.5″ Dual-Bay Enclosure with built-in RAID0 (Stripe and Span) support. It hold 2 x SATA II hard-drives which I purchased from Tom, both 320GB Seagate drives and now I have a 600GB Firewire 800/400/USB2 external hard-drive for my storage pleasure.

It looks awesome, like a Mac Pro front, has the same power button as my laptop and looks damn hot sitting next to it. I’m transferring all my data from my 120GB External which I’m selling to Aimee. For some reason though the transfer is going unbearably slow. I have about 90GB to transfer, one HDD in the USB2 port, the double enclosure, Striped RAID in a Firewire800 port and it is transferring at only 8MB/sec which is pitiful.

Ah well, I guess I can live with it, only a few hours left now anyway.

EDIT It turns out the older hard-drive was only giving the data out at 8MB/sec which is annoying.


Jan 26 2007

Fall Out Boy Concert

Tag: Life and MusicAlex @ 8:25 am

Looks as if the tickets for the Fall Out Boy Concert at the start of March are going to become hard to get soon.

Fall Out Boy - Sold out ticketsThe mezzanine floor where Aimee and I usually grab tickets sold out during the presale period and now the stalls at the back of the bottom floor have standing room only. I managed to get Grand Circle tickets (at the top) yesterday from the site using the presale password but I can’t imagine those tickets lasting very long as public sales started this morning at 9am.


Jan 25 2007

Productivity++

Tag: Apple and Web DesignAlex @ 9:22 pm

This afternoon, Tom got me to check out a SIMBL plug-in named megazoomer. After upgrading my version of SIMBL and dropping the megazoomer bundle into its place in my Library folder, each Cocoa program I started from then on had fullscreen capability.

With the default key combination that seems borrowed from Windows ( + - similar to Alt + Enter which is full-screen/window mode toggle for apps on Windows) it sends the Application full screen.

The big deal for me was that it worked multi-monitor flawlessly even allowing 2 windows to be full screen on different monitors creating an uninterrupted workflow between the two. Now I can set up a text editor on one screen and Safari on the other at work and not have any distractions.


Jan 15 2007

PHP4, Constructors, $this and Output Buffering

Tag: Web DesignAlex @ 1:56 pm

Just spent half an hour trying to figure out a very random bug in a PHP4 application I'm developing at the moment. I'm using an MVC design pattern and in the constructor for the View object I wanted the class to set itself up to capture all output using output buffering. I've used this style in a couple of sites now and once it was all figured out, it worked fine but this time I was doing one subtle thing differently.

This time around I was using the following code:

PHP:
  1. class viewXHTML
  2. {
  3.         function viewXHTML($model)
  4.         {
  5.             if ($model === null)
  6.                 return;
  7.  
  8.             $this->model = $model;
  9.  
  10.             ob_start(array(&$this, 'output'));
  11.         }
  12.  
  13.         function output($text)
  14.         {
  15.             []
  16.         }
  17. []

Which sets the model to an instance variable and provides the output buffering function a callback to the output function of this object. This works fine and dandy, when the page is done, the output function gets called with the parameter being all output that was sent using echo and print statements. The problem is only visible when you want to access instance variables of your object within that function.

Theory One:

The output function was being called on a copy of the original object. Problem was that some of the instance variables were set but the ones set after the constructor weren't. Turns out that the $this variable you get given in the constructor is a special object which you can't pass by reference, only by value.

This was all fixed by calling a bind method after the constructor returned so the code is now similar to:

PHP:
  1. class viewXHTML
  2. {
  3.         function viewXHTML($model)
  4.         {
  5.             if ($model === null)
  6.                 return;
  7.  
  8.             $this->model = $model;
  9.         }
  10.  
  11.         function bindOutput()
  12.         {
  13.             ob_start(array(&$this, 'output'));
  14.         }
  15.  
  16.         function output($text)
  17.         {
  18.             []
  19.         }
  20. []

The bindOutput function is now called straight after the constructor in my bootstrap code.

Anyway, this mildly reiterates to me that I really shouldn't be pushing PHP4 to do things that I should be using Ruby, maybe Python or at very least PHP5 to do.

This was in PHP v4.4.1.

edit: typos for the win
edit2: added syntax highlight plugin


Jan 10 2007

OMFG Kernel Panic!

Tag: Apple, Computers and LifeAlex @ 9:21 pm

I rocked around to Tom's place this evening to find his flatmate Jo's iMac G5 Kernel Panicing on boot. So, putting on the tech hat we tried Target Disk mode (successful at accessing the drive) and resetting the NVRAM didn't do anything so we tried to figure out what was causing it all, anyway, so we ended up in Single User Mode, force fsck'd the hard-drive which was showing tons of journal problems. Fixed a ton of those, it wasn't able to fix everything though, booted and bingo.

Long story short it was possibly the combination of transferring 40GB of files to the harddrive over Samba filling the HDD to 1GB free and then playing a movie over said Samba connection. These are the dying words in one of the coolest Crash Logs from the Kernel I've seen:

Jan 10 20:29:31 localhost kernel: netsmb_dev: loaded
Jan 10 20:42:16 localhost kernel: smb_iod_sendrq: TRAN_SEND returned fatal error 57
Jan 10 20:43:06 localhost crashdump: Unable to determine CPSProcessSerNum pid: 413 name: mplayer
Jan 10 20:43:06 localhost crashdump: Started writing crash report to: /Users/Jo/Library/Logs/CrashReporter/mplayer.crash.log
Jan 10 20:43:06 localhost crashdump: Finished writing crash report to: /Users/Jo/Library/Logs/CrashReporter/mplayer.crash.log
Jan 10 20:44:39 localhost diskarbitrationd[85]: disk1s2    hfs      651C7F29-1350-3F82-A747-FFEE52A28818 MPlayer                 [not mounted]
Jan 10 20:44:39 localhost diskarbitrationd[85]: disk1s2    hfs      651C7F29-1350-3F82-A747-FFEE52A28818 MPlayer                 /Volumes/MPlayer
Jan 10 20:44:43 localhost diskarbitrationd[85]: disk2s2    hfs      C5BA4CED-7491-32B0-A79A-5C8D9F4FC679 MPlayerOSX_8r5          [not mounted]
Jan 10 20:44:44 localhost diskarbitrationd[85]: disk2s2    hfs      C5BA4CED-7491-32B0-A79A-5C8D9F4FC679 MPlayerOSX_8r5          /Volumes/MPlayerOSX_8r5
Jan 10 20:44:53 localhost kernel: jnl: flushing fs disk buffer returned 0xd
Jan 10 20:44:53 localhost kernel: disk1s2: device is write locked.
Jan 10 20:44:53 localhost kernel: jnl: do_jnl_io: strategy err 0xd
Jan 10 20:44:53 localhost kernel: jnl: write_journal_header: error writing the journal header!
Jan 10 20:46:27 localhost kernel: hfs: WARNING - blocks on volume Macintosh HD not allocated!