firewing1's blog

Adding support for the GD graphic library on OS X 10.5 Leopard

I play around with a number of Drupal locally and today I finally caved in and decided to add GD support to OS X's webserver. Although I've heard great things about the Entropy PHP packages, I did not want to replace OS X's integrated php installation so my remaining option was to grab a copy of PHP 5.2.8 (the version bundled with Leopard) and compile the module myself. I know there must be quite a few other people who are looking do to the same thing, so I here's a step-by-step guide on how I did it:

(Please note that I assume you have Xcode installed, and that all downloads are saved in the "Downloads" folder in your home. If this is not the case, please move the downloads there first before executing any of the listed commands)

  1. Visit the libpng and libjpeg homepages and download the latest release available for both. As of writing, the most recent releases are libjpeg 7 and libpng 1.2.37 - the commands below will need to be adjusted slightly if you are compiling a more recent version.
  2. Download PHP 5.2.8, available here
  3. Extract PHP and prepare to compile libpng and libjpeg statically:
    cd ~/Downloads
    tar xfj php-5.2.8.tar.bz2
    cd php-5.2.8/ext/gd
    mv ~/Downloads/libpng-1.2.37.tar.gz ~/Downloads/jpegsrc.v7.tar.gz .
  4. Compile libpng without shared libraries:
    tar xfz libpng-1.2.37.tar.gz && cd libpng-1.2.37
    ./configure --disable-shared --enable-static
    make && make install DESTDIR=`pwd`/localinstall
    cd ../
  5. Compile libjpeg without shared libraries:
    tar xfz jpegsrc.v7.tar.gz && cd jpeg-7
    cp /usr/share/libtool/config.* .
    ./configure --disable-shared --enable-static
    make && make install DESTDIR=`pwd`/localinstall
    cd ../
  6. Compile the GD extension and point to our newly compiled libpng and libjpeg static libraries:
    cd ~/Downloads/php-5.2.8/ext/gd
    phpize
    MACOSX_DEPLOYMENT_TARGET=10.5 \
    CFLAGS="-O3 -fno-common -arch i686" \
    LDFLAGS="-O3 -arch i686" \
    CXXFLAGS="-O3 -fno-common -arch i686" \
    ./configure --with-zlib-dir=/usr \
    --with-png-dir=`pwd`/libpng-1.2.37/localinstall/usr/local \
    --with-jpeg-dir=`pwd`/jpeg-7/localinstall/usr/local \
    --with-freetype-dir=/usr/X11R6 \
    --with-xpm-dir=/usr/X11R6
    make
    sudo make install
  7. Copy /private/etc/php.ini.default to /private/etc/php.ini
    • Change the default 'extension_dir' (./) to /usr/lib/php/extensions/no-debug-non-zts-20060613/
    • Add extension=gd.so a bit below extension_dir to enable the gd extension
  8. sudo nano /System/Library/LaunchDaemons/org.apache.httpd.plist
    Change the part between <array> and </array> so that it looks like this:
    <array>
    <string>/usr/bin/arch</string>
    <string>-i386</string>
            <string>/usr/sbin/httpd</string>
            <string>-D</string>
            <string>FOREGROUND</string>
    </array>

    This will ensure that Apache starts in 32 bit mode, which is needed as the gd extension was compiled for i686.
  9. That's all! After a reboot (or toggle Web sharing in the System Preferences), everything should be working. phpinfo() should now confirm that GD library is indeed loaded. If it isn't or if apache refuses to start, try opening Console to check /var/log/apache2/error_log for some useful pointers as to what's wrong.

    Helpful source I used for writing this tutorial: HOWTO: Install Habari on Mac OS X Leopard, From Scratch

Rating: 

Comments

I've always been hesitant to enable comments on my posts due to spambot activity, but I'm hoping Drupal is a bit better than Joomla at fending spammers off... I'm going to enable (moderated) comments for a week and see how it goes. Feel free to leave a comment on any of my articles!

Rating: 

Getting MobileMe to work with any email address

A friend of mine recently bought a MobileMe subscription and I was pretty curious about what it would offer as I've seen the demos from Apple's WWDC keynote. After experimenting with it for a bit while I was setting it up on my friend's home computers, I found that it is actually a very worthwhile purchase for for both home and small business users. The one downside to it was that Apple does not allow the use a non- @me.com email address. Luckily, after about an hour of playing I was able to setup a system which enabled Thunderbird and other email clients to use the MobileMe email features with non- @me.com email address.

The problem is Apple's outgoing mail (SMTP) servers, which reset the From: header in all messages. No matter how you configure your client, all outgoing mail shows From: myuser@me.com. By avoiding the Apple's SMTP servers, you can bypass this problem and send mail as if it was sent from your previous address (for example yourname@yourdomain.com). Here are the steps required to set it up:

  1. Forward all incoming mail to your MobileMe address

    CPanel and many other hosting control panels will support forwarding all mail from one address to another. In CPanel, click on "Mail Forwarders" and forward all mail from your previous address to youruser@mobileme.com. If your hosting provides a different control panel and you can't find the mail forwarders option, try contacting your hosting's technical support team for more information.

  2. Configure your email client (incoming mail)

    In order to receive new messages, you will need to create a new IMAP account. Email clients such as Outlook, Outlook Express, Thunderbird, Entourage and Apple Mail all support IMAP. Apple has a step-by-step guide for setting up each of the programs listed above. If you are using another program, you'll need to enter the following settings manually:

    • Account type: IMAP
    • Incoming server: mail.me.com
    • Incoming username: Your MobileMe account name (the part before "@me.com")
  3. Configure your email client (outgoing mail)

    Instead of entering the outgoing (SMTP) details as listed on the Apple tutorial, enter the information for your hosting that you previously used instead. For example, your outgoing server may be mail.yourdomain.com or smtp.yourdomain.com.

  4. (Optional) Create identities

    If you are forwarding many custom email addresses to your MobileMe account, you may want to take the time to use the Identity feature of your mail client so that you can reply mail as if writing form any of the many custom emails instead of just one (different clients may offer the same feature but under a different name). In Thunderbird, you can manage your Identities by selecting Tools > Account Settings... > Manage Identities

The only trouble you may encounter with this method is that sending mail from the MobileMe Web interface will still show @me.com, as the webmail passes through Apple's SMTP servers.

Note: This procedure works for iPods too! If you configure your iPod's incoming and outgoing mail as shown above, you should also be able to send mail from your custom address as well.

Rating: 

iTunes 8.2.0

Apple Software Update just popped up with an update for QuickTime and iTunes... The changelog indicates that it has added support for iPhones OS 3.0. I am installing it now, back soon with more info.

Edit: Okay, so apart from bug fixes nothing much seems to have changed for now - iPhones OS 3.0 isn't available immediately.

Rating: 

Troubleshooting the MySQL Server 5.1 service on Windows Vista

Although some users have reported success, most installations I've tried of MySQL 5.1 on Vista have failed, even on fresh Vista installs. The first problem appears at the end of the service instance configuration. All appears to be well, however the server refuses to start with Could not start MySQL service or Could not start the service MySQL. Error: 0.

The trick is to start MySQL from the console so that you are able to see the error message (you can access the command console by typing cmd into the Run dialog):

cd "C:\Program Files\MySQL\MySQL Server 5.1\bin"
mysqld -nt --defaults-file="C:\Program Files\MySQL\MySQL Server 5.1\my.ini" --standalone --console

In my case, MySQL always returned the same error message:

Plugin 'InnoDB' init function returned error.
Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
Unknown/unsupported table type: INNODB
Aborting
Forcing shutdown of 1 plugins

This message is a symptom of the log file size problem (just google InnoDB: Error: log file .\ib_logfile0 is of different size for more information). All you need to do is to clear the following files from the folder C:\ProgramData\MySQL\MySQL Server 5.1\data:

ib_logfile0
ib_logfile1
ibdata1
$YOUR_HOSTNAME$.err

Restart the MySQL server and all should be well. Note that the C:\ProgramData\ folder is hidden, so unless you have enabled hidden folders from the Folder Options dialog, you will need to copy/paste that folder path directly into the address bar in order to access the folder.

Rating: 

Vista + Loose SATA cable = Bad news

So... Here's what I have been doing during the past 5 hours:

I was noticing some odd behavior from my PC, which runs Fedora Linux as its primary OS but it also has Windows Vista installed for gaming. The machine would boot without any indication of trouble, but once it had been up & running for about 5 minutes, the system would hang and the hard disk activity light on the case would stay permanently on. A soft reboot wouldn't fix the problem either - a complete shutdown was required. At first I thought it was an OS problem, so I rebooted into Vista but found it was affected too. I immediately thought, "hardware". I tried leaving the computer alone for an hour to see if it it would eventually come out of the freeze, but it clearly wasn't doing anything with the disk because the system remained frozen and I could not hear the disk heads moving (and on a 10K RPM drive, those are pretty loud). I ran memtest86+ and did a 3 minute S.M.A.R.T self-test on /dev/sda in Fedora, but oddly enough both came up clean.

Since my hardware seemed OK, I powered down the PC, opened the case and made sure there were no loose cables. Sure enough, the problem was the SATA cable which connected my motherboard to my hard disk. After disconnecting it, blowing off some excess dust and reconnecting it, everything was fine. But that's not where the story ends.

By the time I had reproduced the problem, tested the RAM & hard disk and reconnected the SATA cable, I had done about 15 power cycles. Linux handled the whole situation pretty gracefully - it logged the specific SATA errors (Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK) and put the root filesystem into read-only mode. After reconnecting the cable, Fedora was up and running as if nothing had happened (it did do an automatic fsck upon booting, but the check came up clean). Vista, on the other hand, didn't take it so well - it informed me that I need to run CHKDISK upon starting up, so I let it repair C:\ and it orphans thousands and thousands of files... After CHKDISK completed I was (surprisingly) able to boot up, but many programs - including explorer.exe - were crashing. Judging by the amount of orphaned files, I'm guessing that quite a few system files were missing or corrupted.

So, long story short, if you have any SATA problems and Vista starts orphaning a tons of files during CHKDISK, save yourself some time by canceling the CHKDISK and make sure you have your Vista installation DVD handy.

Rating: 

Coming soon...

Well, it's exam time so it's been a while since I last posted. Only 4 days left though! I'll be back with more stuff to post soon...

Tags: 
Rating: 

The infamous PNG gamma/color correction problem

PNG images are great for Web work, but there's one problem that was really getting on my nerves: the color correction problem. PNG images, like many other formats, support embedded ICC profiles for color management. For websites this feature can become a big hassle since some Internet browsers (namely, Safari 3.x and up) will adjust the gamma and colors of images according to their embedded profiles, but the colors defined in CSS stylesheets are viewed with the native color profile. So if an image with an embedded ICC profile is used in combination with "background: " rules defined in a CSS stylesheet, the image will not match the background color of the page!

Fortunately, GIMP is capable of converting an image's embedded profile into the sRGB profile which was designed for use on the Internet.

First, GIMP requires a bit of setup:

  1. Select the color profile for your display by selecting Edit > Preferences from the menu and clicking on the Color Management section
  2. Set Mode of Operation to Color managed display
  3. From the Monitor Profile drop-down box, choose Select color profile from disk... and select the ICC profile which is you are currently using (tip: On OS X, ICC profiles are stored in /Library/ColorSync)

Once GIMP has been informed about which ICC profile your display is using, it can convert embedded profiles to the sRGB workspace:

  1. Open the image you want to convert
  2. Select Image > Mode > Assign from the menu and ensure that the sRGB profile is currently assigned
  3. Select Image > Mode > Convert from the menu and select the ICC profile that your display is using (the same one you chose in the setup sets)
  4. Save the image and if applicable, pass it through pngcrush to make it smaller
Rating: 

Lisa and Jackson get a Sony VAIO

I read an article on Ars Technica about the new Windows advertisement titled "Lisa and Jackson get a Sony VAIO". In the advertisement, Lisa and her 11-year old
son Jackson are looking for a $1500 computer, choosing a PC over a Mac. While I think it's good that Microsoft is recovering from the "Vista blunder" and starting to retaliate against Apple's aggressive ads, it bothers me that these ads are based on absolutely nothing.

After watching the ad (several times), the only valid point I could find was that Apple computer don't include Blu-ray drives (yet). Here are the things Jackson says he needs:

  • Speed
  • A big hard drive
  • A good gaming computer
  • Price under $1500

Hm, so we have one quantifiable objective and 3 other subjective ones.

Jackson starts by takes a look at the Macs and decides they are "a little too small" and immediately moves on. While I'll agree that the MacBook's 13.3" screen is a bit small (and the MacBook Pro is outside his price range), Jackson and his mother completely ignore all specifications! They move on to the PCs where they discover that they can use a remote to control the computer... Of course, no mention that Apple's computers have also this feature (and for years before it became mainstream on PCs, might I add). So in short, because the Sony VIAO Jackson is looking at has a Blu-ray drive and a 16" screen, he's sold. What happened to checking for "speed", "a big hard drive" or a graphics card? A large screen is always nice, but useless for gaming unless you have a decent GPU.

I did a quick search on bestbuy.ca (16" laptops, price range >= $1500) and it found two matching Sony VIAOs, so I took the more expensive one. For $1349.99, the Sony VAIO 16.4" Laptop (VGNFW275DW) (click for specs) features:

  • CPU: 2.26GHz Intel Centrino Core 2 Duo P8400 (3MB Cache, 1066MHz FSB)
  • RAM: 4GB DDR2 800MHz (2GB x 2)
  • Hard drive: 320GB 5400RPM
  • Optical drive: 2X Blu-ray writer, 8X DVD writer
  • Screen: 16.4" (1920 x 1080)
  • Display output: VGA, HDMI (not HDCP compliant)
  • Dedicated GPU: None (Mobile Intel GM45 Express, 1750MB shared system memory)
  • Battery: Lithium-ion (approx. 1-3 hour battery life)
  • Internal microphone amplifier
  • MS Duo & SD card readers

Here's the comparison with Apple's MacBook (click for specs), available for a very similar $1,399.00:

  • CPU: 2.0GHz Intel Centrino Core 2 Duo P7350 (3MB Cache, 1066MHz FSB)
  • RAM: 2GB DDR3 1066MHz (1GB x 2)
  • Hard drive: 160GB 5400RPM
  • Optical drive: 8X DVD writer
  • Screen: 13.3" (1280 x 800 LED backlit)
  • Display output: mini-DisplayPort (VGA, HDMI (HDCP compliant), DVI and dual-DVI available via $34 adapters)
  • Dedicated GPU: None (nVidia GeForce 9400M, 256MB shared system memory)
  • Battery: Lithium-ion (approx. 5 hours)
  • Multitouch trackpad (supports gestures such as three-finger swipe for back/foward and two-finger scrolling)
  • Extremely environmentally friendly: EPEAT Gold rating + more (see spec page for more info)
  • MagSafe power port: Magnetic power latch

I've left out any sort of software comparison since that is very subjective and opinions vary from user to user. As well, I did not list components which were equivalent such as the built-in webcam or wireless 802.11a/b/g/n.

Let's return to Jackson's original criteria:

  • Speed: VAIO wins by a tiny margin... The difference between the P7350 and the P8400 would be negligible during "real world" use.
  • Big hard drive: VAIO wins by a large margin, as Apple tends to be very conservative with their laptop hard drive size.
  • Good gaming computer: In reality, neither computer has a dedicated graphics card which is what really matters for gaming. Ignoring that fact, the MacBook wins by a huge margin. nVidia has reported that their 9400M is up to 5x faster than Intel's GM45 integrated graphics chipset. As always reports like that should be taken with a grain of salt since the "up to" can be a bit misleading. The 9400M, however, is still a much better choice than the GM45 even if it's only 2-3x faster on average and in one or two cases, 5x faster. Finally, we must also consider the RAM size and type. Sure, it makes the VAIO look great if you say "4GB of RAM!" but let's take a look at the bigger picture. The GM45 is using up to 1750MB of system memory, so that means that if you're gaming on the VAIO, you only really have 2GB of RAM... Just like the MacBook. The 9400M used in the new MacBooks only uses 256MB of system memory, which is much smaller than the GM45 - leaving 1.75GB available for system use. Let's not also forget that Apple is using faster RAM than the VAIO; DDR2 800MHz versus the DDR3 1066MHz RAM on the Macbook.

I'm not even going to compare the features outside of Jackson's criteria, I think you can see where this is going ;)

For your viewing pleasure, here's the ad:

Rating: