-
2010
-
August
-
jQueryMobile
08/16/10
It's very rare something comes along and makes me think "I want it NOW!", but jQueryMobile looks great. This could be what jqTouch and iui never quite were...
-
jQueryMobile
-
July
-
Web remote control for virtualbox machines
07/19/10
I am fond of web-based control panels for desktop software. Being a big user of virtualbox (and php), this was a good find...
http://code.google.com/p/phpvirtualbox/ -
PHP for android
07/14/10
And now you can PHP scripts on your android phone. I'm gonna think of a reason I might want this, I know I am... -
Local variables with xdebug, PHP 5.3 and netbeans
07/01/10
If you aren't seeing your local variables when debugging PHP 5.3 with xdebug you can upgrade to xdebug 2.1 to set things right...
details here:
http://phphints.wordpress.com/2010/06/2
and here:
http://icephoenix.us/php/xdebug-doesnt-
-
Web remote control for virtualbox machines
-
June
-
MySQL query caching for PHP
06/27/10
You may already use memcache for storing data in memory to speed up your PHP applications. You may use PHP caching accelerators like APC to speed up your PHP execution. You may even use MySQL's built-in query caching to speed up data access. But now there's a new cache on the block...
-
MySQL query caching for PHP
-
March
-
Apache 'no space left on device'
03/16/10
Another headscratcher - apache won't start, claiming to have run out of disk space, despite the disk being far from full. Turns out after 229 days of uptime the mod_rewrite memory leak finally caught up with us... read about it here. -
BrowserSeal.BrowserPack - 10 browsers in 1
03/08/10
I've been using IETester for years but today I stumbled upon another browser package called BrowserSeal.BrowserPack that not only includes IE5.5/6/7/8, but also IE 1/2/3/4, Opera 8/9/10, Firefox 3/3.5 and Safari 3/4. Not a bad effort! Unlike IETester which executes all the browsers in a single
-
Apache 'no space left on device'
-
February
-
Dynarch calendar and IE7
02/25/10
OK here's one that might save you some time. I have a symfony admin gen site that works fine in all browsers but for some reason the rich calendar inputs failed to appear in IE7.
At first I thought this might have been the reason:
http://forum.symfony-project.org/index.php -
Symfony 2 hits the streets
02/21/10
It's still very early days, but Symfony 2 now has it's own site with some introductory material included. You can get the code and read about the framework - although there's no side-by-side comparison with symfony 1.4.
Now that versions 1.0, 1.1 and 1.2 are all officially -
Check your water cooling
02/08/10
Do you use water cooling? Well my advice is put a calendar item to check it monthly. And run a CPU temp app at all times. You see today after 3 years of smooth sailing my reservoir ran dry, cooked my cpu and then (after I quickly refilled it) sprayed water all over the motherboard, video card and po
-
Dynarch calendar and IE7
-
January
-
Zend Mail mangles email text
01/17/10
Had this strange problem ever since we upgraded a Symfony site from 1.0 to 1.2 - the emails being logged to the database were being mangled.
The problem turns out to be simply that the symfony 1.2 swToolkit plugin uses Zend Mail instead of phpMailer and Zend Mail spits out encoded text wh -
Sendmail woes
01/13/10
I have battled postfix, qmail and sendmail for years - and my latest trouble involved sendmail trying to route emails to local (non-existant) users, even though the domains in question were not in the local domains config.
After running around in config circles for a couple of hours it tu
-
Zend Mail mangles email text
-
August
-
2009
-
November
-
Restore single table from HUGE mysqldump file
11/17/09
That's one of the problems with 'enterprise' websites - huge databases. Knowing that everything is backed up, it is occasionally tempting to run some ad-hoc handmade 'looks about right' SQL statements every now and then - and occasionally they don't work out too well.
-
Restore single table from HUGE mysqldump file
-
September
-
Chrome Explorer
09/24/09
All right now Google are installing Chrome inside Internet Explorer so now Microsoft can claim to have a standards compliant browser. But what I'm excited about is viewing it all inside Firefox with the ieTab plugin!
That's Firefox rendering Internet Explorer rendering Chrome. -
Integrated framework commands
09/15/09
When I get the urge to run a symfony command from an explorer window I have a few options...
Command prompt here
Well this is handy but you still have to type out your command. Fortunately I have PowerCmd which lets you save common commands and make them toolbar buttons.
D
-
Chrome Explorer
-
August
-
Modify view for an environment
08/27/09
This is something that has been discussed in the Symfony google groups but was unresolved - how to modify a view configuration based on the environment. Some developers say you should not be doing this, as the view should be the same in all environments, but let me explain why I needed do do it... -
Scalability and frameworks - Part 2
08/09/09
Well, in case you were wondering, I managed to get around my scalability problem by focussing on PHP's strengths and side-stepping it's weaknesses. So in this particular problem I was facing 2 primary bottlenecks - yaml parsing and propel memory leaks.
I got around the yaml iss -
Scalability and frameworks
08/07/09
This is a problem I often come up against - sending email to thousands of recipients. The way I usually handle it is to do as little as possible in the master loop.
The best technique I have found is to defer database writes by writing to a temporary textfile in memory (using php://memory
-
Modify view for an environment
-
July
-
BugFeatures blog open for comments!
07/30/09
I have enabled comments on the blog after a few requests for it... play nice! -
Symfony and PhpBB3 integration
07/30/09
I recently had to integrate a forum into a Symfony 1.0 app and, having selected PhpBB3 for the job, went about writing an authentication module. Here's how...
1. Create the auth module
Lets say I want to call the module 'symfony'. I create a file called auth_symf -
Something nice to say about EFI-X
07/23/09
A lot of people moan about EFI-X so I thought I'd tell a good story. I got my EFI-X chip about 6 months ago. After a botched OS X 10.5.7 update the chip fried. I sent it back. In the interim I toyed with every OSx86 kernel out there without any success. Then today my chip arrived back from Taiw -
Send JWPlayer flashvars from shadowbox
07/21/09
Shadowbox is a great way to play FLV videos in a lightbox, but it is a little shortsighted in terms of the parameters it expects you'll want to pass onto JWPlayer. So here's a little workaround I came up with.
If you want to send a playlist position and repeat variable you need -
Die IE6 DIE6!
07/14/09
I look forward to the day IE6 is wiped from the face of the internet like doomsday cults await their rapturous glory. I have read rumours - and I tend to agree - that IE6 is costing the world economy millions of dollars - I would like to see the figure properly researched, it could be billions!
-
OnChange Radio Buttons - Symfony, Prototype and me
07/12/09
Using Symfony's observe_field() on radio buttons will work only the first time the value is changed. If a user changes the values more than once the onchange event stops firing. To get around this you need to use the onclick event instead (as observer_field() uses onchange - and to support keyb -
MySQL Replication - what to do when a slave fails
07/07/09
Thought this was worth posting as it could save someone a lot of grief. I had a slave MySQL server stop updating without warning. A SELECT SLAVE STATUS showed there was an error due to an existing record. This would have occurred when a SELECT DATA INFILE populated 50,000 records and things went a l -
Using gmail SMTP with Swift Mailer
07/05/09
Want your web app to send email from your gmail or google apps hosted email account? This way your messages are stored in your sent box. Here's how to do it with a failover to localhost (in case there is a problem with the gmail server or authentication)...
try{
$c
-
BugFeatures blog open for comments!
-
June
-
Assign an environment to a subdomain in Symfony
06/07/09
I have a couple of symfony sites that my clients like to test without messing up their data (go figure). By modifying the controller a little I can detect the subdomain from the URL and then switch the syfmony environment accordingly. Then, using a filter, I can put a demo stylesheet in place to mak
-
Assign an environment to a subdomain in Symfony
-
May
-
Working with MySQL replication in PHP
05/25/09
I recently set up mySQL replication for a client and thought I'd share this quick and easy way of distributing database load over a few machines.
First, set up replication - it's very simple. Here's a simplified list of tasks based on the info at mysql.com:
http:
-
Working with MySQL replication in PHP
-
April
-
Add Symfony CLI commands to PhpEd
04/19/09
How to add a Symfony command to PhpEd:
1. Menu: Tools->Settings
2. Go to Tools -> Integration
3. Click "Add Menu"
4. Enter "Symfony cc" in menu name
5. Select "Shell" from Execute with list
6. Enter php @ProjRo -
Abort PHP cron job if another job is running
04/02/09
This has come in handy for a couple of mail queues I have built and thought it was worth sharing. Basically it's a small check for PHP in the running system processes. If *any* PHP script is running (besides itself) we abort the script. It would be nice to know *which* script was running but I
-
Add Symfony CLI commands to PhpEd
-
March
-
More Symfony Mime type fun
03/31/09
Sometimes I wonder about using mime types to validate file types. Usually using file extensions is more reliable seeing as though eah browser uses its own set of mime types fore each file extension anyway.
So here I am again modifying some core Symfony files to fix browser mime type incon -
Uploading ZIP files in Symfony
03/21/09
It's rare that I feel the need to edit core symfony files, but this is one situation where it is the best choice. Symfony has a database of mime types it references when processing file uploads. It is pretty comprehensive, but the entries for ZIP files are:
application/x-zip-compressed
-
Working with the output buffer in Symfony
03/18/09
AT first I thought I had found a bug in the way symfony decorates templates with layouts. But as usual, I discovered a bug in my own code :) Hopefully this will save someone else from having to debug a situation which turned out to be issue with using PHP's output buffer within a symfony action -
Evaluating responseText in an extJS Ajax call
03/11/09
Coming from a Prototype background I found extJS infuriating for some really basic tasks like this: calling a remote function and evaluating the response. In Prototype you just set evalScripts parameter to TRUE in the ajax call, but in extJS you have to jump through a few hoops.
The alter -
Assign Symfony environments to (sub)domains
03/10/09
Some projects need a staging site - somewhere where you can test and play around without messing up your database or webstats. Traditional applications require you to make a complete copy of your site to do this - and that means you need to sync your dev files with 2 remote locations.
Wit -
PHPEdit has built-in Symfony CLI support
03/05/09
Just got a press release from upstart IDE PHPEdit 3. They have built new support for Symfony, including a GUI for the CLI. It also has full YAML support and the ability to work intuitively with actions, controllers and templates. Just going to have to try this out!
-
More Symfony Mime type fun
-
February
-
Search Symfony API from Firefox with OpenSearch
02/25/09
Now you can search the Symfony API directly from the Firefox search box. -
Ajax form submission with extJS in Symfony 1.2
02/24/09
Spent the last few days getting to know extJS a bit better and thought I'd share this little handy hint. Usually in Symfony 1.0 if you want to submit a form via ajax you can use "form_remote_tag()" to handle all the Protoype scripting for you. In Symfony 1.2 there is no remote form ta -
Software RAID 0 drive mirroring in Windows XP
02/16/09
I admit I am a Windows apologist but at least I hex edit my system files! Today I installed a second 1.5TB drive to mirror my primary data drive (you know, the one with all my work files, MP3s, virtual machines etc). Now Windows XP doesn't support RAID 0 out of the box, but that's just bec -
Understand TCP/IP? Out of work? Want to fight terrorism?
02/16/09
Well this is the job for you comrade!
ASIO is hiring!
-
JavaScript sessions
02/13/09
Well I would never have thought of it myself but this is an ingenious hack. By storing serialized data in the window.name parameter of the browser, you can have persistent data from page to page and - get this - across multiple domains. All without cookies. Food for thought there.
Meanwhi
-
Search Symfony API from Firefox with OpenSearch
-
November
-
2008
-
December
-
Using DBG for web based debugging and Xdebug for CLI debugging
12/11/08
This is actually all I really wanted. To be able to use DBG in my IDE (PhpEd) and then have access to Xdebug in my command line scripts. Why? Because DBG is a great debugger and PhpEd is a great IDE, but Symfony requires Xdebug to do code coverage checks in its Lime testing framework. If you use PHP -
DBG and Xdebug living in harmony
12/09/08
You may have tried this before and, like me, failed. But today I tried again, being a sucker for punishment, and . . . it worked! So don't believe everything you read on the internet (especially in forum posts from 2006!).
:)
2 days later....
After intermittent crashe -
Symfony URLs with dots
12/04/08
If you need to pass an email address or use any URL with dots init, Symfony may get confused. This is actually a problem with the .htaccess setup and can be resolved simply by adding the following rule:
RewriteCond %{REQUEST_URI} !\..*/.*$
Thanks to the Symfony Google group fo
-
Using DBG for web based debugging and Xdebug for CLI debugging
-
November
-
Improved IE select trick
11/18/08
I was experiencing problems with the blur handler not firing inside iframes so this is my new and improved version of the code below:
function grow_select(){
if (document.all){
$('product').style.width='auto';
$('product').style -
IE truncated select list workaround
11/18/08
Ever had a drop down list that you needed to set the width for? Then you probably noticed that options that are longer than the desired width are cropped in IE (of course firefox handles this problem nicely - the select list is the correct width).
Well under duress from a client I came up
-
Improved IE select trick
-
October
-
IE7 Hack
10/22/08
There's always some DHTML positioning that just doesn't work in all browsers... here's a nice little workaround for IE6, IE7, Safari and Firefox:
#products_menu{
margin-left: -90px; /* IE7 */
_margin-left: 410px; /* IE6 */
}
-
IE7 Hack
-
September
-
Floatbox & Prototype
09/23/08
Having trouble using floatbox AND prototype? Well I was until I found the offending code in floatbox and patched it. Basically, floatbox was trying to run prototype's onload handler by assuming it was a simple function...
Change this:
fb_prevOnload = window.onload;
wi -
sfGuard - adding email to the user profile
09/17/08
There are lots of scattered bits of information about how to do this, so I thought I'd write a quick all-in-one guide...
1. Install sfPropelAlternativeSchemaPlugin from the command line php symfony plugin-install http://plugins.symfony-project.org/sfPr
2. Update the plugi -
IE Tester lets you run multiple versions of IE
09/16/08
I usually use a VMWare machine to test Web sites on IE6 - but that's a whole lot of resources to dedicate to a single app. I recently discovered IETester and I have to say I'm impressed - it runs IE5.5, 6, 7 and 8 all in the one app... now all I need is a FireFox tester and life will be co
-
Floatbox & Prototype
-
August
-
Ultra-lightweight Scriptaculous Horizontal Accordion
08/19/08
After trying this one out and having very little success on anything but the most simplest of pages, I decided that I had to go it alone...
And what I got was a rock solid horizontal accordion in about 30 minutes and less than 100 lines of code - including CSS, HTML and JavaScript!
< -
Symfony propel select MAX()
08/17/08
I know it's simple but it's one of those things you need to do often but not often enough to commit the technique to memory. So this is a code snippet for those times...
//get most recent sales date
$connection = Propel::getConnection();
$c = new Criteria();
-
Upload from one Symfony backend to another domain frontend
08/15/08
I have a backend for 7 domains sitting on its own domain - with all 8 domains running inside the one Symfony installation.
The problem we faced was how to upload files inside an FCKedtor in the backend domain and have the frontend domains pick up the files without exposing the backend dom -
Using view helpers from a controller revisited
08/05/08
Damn, I should have realised you can call url_for() from a controller - you just have to load the helper first!
sfLoader::loadHelpers(array('I18N', 'Url'));
url_for('@somerouting')
-
Ultra-lightweight Scriptaculous Horizontal Accordion
-
July
-
JavaScript dupicate table row inside a table
07/29/08
There are a lot of tips 'out there' on how to add a table row to the end of a table, but I found an elegant way of duplicating a table row in the middle of a table...
function addRow(button)
{
btn_row = button.parentNode.parentNode;
x=btn_row.previousSibling; -
Using view helpers from a controller in Symfony 1.0
07/23/08
I wanted to use url_for() in a controller for a search and replace operation. It turns out the URL helper is a wrapper for a controller function!
sfContext::getInstance()->getController()->genUrl("click here","@route?id_id=".$id);
too easy! -
Prototype radio button validation
07/03/08
Have a required radio button and want to ensure one option is checked? Here's a one-liner for your troubles...
checked = $$('input:checked[type="radio"][name="reward"]').pluck('value').length
Assuming your radio buttons have the name
-
JavaScript dupicate table row inside a table
-
May
-
PHP copy/rename from FTP folder corrupts files when upload is in progress
05/22/08
This took weeks to troubleshoot so maybe I can save you some time by relating the experience...
I have an application that reads files from a FTP drop folder and moves them to a queue folder. If the move is successful, a queue record is put into the database.
Now, you would hav
-
PHP copy/rename from FTP folder corrupts files when upload is in progress
-
April
-
MySQL Workbench
04/26/08
Nice little app for building MySQL databases under windows...
-
MySQL Workbench
-
February
-
Symfony build model errors (revised)
02/21/08
If you reverse engineer your Symfony schema.yml from a database and you use the symfony plugins like sfGuard, chances are you've come across this error:
Duplicate table found: propel
The reason why this occurs is that your schema.yml will include the other plugin tables - -
The best lightbox script just got better
02/16/08
Ever wanted to load a PDF file inline? Maybe in a lightbox window? Well now you can. Michael J.I. Jackson's "thrilling" shadowbox loads all your media files, HTML pages etc with lovely effects sourced from prototype, scriptaculous, yahoo, mootools or your other AJAX library of choice. -
DIY Symfony Propel Hydration with Pager
02/06/08
It's a typical scenario - I have a search module that returns a bunch of objects that have related objects (and some of these have related objects as well).
Ordinarily, you'd use a doSelectJoinAll and let propel magically hydrate all your results - but that only works for paren
-
Symfony build model errors (revised)
-
January
-
Javascript ParseInt("08");
01/09/08
I thought I'd seen it all until today. JavaScript is so "intelligent" that if you try to ParseInt() on "08" you get 0. Why? Because it thinks you're speaking in octal (base 8 numbers) instead of decimal (base 10).
The solution is to either use parseFloat() or -
PHP File downloads - beware the multibyte encoding!
01/07/08
Took me a day to work out why my fread() file transfers were failing - at almost exactly half way. It got me thinking - perhaps the output was being compressed. I turned off mod_deflate. Same problem. Then I started looking at the PHP buffer because I was doing something like this:
while(
-
Javascript ParseInt("08");
-
December
-
2007
-
December
-
CSS Hacks - Firefox + IE6 + IE7
12/17/07
You know when you're entering the final phase of user testing when you need to fine tune style sheets for multiple browsers. This appears to be the final word on getting identical pages in FF, IE6 and IE7 and I thought I'd share it...
#MyDiv {
margin : 10px 10px 10px 10px;< -
PNG Transparency - the final fix
12/13/07
I have been using the PNG filter trick in IE6 for over a year now, but recently had to remove it from a very GUI intensive project as it was maxing out the CPU on older clients. So I went looking (again) for the prefect solution.
Option 1 - PHP Browser checking
This was very ef -
Prototype 1.6 - IE bug: element.getOffsetParent throws errors
12/05/07
It's only a workaround, but it's widely recognised as a bug. So for now you can wrap a try statement around line 2082 like so:
getOffsetParent: function(element) {
try{
if (element.offsetParent) return $(element.offsetParent);
}catch(e){}
if (elem
-
CSS Hacks - Firefox + IE6 + IE7
-
November
-
Display images in a LiveGrid
11/26/07
The trick to this is turning off the default HTML encoding option in the buffer settings like so:
params = {isEncoded: false};
buffer=new Rico.Buffer.AjaxSQL(url, params); -
Rico 2.0 LiveGrid Plus and Prototype 1.6
11/26/07
If your LiveGrids stopped working when you upgraded to Prototype 1.6, this is probably the cause:
change 2 lines in
ricoLiveGridAjax.js:
from:
return $H(queryHash);
to:
return queryHash;
from:
Rico.writeDebugMsg('req -
Symfony developers wanted
11/25/07
It's been 2 months since I've updated this page... my excuse is an inordinate workload, leading me to hunt for some extra developers. Got a big symfony project lined up for early 2008, so anyone who's experienced with the symfony framework (and Web Services), feel free to drop me a li -
IE and Rico
11/25/07
Occasionally, IE will fail to run Rico.Corner.round() and other commands issued after the DOM has loaded - even when using:
Event.observe(window, 'load', my_function);
The answer, it seems, is to delay the Rico calls until the Rico.OnLoad event is triggered...
-
Display images in a LiveGrid
-
September
-
Rapid Environment Editor
09/22/07
This is a great freeware app I stumbled upon today that lets you manage your Windows system environment variables via a GUI. In particular, it's handy for updating your PATH variable - especially if you're a framework developer ;-) -
Root prompt in Ubuntu with 'su'
09/11/07
I know everyone's supposed to fall in love with sudo, but me well I like being a root user - call me old fashioned...
Anyway, here's an easy way to do it:
sudo passwd
Nice :)
-
Qcodo - dot NET for PHP?
09/08/07
If you write PHP and haven't heard of qcodo then this is must see TV:
http://qcodo.com/demos/beta_2/demo_b_qf
Basically, qcodo defines an event-driven model for HTML forms, much like ASP.NET does. So you can run server commands on button clicks, for example. Then you can c
-
Rapid Environment Editor
-
August
-
Add a Custom DHTML Drop Down to an Existing Menu
08/29/07
Ever had the need to add a drop menu to existing navigation? It's a dilemma, I can tell you. There are a lot of applications, scripts and tools for building DHTML menus from scratch, but they usually won't integrate into your existing site very easily. So you have the option to reverse eng -
Return of the framework debate
08/22/07
I have spent a couple of days playing with CakePHP and, I dare confess, I think I am hooked. Some of the things that leap out at me are:
* Scaffolding - great for quick admin systems which can be rendered-out to PHP code when your database schema is finished.
* Remote con -
A Prototype Ajax Queue
08/21/07
The last thing you want to do when building an Ajax application is to bring your server to it's knees with too many simultaneous requests.
So, I have built a little queue into some of my ajax calls to ensure that no client makes more than a certain number of simultaneous Ajax connect -
php_dbg.dll still crashing Apache Win32 FastCGI
08/21/07
Unfortunately my DBG problem is back.... this time whenever I throw any exception! I've got nothing from NuSphere that has helped so it looks like I'm stuck with the prospect of rebuilding the server - starting from a working virtual machine, of course :) -
php_dbg.dll crashes Apache Win32 FastCGI
08/09/07
This is a good one! The other day I noticed one of the sites on my server was crashing Apache intermittently. All the other sites were fine. Strangely enough I hadn't changed the code - so I assumed it was a configuration problem. So I repaired apache, upgraded to PHP 5.2.3 and had no luck. I i
-
Add a Custom DHTML Drop Down to an Existing Menu
-
July
-
IE "Operation Aborted" problem
07/24/07
This took a little while to debug. Basically, IE was loading a page fine and then alerting a message that "Internet Explorer cannot open the Internet Site . . ." and " Operation aborted". This was impossible to debug correctly as the debugger never got a chance to run... pl -
Shaded Borders - curved DIV elements with drop shadows
07/04/07
Some ideas are so obvious that you never think of them. Like this guy who has written a lean JavaScript library which wraps 1-pixel DIV elements around your content elements to make rounded corners and drop shadows possible without any images. The elements' colours can be styled with CSS
-
IE "Operation Aborted" problem
-
June
-
Prototype 1.51 Component Error
06/09/07
This is related to my previous post on getting Rico to work with Prototype 1.5x. I found an alternate piece of code that works equally as well at http://rvalyi.blogspot.com/2007/02/prot My proposed solution is a combination...
for (var name in headers) {
if (typeof hea -
The new proceduralists!
06/04/07
I have become very fond of my OO PHP code. I even have classes that generate other classes. But every now and then I come up against a problem that requires a procedural solution. Today I profiled a search script that was taking a bit too long (20 seconds actually!) only to discover (well,I already
-
Prototype 1.51 Component Error
-
May
-
xajax beforeProcessing and afterProcessing callbacks
05/23/07
I scratched my head over this for awhile... the beforeProcessing array of callback functions in xajax 0.5 works a treat. I use it to run a security check on the request before allowing it access to my logic and data classes. Then, in certain function calls, I wanted to use the afterProcessing callba -
Being held to ransom by your ISP
05/09/07
It's been quiet around here lately, mainly because I've had about 5 days of broadband in the last 5 weeks. While I should have been reading Kafka, I didn't have to because my life became The Trial. First iinet (my isp whom i now hate with a passion, but more on that in a moment) told
-
xajax beforeProcessing and afterProcessing callbacks
-
March
-
Not all days are created equal
03/20/07
Some days just suck. Especially the ones that aren't 24 hours long. You see, there I was calculating all the names and dates for the next 28 days, as you do when building a calendar or something. The obvious way to do it was to loop from 1 to 14 adding 60x60x24 seconds per iteration and then fo -
domTT and Firefox Uncaught Exception
03/15/07
domTT is an excellent cross-platform DHTML tool-tip library which I have used for about 2 years on a range of projects. While building a custom AJAX interface for my current project I came across a weird error for the first time...
In FireFox under Windows, the domTT library sometimes th
-
Not all days are created equal
-
February
-
Multiple PHP versions in a single Apache installation
02/12/07
For some time now I have been two versions of Apache - one for PHP4 and the other for PHP5. This has been satisfactory except that my SVN repository was only installed for the Apache 2 install (the other install was 2.2 which doesn't support SVN).
So after a forced rebuild of my serv -
Rounded Corners - Pure CSS
02/07/07
It's been done a million times, but the fastest way to do it is to use the online rounded corner generator at:
http://www.roundedcornr.com
You get the CSS, the DIV tags and the four corner images all dynamically generated and ready to copy into your code.... -
Xinha Warrior Editor!
02/07/07
Came across a little problem today where my Xinha WYSIWYG HTML editor fields were not being submitted when the form was submitted from JavaScript. As a workaround, the getHTML() method can be called and dynamically assigned to the text area like so:
var html = xinha_editors.my_text_
-
Multiple PHP versions in a single Apache installation
-
January
-
Prototype 1.5 and Rico
01/29/07
Aha a bug! Well, sort of. If you use Rico and Prototype/Script.aculo.us then you may find updating to Prototype 1.5.0 makes ALL your XHR requests fail. Ouch! Well, it turns out Rico defines a function called extend which is then added as a header in Ajax.request() that forces Firefox to throw an exc -
Get checkbox values with Prototype
01/28/07
After some trial and error using $F() and other serialize commands from the Prototype AJAX library I googled this tasty treat:
var checked = Form.getInputs(element.form,
"checkbox",
element.name).fin -
Vista on VMWare - "A required CD/DVD drive device driver is missing"
01/19/07
It turns out you cannot use an ISO image mounted in VMware to install Windows Vista. While the installer will boot, once it goes to Vista's desktop, the virtual CD/DVD device is not detected and you cannot continue.
The solution? Mount the ISO in Alcohol 120% and retry! -
Profiling and Interactive AJAX Debugging - FireBug Tutorial
01/18/07
The author of the FireFox FireBug extension has written an excellent tutorial on how to use it - including profiling and interactive testing via the console. A must read for any AJAX developer!
http://www.ddj.com/dept/debug/196802787?pgno=1 -
OSX Tiger on a PC with networking
01/18/07
Testing Websites across all browsers and operating systems on a single PC without rebooting? I used to do it with PearPC, but I've discovered a VMware compatible virtual machine does the job much more elegantly. The machine comes without networking support, but some clever chap has written an e -
Debugging AJAX
01/02/07
Debugging AJAX calls can be tricky simply because everything is happening behind the scenes. Some AJAX classes will report debug info when requested nicely, but for a real hands-on approach you should try FireBug. It's a great FireFox extension that displays errors, has a built-in Javacript deb
-
Prototype 1.5 and Rico
-
December
-
2006
-
December
-
How to fit your life on a USB stick
12/31/06
Came across http://portableapps.com/ today. Nice idea - all the programs you need for Web, FTP, email, word processing, spreadsheets etc in a single integrated suite. It's (almost) all open source and completely free, with 256MB and 512MB installations available for use with equivalent USB memo -
FTP from FireFox with FireFTP
12/20/06
I'm on a FireFox frenzy today. FireFTP is an FTP client with account management and FTP link integration that runs in a FireFox tab.
-
FoxyTunes - media player controller for FireFox
12/20/06
An unobtrusive media player remote controller for FireFox. Sits unobtrusively in your status bar... plus has a desktop widget if you are that way inclined.
And if you don't already listen to the Garage Pressure dubstep show on FBIradio.com, check it out! -
Are templating systems evil?
12/15/06
This is a bit of a rant in the latest installment of my ongoing struggle with 3 tier architecture, database abstraction and template systems...
It's an old argument - raging for at least 5 years, now: Are PHP templating systems missing the point? Let's start with a brief overvie
-
How to fit your life on a USB stick
-
October
-
Debugging PHP from Firefox
10/24/06
NuSphere have been promising it for ages, but its taken a man known only as iflo to build the Firefox etension for the DBG debugger. Now I can start a debug or profiling session right from Firefox. Thank you iflo. Note that Firefox may complain about the extension having an invalid hash, but i -
Calling static functions with a NuSOAP Web Service
10/12/06
I know, this is a pretty specific problem, but I solved it nonetheless :)
Basically, if you are using NuSOAP Web services and you want to register a static class function then you need to use ".." instead of "::".
For example,
class object{
< -
Browser Based WYSIWYG HTML Editor
10/11/06
Still using HTMLArea for your CMS and other HTML editing in the browser? Maybe you should check out Xinha (pronounced Zena, as in warrior princess). -
Internet Explorer as a FireFox tab!
10/11/06
I love stuff like this. IE Tab is a FireFox extension that lets you open the current page in a new FireFox tab using Internet Explorer! This is great for Web testing, but it's also an awesome back-up plan for those damn Web sites out there that just don't work in FireFox/Mozilla. Just midd -
Web testing with Selenium IDE
10/11/06
I've done a fair bit of test driven development (TDD) using Nunit (ASP.NET) and PHPunit/SimpleTest (PHP), and they're great frameworks. There's nothing like watching all your green lights turn on after a hard day's coding, knowing that you've added to the code base but broke -
More XAJAX hacking
10/08/06
Just a quick mention of a bug I came across in XAJAX today. When passing objects or associative arrays back to PHP via xajax.call() the ObjectToXML function fails to pass and parameters with numeric values.
It appears that the replace() function fails as integers are, well, not strings... -
Even better XAJAX powered PHP objects!
10/05/06
Earlier today I wrote about using PHP class constructors to wire-up public methods to xajax. After some perusing of the xajax source code I discovered another way of doing this. It's simpler in some ways, but not as versatile. It's called "registerCallableObject()"!
I -
The Death of Viral Marketing?
10/05/06
The Sydney Morning Herald posted a news item yesterday questioning the ongoing feasibility of viral marketing. The problem they identify is that Web users are no longer interested in thinly disguised advertising campaigns masquerading as entertainment. Fair enough. Even if there is a prize to be won -
Setting JavaScript variables with AJAX
10/05/06
You would think that this is a simple thing to do, but there is a problem that eludes many newcomers to AJAX. I talked about this in my last entry on PHP classes with built-in AJAX functions, but now I want to wrap the whole thing up properly without confusing the issue (too much).
Here& -
PHP Objects with built-in AJAX
10/05/06
I am writing a code-generation tool in PHP that builds CRUD classes (Create-Update-Retrieve-Delete) from a database. It uses PHP5 and each of the properties are private so that you need to use public SET and GET methods to manage them. This is good, as I detect the database column properties such as -
XSA - Cross-Site AJAX
10/03/06
How do Send2Friend and BugFeatures manage to use AJAX to send form information to an off-site data store? By using an IFRAME instead of an embedded DIV. The Prototype window class cleverly allows an embedded IFRAME to be dragged around the current page as if it were a local DHTML object. Thus, when -
Why BugFeatures?
10/02/06
I thought it was such a good domain name that I just had to do something with it :) But I also wanted to provide my visitors with an easy-to-use way of telling me about Send2Friend. On the one hand I wanted to know when a bug reared its cute little face and also when a user experienced that flash of
-
Debugging PHP from Firefox
-
September
-
BugFeatures launched!
09/29/06
BugFeatures is now live - but what is it? In a nutshell (bugshell?) it is a free add-on for any Web site that allows users to report bugs and submit feature requests. Your visitors click a link or button which opens a little Ajax window inside the page (not a pop-up). They enter the details of -
The inauguration of the feature dome
09/28/06
It's always a tricky thing to do. Writing the first post on a blog. Fortunately it only has to be done once and no-one will ever read it anyway (well, except those of us reading it now).
So what is this site all about? Originally, the idea was to write a simple Web application to all
-
BugFeatures launched!
-
December



Avatar



