The best retrospective of ColdFusion frameworks I've found on net. Article will give you insight into most popular frameworks and categorization.
Read It!
Manager asks “but what if we only have crap developers”, default response is “well, in that situation, standard best practice is to fail”
November 24, 2008
ColdFusion Frameworks
Labels:
AOP,
Coldspring,
Framework,
Fusebox,
IoC,
Mach II,
Model-Glue,
ORM,
Reactor,
Transfer
November 17, 2008
Unit testing in ColdFusion
Why would CF community differentiate from any other community? That's why "all" Unit testing platforms are derivatives of xUnit project. My choice is CFUnit, because CFCUnit looks abandoned (not sure is it really), it has Eclipse plugin and it's better documented. But, after all, both environments do the job well.
More to read:
Test Driven Development with ColdFusion (part I-III)
- Download CFUnit from Sourceforge.
- Unpack zip file content ("net" dir) into web server root (ie Apache doc root or IIS webroot).
- Test it on http://localhost/net/sourceforge/cfunit/CFUnitExample/mytest.cfml
- Eclipse Plugin comes prepacked with the latest CFEclipse distribution.
More to read:
Test Driven Development with ColdFusion (part I-III)
CFC variables.instance
When I saw for the first time, in cfc code, variables.instance = StructNew(), I asked myself "What, what, what?" :) Well, purpose of "subinstancing" of variables structure, is nothing more but teh convenience:
1. It's organized better. All variables of same kind can be grouped in that manner.
2. Easier for cfdump-ing. Do and you'll see what I'm talking about.
3. And it is more obvious what you do: variables.instance.myVar="A" means "I am adding (assigning value to) myVar into instance of variables structure"
Not necessity but can be handy
1. It's organized better. All variables of same kind can be grouped in that manner.
2. Easier for cfdump-ing. Do
3. And it is more obvious what you do: variables.instance.myVar="A" means "I am adding (assigning value to) myVar into instance of variables structure"
Not necessity but can be handy
November 13, 2008
Developer Guidelines
I found this in "Developer Guidelines" on R-Project developer page. This is something I was always followed during my work but never had it written and digested. So, thank you r-project people for this :) Here it goes:
- DO fix simple bugs
- DO NOT fix bugs that require extensive modification
- DO NOT fix exotic bugs that haven't bugged anyone
- DO make small enhancements if they are badly needed
- DO NOT let one user decide what is badly needed
- DO fix configuration for broken platforms
- DO NOT break functioning platforms in the process
- DO NOT fix things that are not broken
- DO NOT restructure code
- DO NOT add experimental code
- DO NOT modify the API (unless absolutely sure it is buggy)
- DO NOT change defaults without a *very* good reason
- DO clarify documentation
- ONLY add or modify examples if needed for clarification
- DO NOT reword messages
- DO NOT modify regression tests (except if they were buggy)
- DO NOT add code that cannot become reasonably complete by the next release.
November 12, 2008
Eclipse and SVN Client
I choose Subclipse as my favorite SVN Client plugin for Eclipse. Why? Because most people use it. To install it go here
To start working open Eclipse, go to Window -> Show View -> Other, open up the SVN Folder and pick the SVN Repository, click on the "Add SVN Respository" button and enter the address of your SVN server (svn:// or svn+ssh:// or http:// ot https://). That's it.
Few basic commands (abstract from SVN online book):
The typical work cycle looks like this:
1. Update your working copy.
• svn update
2. Make changes.
• svn add
• svn delete
• svn copy
• svn move
3. Examine your changes.
• svn status
• svn diff
4. Possibly undo some changes.
• svn revert
5. Resolve conflicts (merge others' changes).
• svn update
• svn resolve
6. Commit your changes.
• svn commit
To start working open Eclipse, go to Window -> Show View -> Other, open up the SVN Folder and pick the SVN Repository, click on the "Add SVN Respository" button and enter the address of your SVN server (svn:// or svn+ssh:// or http:// ot https://). That's it.
Few basic commands (abstract from SVN online book):
The typical work cycle looks like this:
1. Update your working copy.
• svn update
2. Make changes.
• svn add
• svn delete
• svn copy
• svn move
3. Examine your changes.
• svn status
• svn diff
4. Possibly undo some changes.
• svn revert
5. Resolve conflicts (merge others' changes).
• svn update
• svn resolve
6. Commit your changes.
• svn commit
Setting up SVN Server
OK, Let's be honest. Who doesn't like to do a job in a minute and pretend to be uber smart? Software that would allow you that, in case of SVN installation, is svn1clicksetup. Without further hesitation I will tell you to go there, download it and do your "next-next-finish" work.
But, if you really,really, really feel that you need to put some effort (aka extra work), you may go to read Chapter 6. Server Configuration of SVN book online.
This chapter will help you to decide which server configuration to choose and how to set it up.
Read It!
Ofc, I've chosen easiest option - vanilla svnserve installation. Why? Well I am not an administrator, I am not willing to become one and there is always large possibility that company you are working for already have SVN server configured or rented.
Btw, "Version Control with Subversion" is very good literature to read and place where you can look for answers on this subject.
But, if you really,really, really feel that you need to put some effort (aka extra work), you may go to read Chapter 6. Server Configuration of SVN book online.
This chapter will help you to decide which server configuration to choose and how to set it up.
Read It!
Ofc, I've chosen easiest option - vanilla svnserve installation. Why? Well I am not an administrator, I am not willing to become one and there is always large possibility that company you are working for already have SVN server configured or rented.
Btw, "Version Control with Subversion" is very good literature to read and place where you can look for answers on this subject.
Eclipse error: Error retrieving feature.xml
Using Software Updates and then Find and install
1. Delete the site.xml file in your Eclipse directory.
2. Run Help->Software Updates->Find and install, the error will not appear.
If the plugin has the official site, from where you can install it in Eclipse using Help->Software Updates->Find and install, I suggest that you should not download it yourself and unzip it into your Eclipse directory.
source
1. Delete the site.xml file in your Eclipse directory.
2. Run Help->Software Updates->Find and install, the error will not appear.
If the plugin has the official site, from where you can install it in Eclipse using Help->Software Updates->Find and install, I suggest that you should not download it yourself and unzip it into your Eclipse directory.
source
Preparing Eclipse 3.x for ColdFusion Development
CFEclipse - An Eclipse plugin for ColdFusion
The best plugin I found, for Eclipse IDE. Simply it gears Eclipse with all-you-need for CF development: color-coding, content outline, code & bracket highlighting, code folding, tag code completion, snippets, etc... full feature list
Uber fast install:
1. Select the "Help->Software Updates->Find and install" menu option
2. On the screen that is displayed, select 'Search for new features to install' and click the 'Next' button
3. Now click the 'New Remote Site' button
4. Enter a name for the update site, for example "CFEclipse". In the URL box, enter "http://www.cfeclipse.org/update" and click the OK button
Note: This is the moment when you are going to install CFUnit too.
ColdFusion 8 Debugging
Well, not much to say but to advise you to sit and read this ADC step-by-step tutorial.
Read it!
The best plugin I found, for Eclipse IDE. Simply it gears Eclipse with all-you-need for CF development: color-coding, content outline, code & bracket highlighting, code folding, tag code completion, snippets, etc... full feature list
Uber fast install:
1. Select the "Help->Software Updates->Find and install" menu option
2. On the screen that is displayed, select 'Search for new features to install' and click the 'Next' button
3. Now click the 'New Remote Site' button
4. Enter a name for the update site, for example "CFEclipse". In the URL box, enter "http://www.cfeclipse.org/update" and click the OK button
Note: This is the moment when you are going to install CFUnit too.
ColdFusion 8 Debugging
Well, not much to say but to advise you to sit and read this ADC step-by-step tutorial.
Read it!
Developing ColdFusion Extensions in Java
To make this short and effective:
1. You cannot reload CFX developed in Java without server restart. Empirically proven and confirmed by other CF developers (as some ppl claim, even by Adobe tech support)
ref: http://dreamweaverforum.info/advanced-techniques/78901-how-reload-java-cfx-without-restarting-coldfusion.html
2. Article to read to get into this subject fast and "good enough"
http://www.intermedia.net/support/coldfusion/cf5docs/Developing_ColdFusion_Applications/CFXTags4.html
3. Example
Voila! Now you know everything :)))
1. You cannot reload CFX developed in Java without server restart. Empirically proven and confirmed by other CF developers (as some ppl claim, even by Adobe tech support)
ref: http://dreamweaverforum.info/advanced-techniques/78901-how-reload-java-cfx-without-restarting-coldfusion.html
2. Article to read to get into this subject fast and "good enough"
http://www.intermedia.net/support/coldfusion/cf5docs/Developing_ColdFusion_Applications/CFXTags4.html
3. Example
import com.allaire.cfx.*;
public class test implements CustomTag {
public void processRequest(Request request, Response response) throws Exception {
// TODO Auto-generated method stub
String strName = request.getAttribute( "NAME" );
response.write( "Cao, " + strName );
Query qr = request.getQuery();
if ( qr == null )
{
throw new Exception(
"Missing QUERY parameter. " +
"You must pass a QUERY parameter in "+
"order for this tag to work correctly." ) ;
}
int i=1,j=1;
while(i<=qr.getRowCount()){ j=1; response.write(" "); while(j<=qr.getColumns().length){ response.write(qr.getData(i, j)+" | "); j++; } i++; } } }
Voila! Now you know everything :)))
Subscribe to:
Posts (Atom)