Rob Gonda's Blog

Multiple SVN repositories for Windows using Apache



1. Follow subversion for windows installation tutorial

2. Install Apache 2.0.55 by downloading and installing: http://www.apache.org/

3. After the installation finishes, run the following from a command prompt: "net stop apache2" (to stop the web server)

4. If you DON'T want/need SSL support, skip to step 9b below.

5. Rename httpd.conf in the apache config. directory (default is "c:\program files\apache group\apache2\conf") to httpd.conf.save

6. Browse to "http://smithii.com/ answer the questions and download and open the zip file (assuming you are allowed to do so).

7. Extract files from the zip you just opened to the base apache install directory (default is "c:\program files\apache group\apache2"). Be sure you preserve the folder names when extracting (i.e., don't just extract all the files to the same dir.)

8. Open ssl.conf in the apache configuration directory with notepad and change as follows:

a. Change "<IfDefine SSL>" to "#<IfDefine SSL>"

b. Change "</IfDefine>" to "#</IfDefine>" (last line of file)
This avoids the requirement of starting apache with the "-DSSL" parameter (which I couldn't get to work when running apache as a service).

9. Open httpd.conf in the apache configuration directory with notepad (default is "c:\program files\apache group\apache2\conf") and change the contents as follows:

a. Replace all "d:\test\apache2" with "c:\program files\apache group\apache2" (or whatever your base apache install directory is). Hint: Ctrl+H in notepad will allow you to do find/replace

b. Uncomment (remove "#") from "#LoadModule dav_module modules/mod_dav.so"

c. Add "LoadModule dav_svn_module modules/mod_dav_svn.so"

d. Add the following to the bottom of the file:
<Location /svn>
DAV svn
SVNPath "c:/documents and settings/svn_repos"
</Location>
Ensure you change the directory in SVNPath to be the actual location of your repository that you created when you installed subversion as part of Joe's tutorial. If you want more than one repository, you can create additional <Location> blocks. This example will allow you to browse to "http://localhost/svn". If you want a different URI for your repository, change the path after "<Location ..." line. Note: The above changes are NOT intended as "all you need" regarding apache configuration. It's only intended to get you a running example with subversion. You should review the manual and make any other configuration changes you deem appropriate (Hint: "http://localhost/manual")

10. Copy the following files from the subversion bin directory (default is "c:\program files\subversion\bin") to the apache bin directory (default is "c:\program files\apache group\apache2"):
libdb43.dll
intl3_svn.dll
mod_authz_svn.so
mod_dav_svn.so

11. From a command prompt, run "net start apache2".

12. If it fails to start, examine the Application event log. It should describe the error in enough detail for you to fix it (generally a configuration file error is the culprit). If you get a "not found" error loading module "mod_dav_svn.so", then ensure you completed step 7 above correctly.

13. From a command prompt, run "svn ls https://localhost/svn" (use http instead of https if you didn't install the SSL support) and it should display the root of your repository.

14. Further reading (for authentication and for authorization):
http://geekswithblogs.net/flanakin/archive/2005/08/31/51743.aspx
http://www.subversionary.org/sspidomainauth
http://www.erenkrantz.com/oscon/OSCON%202003%20Subversion%20WebDAV.pdf

I'm a proud user of FireFox 1.5

I’m a proud user of FireFox 1.5

Firefox 1.5 came out today, and I didn’t think it twice before upgrading. I use plenty of extensions and most of the ones I had worked.

Two of the ones didn’t work are: Roboform, and Live HTTP headers.

I downloaded the latest Roboform extension from http://www.roboform.com/browsers.html and it got it working immediately.

Live HTTP headers is a must and I use it everyday. I also found the latest extension at http://livehttpheaders.mozdev.org/ but site is acting extremely slow and I haven't been able to download it.


Flex 2.0 beta on the way

If you like Flex 2.0 Alpha, wait until you read this ... new functionality added to Flex 2.0 Beta is on the way … Among other things, and I would agree that Flex 1.0 may become a little slow … check this out:

For example, I showed start up performance for a fairly good sized business portal style app with charts and grids and a bunch of data. In Flex 1.5 with Flash Player 7, it takes 3.52 seconds to launch and fully display. At MAX, I showed the same app ported to Flex 2 starting up in 0.95 seconds, which is much, much faster. Well, Big Dave showed that we haven't stopped improving performance and the current build starts up in 0.59 seconds!

Big Dave then showed the scrolling app, which displays a datagrid that makes very heavy use of custom cell renderers and times how long it takes to scroll to the 50th record. In the Flex 1.5 version is takes an excruciating 15.90 seconds to run. The alpha version that I showed at MAX is much faster, taking just 3.06 seconds, which is more than 5 times faster. Well, Dave showed the results of our continued focus on performance and now it completes in just 1.25 seconds!

mssql-mysql-postgresql-oracle

SQL 2005 just came out, and since I am at a point where I really need to upgrade, I decided to look for options. Options include MySQL 5.0 (right), PostgreSQL, Ms-SQL 2005, and Oracle 10g.

I found several documents and interesting articles comparing this DBRMS’s…

Informational:
http://www.mssqlcity.com/Articles/Compare/sql_server_vs_mysql.htm
http://www.tpc.org/tpcc/results/tpcc_perf_results.asp
http://www.mysql.com/news-and-events/news/article_976.html

Critiques:
http://weblogs.asp.net/alex_papadimoulis/archive/2005/10/26/428527.aspx

Comparisons (excellent):
http://www-css.fnal.gov/dsg/external/freeware/mysql-vs-pgsql.html

And last but not least, a PDF document called Features, strengths and weaknesses comparison between MS SQL 2005 (Yukon) and Oracle 10g databases (attached).

Well, out of the batch, mysql is out… I’m looking for a reliable and scalable DBRMS that can handle hundreds of transactions per second in an active/active cluster environment. The introduction of views and stored-procs was interesting, it’s still missing essential locks, rollbacks, constrains, data validation, and I’m pretty sure that if I start playing with cursors and t-sql it will break.

PostgreSQL still doesn’t fully support the clustering I’m looking for, but I’ll keep looking, I might be wrong. Ms-SQL 2005 seems very promising, and I read some articles claiming that clustering is easier. I had a horrible time accomplishing this with SQL 2000 because another requirement is no disk-arrays… the servers are not even in the same continent.

I know Oracle will fulfill, but I have to study the price impact and code migration time. I’ll be installing ms-sql 2005 this week or weekend, and hopefully I’ll elaborate more early next week.

Database Mirroring (Extend log shipping, automatic failover to a standby server)

SQL Server 2005 significantly enhances the capabilities of log shipping by providing a database mirroring option. Database mirroring allows continuous streaming of the transaction log from a source server to a single destination server. In the event of failure to the primary system, applications can reconnect to the database on the secondary server almost immediately, without waiting for recovery to finish. The secondary database instance detects the failure of the primary server within several seconds and accepts database connections almost immediately after detecting the failure. Unlike failover clustering, the mirrored server is fully cached and ready to accept workloads because of its synchronized state. Well, what this really means is that you need three MSSQL server instances. However only a single instance is actually active and then up-to-date standby database should be available (which can not be accessed by users until failover)

Oracle has a very similar mirroring as compared to MSSQL by having Oracle physical standby with dataguard. The only difference is that with Oracle just two instances are required: active and passive.

Google's click-to-talk with an Advertiser.

I always admited google for their ideas and originality. An article just came out announcing google’s click to talk with an advertiser. This actually sounded good at first, but they’re not doing it over ip; instead, you have to provide with your own phone number and google will connect the two legs. Now that, I don’t think it’s a good idea… please are freighted with personal information, such as phone numbers… I personally would (never say never) not provide anyone with my phone number for free marketing calls… Still original, not the right method.

InPhase announces 300GB Disc

So just when you thought technology will stay steady for a while, a new disc format will try to penetrate the market next year: a 300 GB disc. Nice, a full HD backup in a singe disc… you’ve got to love that.

Google Sitemap for blogCFC 4.0

A few months ago Ray posted some code to generate a google sitemap.xml for blogCFC. He said it’s not final and it will be included in version 4… I guess there was no demand, or no one reminded him because it wasn’t included… In case anyone needs it, here’s a slightly altered version of the code to work for everyone.

<cfsetting enablecfoutputonly=true showdebugoutput=false>
<cfprocessingdirective pageencoding="utf-8">

<cfset params = structNew()>
<!--- Should be good for a while.... --->
<cfset params.maxEntries = 99999>
<cfset params.mode = "short">

<cfset entries = application.blog.getEntries(params)>

<cfset z = getTimeZoneInfo()>
<cfif not find("-", z.utcHourOffset)>
   <cfset utcPrefix = "-">
<cfelse>
   <cfset z.utcHourOffset = right(z.utcHourOffset, len(z.utcHourOffset) -1 )>
   <cfset utcPrefix = "+">
</cfif>

<cfset dateStr = dateFormat(entries.posted[1],"yyyy-mm-dd")>
<cfset dateStr = dateStr & "T" & timeFormat(entries.posted[1],"HH:mm:ss") & utcPrefix & numberFormat(z.utcHourOffset,"00") & ":00">

<cfcontent type="text/xml"><cfoutput><?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
   <url>
      <loc>#GetDirectoryFromPath(application.blog.getProperty("blogURL"))#</loc>
   <lastmod>#dateStr#</lastmod>
      <changefreq>hourly</changefreq>
      <priority>0.8</priority>
   </url>
   </cfoutput>
   <cfoutput query="entries">
      <cfset dateStr = dateFormat(posted,"yyyy-mm-dd")>
      <cfset dateStr = dateStr & "T" & timeFormat(posted,"HH:mm:ss") & utcPrefix & numberFormat(z.utcHourOffset,"00") & ":00">
      <url>
      <loc>#xmlFormat(application.blog.makeLink(id))#</loc>
      <lastmod>#dateStr#</lastmod>
      </url>
   </cfoutput>
<cfoutput>
</urlset>
</cfoutput>

Just create a file called sitemap.cfm in your blog root and paste the code above.

GMail Drive shell extension

GMail Drive is a Shell Namespace Extension that creates a virtual filesystem around your Google GMail account, allowing you to use GMail as a storage medium.

GMail Drive creates a virtual filesystem on top of your Google GMail account and enables you to save and retrieve files stored on your GMail account directly from inside Windows Explorer.

GMail Drive literally adds a new drive to your computer under the My Computer folder, where you can create new folders, copy and drag'n'drop files to.

Ever since Google started to offer users a GMail e-mail account, which includes storage space of a 1000 megabytes, you have had plenty of storage space but not a lot to fill it up with.

With GMail Drive you can easily copy files to your GMail account and retrieve them again. When you create a new file using GMail Drive, it generates an e-mail and posts it to your account.

The e-mail appears in your normal Inbox folder, and the file is attached as an e-mail attachment. GMail Drive periodically checks your mail account (using the GMail search function) to see if new files have arrived and to rebuild the directory structures.

But basically GMail Drive acts as any other hard-drive installed on your computer.
You can copy files to and from the GMail Drive folder simply by using drag'n'drop like you're used to with the normal Explorer folders.

Because the GMail files will clutter up your Inbox folder, you may wish to create a filter in GMail to automatically move the files (prefixed with the GMAILFS letters) to your archived mail folder.

You may want to create an email address used only to store files... but this extension works and it's extremely handy.

ISAPI Rewrite

Looking for extreme SEO, I decided to play with ISAPI Rewrite. It is nice and all using /index.cfm/var1/val1, but if you just could get rid of that index.cfm … I already built a /go/ module, so if that’s all you need, don’t buy the ISAPI Rewrite…

You can accomplish the /go/ redirect that Macromedia, among others use, by going to the specific site’s 404 Custom error and forward it to /404.cfm, which is a landing page you build with CF. The page will check it the URL has a /go/ syntax; if it does, it will cflocate to the appropriate destination, and if it doesn’t, it will cfcontent the original 404 error page. You can also use cfheader and change the status to 404, page not found.

The Rewrite module can accomplish much more than this, and it’s worth looking. In the process of playing and investigating the ISAPI Rewrite module for IIS, I found that Brandon Purcell recently blogged about it, and it’s extremely helpful. You can find more information here.

Ray also posted a short entry on SES after a filename.cfm. I also made the SES funcion I've been using for a while available here. It included SES parsing, and an SES construction function.

I’ll post more details in a few days.

JIC, I saved a copy of Bandon's blog here.

Cisco announced the $7 billion acquisition of video set-top box maker Scientific-Atlanta.

In an effort to break barriers between TV and a PC Cisco decided to acquire a video set-box maker … Internet companies such as America Online, Google and Yahoo are also getting into the video market. AOL announced it is funding a start-up called Brightcove, which helps programmers syndicate shows across the Web and collect money from it. Content providers like CBS are also seeking out alternative distribution channels for their shows…

More info here.

More Entries

This blog is running version 5.9.003. Contact Blog Owner