Wednesday, May 23, 2007

PHP 5 in Java

Quercus is Caucho Technology's fast, open-source, 100% Java implementation of the PHP language. Quercus is a feature of Caucho Technology's Resin Application Server and is built into Resin - there is no additional download/install. Developers using Resin can launch PHP projects without having to install the standard PHP interpreter (http://www.php.net) as Quercus takes on the role of the PHP engine.

Quercus + Amfphp = Good Things :)

Wednesday, May 16, 2007

amfphp - Flash remoting for PHP

amfphp has a new url: http://www.amf-php.org/ .I have been following the domain name mess and I know what a headache it can be. I have had a few client forget to renew their domain names and the @#$% hits the fan when websites go down and the email stops working.

Friday, May 04, 2007

Flex 2 Inline Item Renderer Tip

I stumbled upon an unknown property as I was trying to use an Inline Item Renderer on my DataGrid Columns. If you use the <mx:component> tag with your inline item renderer and try to have your component call an event in your main application you will get a nasty "Access to undefined method blah blah". This is because your Inline Item Renderer is unaware of what exists in your main application. But you can use the outerDocument property to access event handlers in you main application.

<mx:itemRenderer>
<mx:Component>
<mx:VBox >
<mx:Button label="Remove" click="outerDocument.remove()"/>
</mx:VBox>
</mx:Component>
</mx:itemRenderer>

Wednesday, April 25, 2007

Fluorine Tutorial

I wrote a tutorial on using Amfphp 1.9 with the Flex 2 SDK. One of the things I wanted to do was to convert my Amfphp tutorial into a Fluorine tutorial but just couldn't find the time to do so. Well as luck would have it I need to use Fluorine for on an application for a client. So I will begin development on a Fluorine with the Flex 2 SDK tutorial. I would like to publish this tutorial on HowToForge but I don't think that have a section for C#, .NET, or Flex 2.

Wednesday, April 11, 2007

Amfphp vs WebOrb PHP

For those of you who missed the great discussion over on Flex Coders.

Amfphp

I'll be releasing amfphp 2 before I retire, and I have someone here that is interested in picking up amfphp, someone I can't mention just yet but trust me that my successor will be a very talented and respected member of the community that I am sure will do an awesome job with the project.

As to which you should choose between amfphp and WebORB, it depends. Mark loves his WebORB, and I love amfphp, but they are different projects, and have different design goals, so that either one is most appropriate for different uses. The differences are subtle though, I'll be the first to admit, which is why I wasn't particularly thrilled about WebORB and SabreAmf when they first came out, as I felt it was a duplication of efforts (much like the well-publicized argument over SWX with Aral). But regardless, the effort has already been put in, so there's no use in stopping it now. I'll restate the design goals of amfphp from the homepage:
  • Nothing required - PHP4/PHP5 compatible, no extensions needed
  • Low footprint, lightweight, fast
  • Convention over configuration (service and class mapping)
  • Can be embedded into a framework (see CakeAmfphp, Seagull)
  • Services are "non-specific" PHP classes that are portable to anything without code change
  • Productivity tools included (service browser, code gen, profiling)
  • Batteries included - XML-RPC, JSON
  • Not a framework by itself (use your own)

I'd like if Mark could put up a similar statement of design goals for weborb so that users can make an informed decision.

As for the issue of the AMF extension, I've contacted Mark about it, and in theory weborb could be made compatible, and SabreAMF will be eventually (as far as I can tell). I don't think Mark wants to do it though, perhaps because of the way the serializer is implemented on their side. My personal feeling is that the serializer and unserializer in WebORB are misadapted to the realities of PHP, split into several classes for doing simple, computationally intensive things, but one could argue (and I'm sure that Mark would) that clarity of code was chosen over performance, a valid decision if it doesn't affect performance that much (and Mark is right, the 50-200ms difference won't really make a difference in most projects, but in some which have very high traffic it most definitely will, which is why the AMF extension was made).

Patrick

WebOrb PHP

Thanks Patrick, I'm happy to talk about the goals we have for WebORB.The vision for the product is to provide the best possibledesign/runtime platform for Flex applications and .NET/PHP/Rubybackends. Our goals include:

  • - non-intrusive approach
  • - ease-of-use
  • - simplicity of integration
  • - extensibility
  • - increased developer productivity

plus all the usual suspects expected anywhere from a one person shopto a major enterprise:

  • - performance
  • - reliability
  • - scalability

Currently we're wrapping up a new release for WebORB for .NET and assoon as it is out in production, we will port all the new features toPHP and Ruby. That said, it means all the features one would find inour .NET edition are going to be available in WebORB for PHP (andRuby). For example, take a look at WebORB Data Management for Flex(http://www.themidnightcoders.com/weborb/dotnet/wdmf-faq.shtm), thisis something Flex/PHP developers would love to have. On top of thisadd real-time messaging, remote shared object support, data push, codegenerator, performance monitor, etc.

I highly value code clarity and elegant software design and I amstrongly convinced that a product with a clear and well-thought outdesign does NOT have to suffer in the area of performance. All ourproducts share the same design. As a result, porting features orfixing bugs takes only a fraction of time than creating a newimplementation from scratch. For instance, it took us only three weeksto create the very first release of WebORB for PHP.

And lastly, when choosing an open-source product (and this is strictlymy personal opinion) I would recommend going for one backed by acommercial entity. After all, if I bet my business on it, I want tomake sure I have someone to call at 3am in the morning if things go bad.

Cheers,

Mark

Friday, March 16, 2007

FlexCRUD

Check out FlexCRUD by Mike Crowe. I just started reading the documentation and I am very excited about what it can do. Let the coding begin.

-Mike: Can it also gather requirements :)

Amfphp 1.9 Tutorial. Good, Bad or Don't Care

I recently had my tutorial published on http://www.HowToForge.com . I have not been getting very much feedback on it. I don't know if that's a good thing or not. I expected to have a lot of errors being it was my very first tutorial. It took me a little over two weeks to write because of my day job but I truly enjoyed writting it. My plans are to write a similar tutorial for Fluorine and FDS Express but I thought I let the community decide. What should my next Flex tutorial be?

Tuesday, February 27, 2007

Monday, February 19, 2007

Flex DataGrid Paging Example with Source

Many of you have requested the source to my Flex DataGrid paging example. Here it is http://develop.gurufaction.com/src/App.mxml and the example application can be viewed here http://develop.gurufaction.com/App.swf

Using Amfphp 1.9 with the Flex 2.01 SDK

I have submitted my Amfphp tutorial to HowToForge.com. I hope it gets published. Meanwhile I will post my tutorial online at http://develop.gurufaction.com/AmfTutorial/docs/app/FlexHowTo.html . I would like some feedback from the community. I have tested it but let me know if it doesn't work :) You can also preview the working example at http://develop.gurufaction.com/AmfTutorial/Main.swf

Monday, February 12, 2007

DAO Best Practices

I am currently working on a Flex 2 tutorial using AmfPhp 1.9 that I should have done by the end of the week :) While I was writing the DAO classes in PHP I stumbled upon a design issue. What should my CRUD methods return. They could return a boolean value that indicated that the methods completed successfully or I could return the new/updated value object. My example application uses a datagrid bound to an ArrayCollection of my VO's. Now upon successful completion of my CRUD method do I refresh the whole grid or just the VO that was changed? I am strongly leaning towards returning the VO. Any thoughts.

Tuesday, January 30, 2007

Smith 1.25 released.

Smith is a freeware, cross-platform ColdFusion engine, written entirely in Java. Running on the top of Java Runtime Environment and Java Servlet Container, it can be virtually deployed on any operating system and work with any web server. Smith represents lightweight, yet reliable alternative to the existing ColdFusion servers.

Monday, January 29, 2007

Can you find the BUG!

This problem was post on the Flex 2 Forum. This problem only happens with the Flex 2.01 release. Can you find the bug? The answer is posted here


BUG DESCRIPTION: errorString property is causing a buggy behavior, if i set an empty String to this property in order to clean a validation error for a TextInput control then its layout changes, it gets a weird black color on its border.

EXAMPLE:

&#60; mx:application><mx:textinput id="buggy"></mx:textinput><mx:button label="Show Bug" click="buggy.errorString = ''"></mx:button></mx:application>


mx_internal var origBorderColor:Number;

/** A bunch of Code Here**/

/**
* @private
* Set the appropriate borderColor based on errorString.
* If we have an errorString, use errorColor. If we don't
* have an errorString, restore the original borderColor.
*/
private function setBorderColorForErrorString():void
{
if (!_errorString _errorString.length == 0)
{
setStyle("borderColor", origBorderColor);
saveBorderColor = true;
}
else
{
// Remember the original border color
if (saveBorderColor)
{
saveBorderColor = false;
origBorderColor = getStyle("borderColor");
}
setStyle("borderColor", getStyle("errorColor"));
}
styleChanged("themeColor");
var focusManager:IFocusManager = focusManager;
var focusObj:DisplayObject = focusManager ?
DisplayObject(focusManager.getFocus()) :
null;
if (focusManager && focusManager.showFocusIndicator &&
focusObj == this)
{
drawFocus(true);
}
}

Thursday, January 25, 2007

ASDT . . are you alive?

I currently using Flash Develop as my primary Flex 2/AS3 editor and I am very happy with it but I wanted to research some alternatives. I came across the ActionScript Development Tool(ASDT) for Eclipse. Does anybody know if this project is still active? I posted a message on their mailing list but got no response. I would really like to contribute to this project. ASDT . . .are you alive?

Friday, January 19, 2007

Flex Run-Time Error with itemRenderers

Learning to use Flex 2 has been very rewarding. I have had a problem using the DataGrid control with ItemRenderers that I have not been able to resolve. I was able to reproduce the error in a small example. When adding and removing itemRenderers to a datagrid column at run-time I get a RTE. This alone does not seem to cause the RTE but I also set the datagrids dataProvider again which causes the error. You will need the Flash Player Debug version to actually see the error.You can view the example application at http://develop.gurufaction.com/flexbug/App.swf . The actual source can by found at App.mxml and LinkRenderer.mxml .

I thought I had a valid workaround when I stopped adding and removing the itemRenderer at Run-Time and just applied it to every column but I am still getting the error sometimes. My small example show the exact error I am getting so if anybody has any ideas please leave me a comment. The problem with learning new technologies is that you can never be sure if it is the technology or the programmer causing the problem. :)

Wednesday, December 13, 2006

SwfPlayer DNN Module

SwfPlayer is a DNN module used to embed a Flash movie into your DNN portal. I created it using SwfObject by Geoff Stearns . I modified Geoff javascript code to use the playerProductInstall.swf provided by Adobe using the "Flash Installer" setting under module settings.

Thursday, November 30, 2006

Flex Paging with Page Sets

I am back. I was going to close my blog because I was not able to update it as often as I would have liked but now I have something worth posting. I noticed a blog article on Bruce Phillps' Blog that I found very interesting so I decided to expand on his Flex Paging with an example that included pages and page sets. You can preview it here.

Friday, November 10, 2006

Blogging Ends

I have decided to stop updating my blog. I apologize if anybody out there actually reads it but since I do not have the time to keep it current I will close it.

Thanks
Michael

Wednesday, October 18, 2006

Db4o with Flex Data Services

I have just recently begun experimenting with Flex Data Services and db4o. db4o is an embedded object database for Java and .NET. I think using Flex with db4o would be very cool. It basically comes down to configuring the destination correctly.If anybody has sucessfully integreated these two technologies please post a comment about your experience.

Wednesday, October 11, 2006

FDS Project Template Update

I have update the FDS Project Template . I commented out the Tomcat specific library includes so that the build will work for those not using Tomcat. I have also changed the CATALINA.HOME property in the build.properties file to WEB.ROOT.