Archive for the 'Web Development' Category

PHP 5.2.1 Released – Time to Upgrade?

Thursday, February 15th, 2007

PHP 5.2.1 was officially released yesterday, and it is possibly the time for PHP 4 die-hards or PHP 5/5.1 users to upgrade. Why? Consider the following:

New Features in PHP 5.2.1

  • New Extensions
    • JSON (JavaScript Object Notation)
    • Filter Extension (simple input validation)
    • ZIP (Full zip compression support read & write)
    • Date (date manipulation functions/objects)
  • __toString() now works everywhere
  • E_RECOVERABLE_ERROR (fewer fatal errors)
  • New SPL features (Regex Iterators, SplFileObject CSV support, Caching Iterator)
  • Data: stream support
  • And many other “minor” features

Performance Enchantments

  • New & Improved Memory Manager + Heap Protection
  • Faster include/require_once
  • Optimized str_replace() and implode() functions
  • Faster try {} catch {} blocks
  • Significantly faster performance on Win32
  • Optimized shutdown sequence
  • Many other optimizations

Improved Security

  • New configuration option allow_url_include (disabled by default)
  • Over 40 security fixes compared to any prior release.
  • More accurate memory usage tracking
  • Filter extension can help filter out hostile input preventing
  • XSS, SQL Injection and other nastiness.
  • Memory limit is always enabled.

Improved Stability

  • PHP 5.2.1 includes hundreds of bug fixes compared to previous releases, over 300 since 5.1.6
  • Chances are that if you’ve reported a PHP bug in the last 6-8 months, PHP 5.2.1 has the fix for it.

If you are interested in migrating from earlier versions of PHP please see the guide provided by Ilia Alshanetsky.

Firebug 1.0 – A “Must Have”

Tuesday, December 5th, 2006

It's been over 10 months since I first started advocating Firebug, especially for developers working with AJAX. Since that time the tool has been rewritten from scratch and been given a lot more focus by the developer Joe Hewitt. The result is Firebug 1.0.

The core features of 1.0 include CSS editing, network load timing, box model visualization, JavaScript profiling, command line autocomplete, HTML change highlighting, debugger watch lists, DOM editing, separate window support, and per-site blacklists.

Firebug is now one of the most used and appreciated tools in my developer toolbox. If you have not downloaded the 1.0 beta then here are some compelling reasons why you should…

Just the way you like it

Firebug is always just a keystroke away, but it never gets in your way. You can open Firebug in a separate window, or as a bar at the bottom of your browser. Firebug also gives you fine-grained control over which websites you want to enable it for.

Learn more

Inspect and edit HTML

Firebug makes it simple to find HTML elements buried deep in the page. Once you've found what you're looking for, Firebug gives you a wealth of information, and lets you edit the HTML live.

Learn more

Tweak CSS to perfection

Firebug's CSS tabs tell you everything you need to know about the styles in your web pages, and if you don't like what it's telling you, you can make changes and see them take effect instantly.

Learn more

Visualize CSS metrics

When your CSS boxes aren't lining up correctly it can be difficult to understand why. Let Firebug be your eyes and it will measure and illustrate all the offsets, margins, borders, padding, and sizes for you.

Learn more

Monitor network activity

Your pages are taking a long time to load, but why? Did you go crazy and write too much JavaScript? Did you forget to compress your images? Are your ad partner's servers taking a siesta? Firebug breaks it all down for you file-by-file.

Learn more

Debug and profile JavaScript

Firebug includes a powerful JavaScript debugger that lets you pause execution at any time and have look at the state of the world. If your code is a little sluggish, use the JavaScript profiler to measure performance and find bottlenecks fast.

Learn more

Quickly find errors

When things go wrong, Firebug lets you know immediately and gives you detailed and useful information about errors in JavaScript, CSS, and XML.

Learn more

Explore the DOM

The Document Object Model is a great big hierarchy of objects and functions just waiting to be tickled by JavaScript. Firebug helps you find DOM objects quickly and then edit them on the fly.

Learn more

Execute JavaScript on the fly

The command line is one of the oldest tools in the programming toolbox. Firebug gives you a good ol' fashioned command line for JavaScript complete with very modern amenities.

Learn more

Logging for JavaScript

Having a fancy JavaScript debugger is great, but sometimes the fastest way to find bugs is just to dump as much information to the console as you can. Firebug gives you a set of powerful logging functions that help you get answers fast.

Learn more

Click here to download the Firebug 1.0 beta…

Zend Studio 5.5 with Zend Framework Support

Wednesday, November 15th, 2006

Zend FrameworkI have been waiting for an update to Zend Studio for a few months – particularly hoping for support of SubVersion 1.4. Zend delivers this and more in the beta release of Studio 5.5. One of the most exciting enhancements for me is the integration of support for the Zend Framework.

Here is a complete list of the feature enhancements in version 5.5:

Zend Framework Integration:

  • Enable code completion for Zend Framework
  • View Zend Framework classes and functions in the PHP Inspector View
  • View source and debug into Zend Framework code

Source Control:

  • Explorer: highlights file labels according to their status in source control (added, merged with conflicts, modified, not versioned and up to date)
  • Source Control file status highlighting is customizable (from the Preferences dialog)
  • Can easily switch between CVS and Subversion support
  • Support for Subversion 1.4

PHP 5.2:

  • New PHP 5.2 Support

General:

  • Installation support for Mactel (Install Anywhere 8 )
  • Support for antialiasing (via Preference settings)

Editor:

  • Supports opening URLs from the Editor using right click

Web Services Support (SOAP):

  • Support for URLs in SoapClient Constructors

Java:

  • Embedded Java code completion of packages and classes in PHP code
  • Configure the Workspace's default JRE / JDK
  • Configure project specific preferences
  • Nested Java code completion

Zend Platform 3.0 Integration:

  • View Zend Platform Events in a dedicated Events List window
  • Customize, sort and filter Event List entities
  • Limit number of visible rows and initiate auto refresh
  • View Events from user-selected servers
  • Direct access to Platform's Configuration dialog from the toolbar / menu
  • Configure Zend Platform's GUI URL and authentication information

Afraid of CSS and Standards?

Thursday, September 28th, 2006

If you are, then take comfort in the fact that you are not alone. Here is an excellent article covering some of the frustrations of moving from table-based layouts to pure CSS. I could relate to a lot of the article's content – maybe you can too…

Issue One of Visual jQuery Magazine Released

Saturday, September 23rd, 2006

Visual jQuery Mag - Issue OneI have posted a number of times about jQuery – a JavaScript (JS) framework that will revolutionise the way you write JS. The community uptake of this framework has been quite impressive. Now there is even a monthly magazine available, courtesy of Yehuda Katz. The first release of the magazine includes the following topics:

  • an editor's note about the magazine
  • a profile of jQuery's founder, John Resig
  • an introduction to jQuery's basic principles
  • an argument for jQuery's philosophy
  • an interview with the creator of the jqMinMax plugin, Dave Cardwell
  • a roundup of three plugins that are useful for creating rich web applications

Why is this framework worthy of so much attention? You need to be a JavaScript coder to really appreciate it's beauty. Basically jQuery allows web developers to write JS the way we think, the way we see the world within the context of the DOM. Not only is it logical and simple to work with, it will drastically reduce the amount of JS you write. That means smaller files, your code is easier to read and understand, and you spend less time coding. It enables you to easily work with AJAX, animations, forms, CSS, and the list goes on – all for including a file only 16k in size.

On top of that, the jQuery community is rapidly adding new plugins and widgets that work with jQuery. The mailing list is also extremely responsive and helpful.

Once upon a time the developer world went crazy about Prototype and Scriptaculous. For me jQuery and Interface leave such alternatives in the dust. Why? Apart from the fact that jQuery+Interface = 66k (16+50) and Prototype+Scriptaculous = 188k (50+128)? jQuery and Interface are just more intuitive to work with and offer the same core features.

Here are some links to get you excited:

Anyway – it is time for me to stop raving. If I keep posting only about jQuery this blog is going to get fairly monotonous! I will now leave you to form your own impressions…

It's Been A While…

Saturday, August 19th, 2006

As regular visitors to this site will have noticed I have not posted any articles for a while. But I am still alive and well! My wife and I have successfully relocated to Wellington, New Zealand, and I am now settled into my new role as Systems Delivery Manager for Database Communications.

I have been working on some pretty interesting projects for companies like BP, Castrol, and Australia Post. The projects have involved the use of several of the tools I have discussed on my weblog over past months. In particular I have been actively using jQuery and the Zend Framework and highly recommend them as a key part of any web developers toolkit.

So … now that I have shown my face again I hope I can return more often. In the meantime, perhaps you would be interested in reading a new 18 page tutorial to help get started with the Zend Framework. Or maybe you would like to check out the new improved jQuery website (still in beta) and some of the great jQuery plugins that have been released over recent weeks.

Until next time…

Lucene and the Zend Framework

Thursday, April 27th, 2006

Zend FrameworkOne of the most talked about features of the Zend Framework is its port of the Apache Lucene project – a Java-based full-text search-engine framework. The Zend Framework allows PHP developers to use Lucene without requiring additional PHP extensions or Java, or even a database.

The theory is that Zend_Search_Lucene overcomes the usual limitations of relational databases with features such as:

  • Fast indexing
  • Ranked result sets
  • A powerful but simple query syntax
  • The ability to index multiple fields

Lucene is well-known for it's speed. For an example have a look at DamnFastDotLucene – this demo site tests the performance of a .Net implementation of Lucene on quite a large set of documents:

  • 9150 text files from the Gutenberg Project
  • The total size of indexed documents is 3.5 GB
  • The index size is 880 MB
  • The Hardware: Pentium 4 3Ghz 800/1MB Cache, 1 GB DDRII Kingston 533, Western Digital Raptor 80GB

The result – it takes approximately the same time to search 5 MB of text as it does to search 3.5 GB of text. I was getting speeds less than 0.125 seconds. That is fast.

That was .Net though – what about the PHP implementation in the Zend Framework?

The reality for PHP developers using the Zend Framework may be a little different from the hype. Some developers are reporting Zend_Search_Lucene as being significantly slower than the queries being run from MySQL or PostGres. Have a look at the following comments in the Zend Framework Mailing List for details.

To be fair it is only very early days for the Zend Framework and Lucene – the project is still in early Alpha. However it is already being adopted by the community for live projects.

If you want to learn more about Zend_Search_Lucene I recommend the following links:

If you have any experiences with Zend_Search_Lucene that you would like to share I would appreciate hearing about it…

Web Developer Toolbar for Internet Explorer 6

Sunday, March 26th, 2006

Internet Explorer LogoWell … it's not as good as its counterpart for Firefox, but it is certainly a useful tool for web developers. The Internet Explorer Developer Toolbar from Microsoft offers the following features:

  • Explore and modify the document object model (DOM) of a Web page.
  • Locate and select specific elements on a Web page through a variety of techniques.
  • Selectively disable Internet Explorer settings – Cache, Cookies, Images, Scripts, Popups.
  • View HTML object class names, ID's, and details such as link paths, tab index values, and access keys.
  • Outline tables, table cells, images, or selected tags.
  • Validate HTML, CSS, WAI, and RSS Web feed links.
  • Display image dimensions, file sizes, path information, and alternate (ALT) text.
  • Immediately resize the browser window to a new resolution.
  • Selectively clear the browser cache and saved cookies. Choose from all objects or those associated with a given domain.
  • Choose direct links to W3C specification references, the Internet Explorer team weblog (blog), and other resources.
  • Display a fully featured design ruler to help accurately align and measure objects on your pages.

There is certainly an abundance of useful features for developers to play with. Enjoy…

Do PHP Files Require Closing Tags?

Thursday, March 9th, 2006

I don't know about you – but I always learnt to open and close my PHP files properly:

<?php
// Included PHP File
// Code goes here
?>

And yet now I am learning for the very first time that the closing PHP tags are not necessary, and in fact in some cases is not recommended!

The first clue I received was when I downloaded the Zend Framework. I noticed that most of the files were missing the closing tags (?>). Then somebody raised the issue on the Zend Framework Mailing List and the penny dropped:

  • PHP files have apparently never required closing tags
  • Leaving out the closing tags helps prevent whitespace sneaking into the ouput and messing with functions like header(), session_register() functions etc.

Well, that is definitely a new thought for me – and not one I have ever read anywhere. It sounds like it will make it into the Zend Coding Conventions though, so take note ;)

Zend Framework Tutorial

Wednesday, March 8th, 2006

For those who want to get started on the Zend Framework, Chris Shiftlett has just written a 6 page tutorial for the php|architect website. It is a good introduction to how the framework fits togethor, and will demonstrate how to structure a web application/site using the MVC (Model-View-Controller) approach.

Chris Shiftlett is a PHP security consultant and he developed a lot of the security features (input filtering etc) in the framework – his tutorial is certainly worth a look