Archive for the ‘Coding’ Category

SVNKit + Subclipse Problems

Friday, May 22nd, 2009

If you’re experiencing difficulty getting Subclipse working with SVNKit, install the very latest. One of the dependencies pulled in will list an SVNKit beta. Install that one and it’ll suddenly show up as a provider.

This is true as of Eclipse Ganymede and Subclipse 1.6.2 (installed with CollabNet Desktop). Just thought to save someone else several hours of their life :)

On CodeIgniter

Wednesday, April 25th, 2007

As taken from the CodeIgniter website:

CodeIgniter is a powerful PHP framework with a very small footprint, built for PHP coders who need a simple and elegant toolkit to create full-featured web applications. If you’re a developer who lives in the real world of shared hosting accounts and clients with deadlines, and if you’re tired of ponderously large and thoroughly undocumented frameworks

I must say that after looking through the documentation, watching the introductory screencasts and then experimenting with it myself, it really does live up to it’s claim of real-world thoughtfulness. CodeIgniter flexible and clear when it comes to the MVC pattern, and all through the tutorials I never once felt that I didn’t quite understand what was going on. Even reading the documentation, it’s all amazingly well explained.

I’ve so far not felt mystified by something in the framework, and haven’t yet had to ask any questions on the forums of IRC channels — something I’ve had to do numerous times with CakePHP, a similar open-source project. This of course isn’t to say that Cake is bad, but good documentation is king when it comes to programming.

Overall, the first impression you get when you run CodeIgniter is that of confidence. This is of course the benefit of having a commercial entity backing a project — little things like the documentation that typically don’t get done with a non-commercial project get taken care of.

Best of all? CodeIgniter comes with a license that qualifies as ‘Open Source’.

Lookout CakePHP, you may have the major portion of mindshare right now, but CodeIgniter is a serious contender.

FizzBuzz in PHP

Thursday, April 12th, 2007

I was reading Why Can’t Programmers… Program today and while I find questions like these annoying at interviews because PHP isn’t really used for that sort of thing, I set myself and my colleagues the task of writing out answers.

The question:

Print out the numbers 1 to 100. Where the number is a multiple of 3, print ‘Fizz’, otherwise if it is a multiple of 5 print ‘Buzz’. If the number is a multiple of 3 and 5, print ‘FizzBuzz’.

Here are our answers, and mind you, they’re all in PHP.

Lim is our budding project coordinator turned programmer. He’s just started getting into PHP, and here’s what Lim came up with:

for ($count=1; $count<=100; $count++)
{
    if ($count%3 == 0 && $count%5 ==0){
        print "FizzBuzz<br />";
    }
    elseif ($count%3 == 0){
        print "Fizz<br />";
    }
    elseif ($count%5 == 0){
        print "Buzz<br />";
    }
    else {
        print $count."<br />";
    }
}

An almost perfect textbook style answer.

Here’s what Foong came up with:

for($i=1;$i<=100;$i++)
{
    $result=$i/3;
    $result2=$i/5;

    if(!preg_match("[\.]" , $result)&&!preg_match("[\.]" , $result2))
    {
        echo "FizzBuzz<br />";
    }
    elseif(!preg_match("[\.]" , $result))
    {
        echo "Fizz<br />";
    }
    elseif(!preg_match("[\.]" , $result2))
    {
        echo "Buzz<br />";
    }
    else
    {
        echo $i."<br />";
    }
}

Certainly an example of … unique thinking. Foong’s had more than a year of experience programming in PHP, for the record.

Here’s what I came up with:

foreach(range(1,100) as $i)
    echo $i % 3 == 0 ? ( $i % 5 == 0 ? "FizzBuzz\r\n" : "Fizz\r\n" ) : ( $i % 5 == 0 ? "Buzz\r\n" : $i."\r\n" );

Update: I’ve made a change to the code, Ken Brush a.k.a. shiruken noticed I’d missed something out :(

I love the conditional operator @_@

Also, no, I would never use code like this in production, or even casual coding. I just wanted to beat my colleagues on line-count :P

And now, the ‘proper’ textbook solution for all the Googlers:

for ($i = 1; $i <= 100; $i++)
{
    if($i % 3 == 0 && $i % 5 ==0){
        print "FizzBuzz<br />";
    }
    else if($i % 3 == 0){
        print "Fizz<br />";
    }
    else if($i % 5 == 0){
        print "Buzz<br />";
    }
    else {
        print $i."<br />";
    }
}