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 memory sticks. Ironically, the menu that holds the suite together is called pstart and it is closed source but free nonetheless. Here's a quick list of what's on offer:* FireFox portable
* FireFTP
* FileZilla
* Thunderbird portable
* Gaim portable IM client
* Miranda IM portable
* Sunbird portable
* Open Office portable
* AbiWord portable
* 7-zip portable
* VLC Media Player
There are also apps for HTML editing, XAMPP (MySQL, Apache, PHP, PHPmyAdmin), image editing (GIMP), audio editing (Audacity) and other utilities such as antivirus and archive managers. So if you use several PCs - and sometimes other people's machines, this is a neat way to have all your stuff available all the time...
| [ 0 trackbacks ] | permalink | related link |




( 3.1 / 44 )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.
| [ 0 trackbacks ] | permalink | related link |




( 3.1 / 36 )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!
| [ 0 trackbacks ] | permalink | related link |




( 3.1 / 35 )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 overview of what I'm referring to as a 'templating system'.
Basically, a template system is a technique of separating the application (business) logic from the display logic. Usually this involves two documents - a PHP script and an HTML template. The PHP script runs all the page logic, processes forms, connects to databases etc and then parses the template to create the HTML that is sent to the browser.
The best example of such a system is Smarty. Smarty is a PHP library that introduces special tags into HTML templates that control display logic such as loops and conditions.
Another example is Savant, which uses PHP tags instead of custom tags in the template. The argument for this is that PHP is itself a templating language, so there is no need to create a new subset of tags - just use PHP. Because there are no custom tags, Savant doesn't need to precompile the PHP scripts.
The reason I am even discussing this on the cusp of 2007 is that I am building a site that will need to scale massively. Accordingly, I have used the tried and true design patterns of a 3-tier architecture.

The separation of the database (server) from the Web application (server) is done via the ADODB library and the display logic is built using Smarty. Now, before I go any further, let it be known that I have had a lot of success using this combination before in some reasonably high traffic sites (50,000 successful page requests per day).
Now, I have done some profiling of the PHP pages and found that the two libraries I am using - ADODB and Smarty - are the biggest drain on the application. My core classe libraries and page logic are running lightning fast, but being bloated by my 3-tier implementation.
Damnit.
Now, my client is arguing that this doesn't actually matter. The days of needing to write the tightest, fastest, leanest code are over. The low cost of high powered hardware now compensates for the high cost of slow development due to performance tweaking. Good point. Consequently, I have decided to remove ADODB, as this can be done quickly and easily using my database abstraction layer code generation tool that I have written (mwahaha!). Smarty, however, will stay.
I make this decision reluctantly, however. The upside - I know it well and I know it works. The downside, the application is now entrenched in Smarty tags and replacing it would be very time consuming. There won't be a lot of page caching in this application, so Smarty will be a drain on the system for sure. Fortunately, it is well written - and any resource spikes can be dampened using a bigger cluster.
If I was going to start from scratch I'd try Savant 3, but I'd profile it first (maybe I still should - just to be sure!). I like the idea of pure PHP templates and I still think the 3 tier model is valid - but I am starting to think that Smarty, ADODB and many of the other PHP DAL and template libraries have had their day....
But don't get me started on ASP.NET, will you? Have you seen the custom tags?!?! ;-)
| [ 0 trackbacks ] | permalink | related link |




( 3 / 32 )
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 it will install ok nevertheless.
Now, that does bring me to a little side note about PHP IDEs. I have spent months at a time in both Zend Studio and PhpEd, both of which have their ups and downs. I find Zend's IDE to be a bit buggy and slow. Sometimes it takes a whole minute to display the interface when switching between apps. Maybe that's a Java issue... as perhaps is the mouse selection bug I often get which requires a restart of the app. On the plus side, it has a great profiler - better than the NuSphere one, for sure - but I'd prefer not to have to install an entire server platform in order to use it. The Nusphere debugger/profiler is just a PHP extension. Simple and easy to install and configure. Plus the IDE is fast and supports handy stuff missong from Zend - smarty syntax highlighting, better HTML support (code templates, toolbars etc) and configurable help (eg: you can add MySQL 5 and ADODB help files so they can be accessed from the IDE). After 18 months of trying every other IDE (Eclipse, PHP Edit etc) I always come back to PhpEd, which I've now officially made my home with a pro license :)
| [ 0 trackbacks ] | permalink | related link |




( 3 / 38 )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{
private $soap;
__construct($soap=null)
if($soap !== null){
$this->soap = $soap;
$this->soap->register('object..static_fn');
}
static function static_fn($in){
return $in;
}
}
| [ 0 trackbacks ] | permalink | related link |




( 2.9 / 29 )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).
| [ 0 trackbacks ] | permalink | related link |




( 3.1 / 28 )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 middle-click the "View this page in IE tab" from the FireFox right-click menu and blammo....
| [ 0 trackbacks ] | permalink | related link |




( 3.1 / 29 )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 broken nothing in the process...
Unfortunately, working with AJAX means that a lot of your business logic needs to be moved or replicated in the client (ie: browser). While you can isolate the business code from the presentation layer per se, your server-side tests aren't ging to pick up errors in your JavaScript.
What I've found is that even JavaScript unit testing isn't going to solve the problem outright, as some errors involve display issues found in certain browsers or under certain conditions. If you need to know that an HTML element is visible and in exactly the right location, you need to do visual testing. That usually involves humans (damn! damn! damn!).
And that brings me, finally, to the point of this entry. Selenium IDE is a FireFox extension that can record your Web usage and save the result as a test - complete with assertions and validation. You can also run your tests in any browser to ensure that your site is working across the board. While it's no replacement for unit testing your server side code, it is a marriage made in heaven - at least as far as I am concerned.
More green lights and more automation, two of my favourite things :)
| [ 0 trackbacks ] | permalink | related link |




( 3.1 / 27 )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... So my workaround is to convert the object parameters to strings first. Not elegant, but functional - although my validation routines can no longer test is_int() from PHP and I need to use intval() instead. Of course, I could rewrite the xajax.ObjectToXML() function, but I'll wait to see whether anyone else can verify this as a bonafide bug first :)
| [ 0 trackbacks ] | permalink | related link |




( 3 / 28 )Back Next



Avatar



