Archive for the ‘ Development ’ Category

Functional Programming, Here I Come!

My copy of Real World Haskell finally arrived this week, and now that I’m on co-op and have some free time in the evenings, I’ll be diving into it this week.

I’ve already been teaching myself a bit from online tutorials and documentation, but nothing beats a good book in order to really start understanding things.  And since it’s an O’Reilly book, the thing weighs in at just under three metric tons.

Passing A Variable Number of Arguments to a Function at Run-time

At the request of an Ozzu member last night, I wrote up two new quick tutorials outlining how to write functions that can accept a variable-length argument list at run-time.  I wrote the original tutorial for C programmers and later adapted it for PHP.  I’ll likely adapt it for a few other languages in the near future.

TUTORIAL: Pass Variable Number of Arguments to a C Function
TUTORIAL: Pass Variable Num. of Arguments to a PHP Function

Feedback is always welcome either here or in the tutorial topics themselves.

A Calendar Element for CakePHP

Here’s a quick calendar element I whipped up for a CakePHP application I’m writing.  I needed to use the calendar in a number of different places, so creating a view element for it in Cake made the most sense.

<<< March 2009 >>>

Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

Download the source (zipped .ctp file) here: CakePHP Calendar Element

The code is pretty simple.  Pass the element a year and a month when rendering it and it will render that month in a simple table.  It also accepts two additional arguments, a day link and a month link.  The day link allows you to specify what the base URL for each day should be, and similarly, the month link specifies the base URL for traversing months.

Drop the calendar.ctp into your elements directory in your Cake app (usually /app/views/elements) and render it an any view you’d like.  Below is an example of rendering the element with all of its parameters:

<?php
$this->renderElement('calendar', array(
    'year' => 2009,
    'month' => '11',
    'month_link' => '/controller/showmonth/',
    'day_link' => '/controller/showday/'
));
?>

The month link and day link provide the base URLs for linking to additional months and days, allowing you to modify the element for particular controller actions.

Feel free to use this component for anything you’d like, no strings attached.  If you make any improvements or enhancements to it, be sure to share!