Further Development on TheRockBand site

Having made great progress this week setting up subversion, I was anxious to get started this morning, only to have all kinds of weird failures.

It turned out that I had created a new directory when I checked out the code, but hadn’t switched the vhosts paths to point to it, nor the ZSE path info. So it took me awhile to figure that out.

Next I implemented the Song Add/Edit/Delete actions. Delete had a bug caused by the dependent table info not being correct. In this case I used the table name instead of the table class. I determined this by tracing down into the ZF code. When a Zend_Db_Table_Row is deleted, it automatically performs a delete of any dependent tables. This is cool, but means that if I specify dependentTables and referenceMaps then they better be correct.

I’ve been reading up on the Dojo drag-and-drop support, and will be using this for editing lineups. I’ll display a list of the possible lineup items (eg. Special, 1st congregational, etc), and song, and allow them to be dragged into a blank lineup matirx.

But first I will get based pages working so we can get the site back online this weekend.

Updating the website

Ok, so now that I am able to work with the code and interact with Subversion, it’s time to update the website.
1. SSH userid@therockband.org
2. CD therockband.org/live or CD therockband.org/test
3. svn checkout http://svn.therockband.org .

Note the ‘.’ at the end of the svn checkout command line. Without specifying a path svn will use the path in the repository, which in this case is svn.therockband.org which isn’t what we want. Also, if not careful, the files might go right over top of the repository itself (doing nothing).

To avoid confusion, I’m going to create separate directories for the ‘live’ and ‘test’. Now when I run ‘checkout’ I see all of the files getting copied. When I run ‘update’ I see a list of the files that needed to be updated and the new revision number.

It doesn’t get much easier than that.

Continuing with Subversion in Zend Studio for Eclipse

I’ve been making updates to the code. Now I need to check them into SVN. Since I have the SCPlugin installed, I simply use Finder, right-click on the top folder(s), and select ‘Subversion Commit…’. This recursively lists all files that have changed, and checks them in.

So now I’m wondering how to work with Subversion from within Zend Studio for Eclipse (ZSE).

It appears at this point that I’ve made a mistake by installing Subclipse. It appears that Subversive comes already installed with Zend Server CE, so now I see two ‘SVN’s listed in various places. It isn’t readily apparent that either is better than the other, so I’m going to uninstall Subclipse to avoid confusion. So now my Project Configuration shows:
Subversion Client Adapter (Required) 1.6.0.2
Subversion JavaHL Native Library Adapter (Required) 1.6.2.1
Subversive SVN Team Provider (Incubation) 0.7.7.I20090224-1900
SVNKit Library 1.3.0.5847

This appears to have fixed things. So now in the PHP Explorer I see a symbol to the left of each file if the file is out-of-sync with the repository, and a version number to the right of it. Right clicking on any file gives me all the subversion options under the ‘Team’ menu item, and Compare With and Replace With give me options for working with the repository. This is very cool.

Using Subversion in Eclipse

Having setup a Subversion repository on Dreamhost and imported all the existing code, I’m ready to start using it in my day-to-day programming. I’ve already installed the Subclipse 1.4.8 plugin, so let’s figure out how to use it.

To check out a working copy:
* Eclipse File->Import->SVN/Checkout Projects from SVN, next
* Create a new repository (since this is the first time), next.
* Enter the URL to the repository (http://svn.therockband.org
At this point I got an error “Unable to load default SVN Client”.

On OS X Subclipse requires JavaHL. This appeared to be installed, but maybe this is causing the problem. So I downloaded the Universal Mac package from CollabNet (http://www.open.collab.net/downloads/community/). This appears to be a newer version 1.6.2.
Before continuing with the install, I disabled the existing Subversion plugins in Eclipse (everything except Subversive, which indicated that it was required by the Zend Studio CE.
Installation put a copy of Subversion in /opt/subversion.
Now I installed Subclipse in Eclipse from the 1.6 Subclipse path.

Now I can open the SVN Repositories Perspective. However, the ‘Synchronize’ function isn’t working. I’ll leave that for tomorrow.

Setting up Subversion

Having downloaded and installed subversion, I’m ready to set it up for use with all of my website code. Since I’m working on a MacBook Pro, I’ll be using Terminal’s command line interface.

The svn-book available from http://subversion.tigris.org/ is a very useful document.

DreamHost supports subversion, so I’ve setup a repository there and a subdomain. I can access it at svn+ssh://userid@therockband.org/home/userid/svn/TRBSource. On DreamHost user’s must be specifically created or granted permission to access Subversion, so I added permissions to my main ID and created a couple additional IDs with subversion permission.

DreamHost FAQs list instructions for setting up credentials to allow accessing the site without specifying password every time (SSH#Passwordless_login). I set this up and provided the password one time. Now my accesses can be done quickly without being prompted for a password each time.

The initial set of files are added to the repository using the svn import command:
cd /Users/Ron/Sites (the documentroot folder on my MBP)
svn import newrockband2 svn+ssh://userid@therockband.org/home/userid/svn/TRBSource -m “Initial import”
During the process a message is displayed indicating each file being added.

I can now ‘list’ the files using:
svn list svn+ssh://userid@therockband.org/home/userid/svn/TRBSource
to verify that everything is there. The list shows that ‘application/’, ‘public/’, and ‘tests/’ folders were added. These are the contents of my ‘newrockband2’ folder. The folder itself was not added.

So now I rename the original newrockband2 folder, create a new one, and creating a working copy in the new folder using ‘svn checkout …’ on all 3 directories (from within the new directory).

Ok, so now I realize that this isn’t the layout that I really wanted. I didn’t create the recommended ‘trunk’, ‘branches’, and ‘tags’ directories first. So I’ll need to create these directories, and then move my new directories to trunk/. So a quick check with ‘svn help’ shows ‘move’ and ‘mkdir’ commands (among others). ‘svn help mkdir’ and ‘svn help move’ give info on using these commands. However, I’m get an error when trying to use mkdir telling me that I haven’t setup environment variables to display/edit log messages. So for now I’m going to leave it alone. I’ll add/move those later.

First of course I make sure that my backups are up-to-date. I’m using Time Machine, so I verify that it has completed a recent backup. Now I’m going to cleanup my Sites folder, deleting a lot of old stuff (it’s backed up, right?), then check-out the code I just put there.

Having previously installed SCPlugin, now when I look at my newrockband2 folder in Finder I see green checkboxes next to the directories 🙂

However, browsing to the new copy displays an error message complaining that it cannot open the log.txt file. So I locate the log file and change permissions ‘chmod 777 log.txt’ and all appears to be well now.

Now I need to check out the code to the live site (new.therockband.org). This is described in http://wiki.dreamhost.com/Subversion#Gotchas. So I SSH into the site (ssh userid@therockband.org):
cd therockband.org
svn checkout http://svn.therockband.org

Browsing to the site now, I see that the DB path is incorrect (127.0.0.1). The APPLICATION_ENV is specified in the .htaccess file, so I edit it using pico. There appears to still be an error, which I’ll investigate tomorrow. But for now it appears that Subversion is working, and can directly update live site. Tomorrow I’ll investigate using it to deliver to a test site also.

Web Development

For the past 4 months I have been knee deep in refreshing and extending my web development skills.

I decided to move some of software I wrote at work over to be web based, since many of my users are located in Taiwan and Shanghai. This has been a very interesting project. I’ve had a lot of fun doing it, and learned a lot in the process.

Below is an append that I have made to one of the Zend forums:

I’ve recently moved from Dreamweaver (DW) to Eclipse PDT (without Zend). I’m trying to avoid the $400 to purchase Zend.

I have been pretty much hand coding PHP and JavaScript in DW, using DW to help with CSS and FTP posting to the server.

DW is very helpful when it comes to the graphical/artistic aspects of the site, and was helpful in getting PHP code started. I like the way it helped me get MySQL going, and some of the code it generates for PHP handling of forms, etc.

However, once I outgrew the built-in Spry capability, what I found was that the code it generated was horrible to try to maintain and extend afterwards. I’ve had to refactor/rewrite all of it.

Let me say that using Dreamweaver allowed me to get my last site up quickly, and for that it is a very powerful tool. However, once I reached a certain level of complexity (and personal skills) I needed to ‘graduate’ to something more programmer-centric.

I’ve spent the past couple weeks working with Eclipse+PDT. It took me a day to get things downloaded, mapped to my directories, and the free Zend Debugger installed on my local Apache test server.

The fact that all of this was free was a prime consideration for me at this point. I think if I had had $400 I would have purchased the all-in-one Zend Studio for Eclipse things to simplify and speed up doing all of this. It would be nice to have had technical support during this process.

That gave me a good IDE, but no way to keep my production server updated. I created the Eclipse project right within my local Apache DocumentsRoot so I don’t need to copy to/from the local test server. I also set DocumentsRoot to my AccuRev workspace, so SCM check-in/check-out is quite simple. My company uses AccuRev so I didn’t really have a choice there. If I had the choice I would have installed Subversion and taken a look at Subclipse. I agree with the earlier post that it is worthwhile and probably *not* overkill.

I’ve been using BC2 for synch’ing my local files to the production server. (I use a separate AccuRev workspace to track these changes). This works ok, but I’ve never figured out how to resolve the linux/windows file differences, so the files always appear different until opened and compared. I’ve done a little reading about the RSE(?) project on Eclipse which is supposed to provide remote site management, but haven’t figured it out yet and haven’t wanted to spend a lot of time researching it. My guess is that eventually this will provide the sort of synch capability we all need right within Eclipse.

I purchased Zend Studio 5.5 long ago, and am in the process of evaluating using it instead of Eclipse for now. It appears to provide the main things I needed (Editor, IDE, Debug, FTP) and it also runs on both Mac (my laptop) and Windows (my work desktop).

I hope this long winded post provides you with a few ideas and pointers. Good luck.

Update as of 2/16/09: I convinced my work to purchase a copy of Zend Studio for Eclipse and am now using that. This appears to have been a good choice and well worth the $400 investment.

I’m now part way up the steep learning curve of using Zend Framework. I’ve very excited about this and expect to convert all of my current sites over to Zend framework. I’m working my way through Rob Allen’s “Zend Framework in Action” book, but found that I also needed to view some online youtube tutorials and the Zend online tutorial before it all started clicking for me. I recommend doing this.

(end of forum append)

Having made the point in the first append that I would purchase Zend Studio if I had $400, I went back to my work and requested to purchase it and they agreed. So now I’m using Zend Studio for Eclipse and so far am very happy with it. It’s support for Zend Studio is perhaps the biggest advantage at this point.

I came across Rob Allen’s web site (akrabat.com). This is another good resource for learning about Zend Framework.

Valentine for Life

This is a song that I wrote for the love of my life for Valentines day. I attempted to play and sing it to her, which gave us both a good laugh. I eventually slogged my way through it, but I’ll need to record it so that she can hear what it sounds like start to finish.

 
C 
Shelley I  
Am 
love you and  
F 
I just got to  
G 
say.
 
You’re my  
C 
full moon on  
Am 
dark nights, and  
F 
cool shade on hot  
G 
days.
Am 
Do you re
F 
member our first  
C/E 
trip out to  
G/D 
LA?
Am 
I got on  
F 
one knee and I  
C/E 
asked you please to  
G 
say that you would
Chorus 
C 
be my wife (say that you’d)  
Am 
be my wife (say that you’d)
F 
be my wife, and my  
G 
Valentine for  
C 
Life
E 
g c g  
Eb 
gb 
 
 
D 
 
C 
(trill hi c chord)
 
C 
You are my  
Am 
band-aid 
 
 
F 
when I get a  
G 
cut.
C 
You’re so ad
Am 
venturous, you  
F 
pull me from my  
G 
rut.
Am 
Do you re
F 
call the night that  
C/E 
you ran out of  
G/D 
gas?
Am 
We’d wanted to  
F 
wait but we knew  
C/E 
this chance couldn’t  
G 
pass

(so won’t you)

Chorus 
C 
Please be mine (say you will)  
Am 
please be mine (say you will)
F 
please be mine, Be my  
G 
lifetime 
 
Valen
C 
tine
E 
g c g  
Eb 
gb 
 
 
D 
 
C 
(trill hi c chord)
 
C 
Now that we’re  
Am 
older, folks think  
F 
we should just slow  
G 
down. 
 
But,
C 
Shelley I  
Am 
tell you, you still  
F 
make my head spin  
G 
round.
Am 
It may take  
F 
longer, but that  
C/E 
makes me want to  
G/D 
sing:
Am 
”More of a  
F 
good thing, is still  
C/E 
more of a  
D/F# 
good 
 
thing!”

(key change to D)

 
(repeated in new key)
D 
Shelley I  
Bm 
love you and  
G 
I just got to  
A 
say.
 
You’re my  
D 
full moon on  
Bm 
dark nights, and  
G 
cool shade on hot  
A 
days.
Bm 
Do you re
G 
member our first  
D/F# 
trip out to  
A/E 
LA?
Bm 
I got on  
G 
one knee and  
D/F# 
you told me  
A 
OK

that you’d

D 
be my wife (you said you’d)  
Bm 
be my wife (you said you’d)
G 
be my wife, and my  
A 
Valentine for  
D 
Life

(repeat)

F# 
a d a  
F 
ab d ab  
E 
g d g  
D 
(trill hi d chord)

Don't Check Your Faith at the Door

This is a song for use in the sending forth. It has sort of a Peter Gunn feel to it.

Verse?

Well you’ve heard sermons, and …

to help strengthen your convictions.
We’ve sung hymns and …

Now there’s only one thing more:

Don’t check your faith at the door.

Chorus

Take it out there with you.

Don’t leave it here inside.
You know the world needs to hear you.
So go out there, and …

Trip to Quantico, Virginia

We’ve travelled out to Virginia to attend our son Aaron’s US Marine OCS training graduation tomorrow morning. We’re settled in at the Hampton Inn, and pretty exhausted from having had to get up quite early to catch our 7:00 am flight, as well as having spent about twice as much time driving around Virginia because I kept either gettting lost or making wrong turns.