List of Version Control Web Sites

Written by Welzie

July 24th, 2009 at 10:07 am

I recently needed to find a web site that offered version control services. I was having server issues and needed to find a reliable place to keep my code. Below is a list of sites that I found and some info about each one. Please add comments if you like or dislike any of these.

Note: The “cost” list below only shows the basic packages. Visit the sites for other plan details.

FREE – Version Control Hosts/Hosting

Cost
Per
Month
Disk
Space
Number
of
Repos
Number
of
users
Version
Control
Options
SSL
beanstalkapp.com free 100mb 1 3 SVN no
unfuddle.com free 200mb unlimited 2 git, SVN
projectlocker.com free 500mb unlimited 5 git, SVN no
bitbucket.org free 500mb 1 ? mercurial yes
xp-dev.com free 500mb unlimited unlimited SVN no

Cost – Version Control Hosts/Hosting (Basic Packages)

Cost
Per
Month
Disk
Space
Number
of
Repos
Number
of
users
Version
Control
Options
Other
Tools
Available
assembla.com $3 per project
+ $3 per gig
pay per gb 1 pay per user SVN, git, mercurial ?
svnrepository.com $3.95 500mb 1 unlimited SVN, git, mercurial trac, redmine
hosted-projects.com $7 100mb unlimited unlimited SVN trac, WebDAV
wush.net $6.5 1gb 1 unlimited SVN Trac, Bugzilla, FogBugz, WebDAV, WebSVN
cvsdude.com $6 250mb 2 5 SVN ?
beanstalkapp.com $15 3gb 10 5 SVN basecmap, campfire, fogbuz
svnsite.com $5 400mb 1 4 SVN
unfuddle.com $9 512mb unlimited 10 git, SVN
codespaces.com $3 500mb unlimited 2 SVN ?
projectlocker.com $2.08 2.5gb unlimited 2 git, SVN Trac
GitHub.com $7 600mb 5 1 git ?
bitbucket.org $5 500mb 5 1 mercurial ?
xp-dev.com $3.3 ($40 a year) 2000mb unlimited unlimited SVN ?


Version Control with Git (Amazon)


Pro Git (Amazon)


Practical Subversion, 2nd Edition (Amazon)




Mercurial: The Definitive Guide (Animal Guide)
Share

PHP Framework Comparison

Written by Welzie

July 23rd, 2009 at 11:37 pm

Posted in php

Tagged with ,

With 25 comments

Yes this is yet another PHP Framework comparison. A few months back I was trying to decide which PHP framework to use on a project. I wanted to use a currently popular framework because that way I would get the best support from the devoted contributors and users. Choosing a popular or active project is important when dealing with open source tools.

From my research I found that cakePHP, Zend Framework, and codeIgniter are currently the most popular PHP frameworks. Below are my notes and thoughts about of each framework.

Some of this will only make since if you are familiar with MVC frameworks, if you are not read this first http://en.wikipedia.org/wiki/Model-view-controller

cakePHP

http://cakephp.org/

Google results

Books







Mailing List/Forum Activity

Pros

Cons

Notes

Zend Framework

http://framework.zend.com/

Google results

Books







Mailing List/Forum Activity

Pros

Cons

Notes

CodeIgniter

http://codeigniter.com/

Google results

Books





Mailing List/Forum Activity

Pros

Cons

Notes

Share

PropertyPlaceholderConfigurer with Default Values

Written by MikeNereson

July 23rd, 2009 at 9:22 pm

Posted in java

Tagged with ,

With one comment

My current project relies heavily on Spring. We use the PropertyPlaceholderConfigurer so that our application contexts can pull values from the properties files and inject them into our beans. This is all very common. This means when the beans are being created and a value like ${someproperty} shows up, the BeanFactory visits the configured properties files to find the value for someproperty and injects that value into the bean.

The problem arises when a bean is configured using such a placeholder but the requested property is not found. This causes our application to fail to start.

Our solution was to extend PropertyPlaceholderConfigurer to provide default values. These default values are loaded before loading any properties files.  Firs well glance over the java class.

import java.io.IOException;
import java.util.Properties;
import java.util.Map;
import java.util.HashMap;

public class DefaultPropertyPlaceholderConfigurer
        extends org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
{
  private Map<String, String> startingProperties = new HashMap<String, String>();

  public void setStartingProperties(Map<String, String> startingProperties)
  {
     this.startingProperties = startingProperties;
  }

  public DefaultPropertyPlaceholderConfigurer()
  {
      try
      {
          loadDefaultProperties();
      }
      catch (IOException e)
      {
          logger.warn("failed to load default properties", e);
      }
  }
   private void loadDefaultProperties()
          throws IOException
  {
      final Properties defaultProperties = new Properties();
       for(Map.Entry<String,String> entry : startingProperties.entrySet())
      {
          defaultProperties.put(entry.getKey(), entry.getValue());
      }
       this.setPropertiesArray(new Properties[]{defaultProperties});
  }
}

And the XML bean definition for our new PropertyPlaceholderConfigurer.

  <bean id="propertyConfigurer"
        class="app.factory.config.DefaultPropertyPlaceholderConfigurer">
      <property name="ignoreUnresolvablePlaceholders" value="true" />
      <property name="startingProperties">
          <map>
              <entry key="one.two.three" value="123" />
          </map>
      </property>
      <property name="locations">
          <list>
              <value>/WEB-INF/classes/preferences.properties</value>
          </list>
      </property>
  </bean>

So now, when one.two.three is not included in the properties file preferences.properties the value will be initialized to 123. The value is defined in the properties file, the default value of 123 is overridden with the custom value.

Use Case

Here are the details on our specific use case. We release updates that add new properties, however, in order for the user to run the updates, the application has to start first (it is a web application). If the property is not set then the BeanFactory fails to start the application because it can not resolve the placeholder. So the software can’t start without running the updates first, but the updates can not be run until the application is started.

Now the web application starts and uses the default value, the administrator can run the updates which add the custom values to the preferences.properties file, and the user is prompted to restart the software after the updates are complete. The restart is required to read the new values into the bean.

Oops

While I was writing this post I realized that there was a much simpler way to provide default properties without extending the base class.

Any ideas as to how I could have done it?

Share