Wednesday, January 18, 2006
#
I was finally able to get UpdateVersion 1.3 available to the public. If anyone does any work on it, please let me know. I thought about setting up a project for it, but there haven't been any big feature requests, so I decided against it. Hope you all find it useful!
Update (4/4/2008): Switched to new link on CodePlex.
Wednesday, May 17, 2006
#
As Google announced, they will be releasing Google Web Toolkit to support building AJAX-ian web applications with Java. I just wish it were available for .NET as well. Not that I don't have faith in Microsoft's Atlas, but I would like to see and play with Google's approach.
Wednesday, May 03, 2006
#
I just started playing around with the Sage RSS reader for Firefox. I like it. If you check the site, there are a list of styles you can use for the reader. I think the Midautumn style is by far the best. So, with that, there were a few mods I had to make.
First off, none of the images were shown on my copy of the stylesheet because all images are relative. So, to fix that, search and replace url(nou with url(http://sage.mozdev.org/styles/library/nou. That was an easy fix and a big improvement - the read/unread images are one of the main reasons I liked this style.
Next, I thought about how I don't want to see the text for read posts. I don't see a way I can do that with CSS, so I decided to just hide all text. With this enhancement, the text will only be displayed as you hover over an item.
div.item div.item-desc, div.item div.item-pubDate { display:none; }
div.item:hover div.item-desc, div.item:hover div.item-pubDate { display:block; }
After the last mod, I started thinking that I may not want to see read posts at all. After all, I can always open them individually from the sidebar. So, I added this enhancement to hide those. Note that this will only work with the previous mod. Because of how you tell if a post is read, you cannot (as far as I can see) hide the body or footer without hiding them all the time.
div.item h2.item-title a:visited { display:none; }
Now, the only thing I can think that'd make this better would be to provide an XSL file to format the page. Well, that, and the ability to open the styled page in the sidebar. There is a note, however, on the project wiki that states you can use Ez Sidebar for that. I'll try that later.
Monday, March 27, 2006
#
Earlier this month, Tom Yager wrote an article discussing the future of internet-based TV channels. At first, I was excited to hear about it as I thought about the advantages and then started to twist my mind around the concept of running cable thru the web in a pure digital format, which would also make all TV channels available online for viewing from any web-connected PC. Iteractivity then started to spurt from the back of my mind. How rich could we make the cable interface? The possibilities are endless.
As I read the article, however, I started to notice that I may have been vearing off into the distance. Maybe I lost myself in my own delusions of rich, interactive cable web grandeur; but it sounds like Tom's article was more about Web TV than anything truly new and revolutionary. I'm not sure how many people actually saw or used Web TV, but it sucked. Perhaps my thoughts on this are based on the fact that I'm tech savvy and yearn for speed and processing power - my mouse gestures let me glide thru one action after another to transition between, open, close, back, forward, refresh, top, bottom... phewww.... It's a workout, but I can be so productive in this environment. For me, using Web TV was like participating in a triathalon missing an arm and a leg - you might make it to where you want to be, but who's really gonna be waiting for you when you get there?
I'm hoping I'm just missing something. Perhaps keeping my eyes/ears open for the next month or so will give Tom time to expand on that.
Monday, February 27, 2006
#
The Architecture Journal just reached it's sixth edition. Fantastic! I've anticipated each edition and welcomed the dedication Microsoft has started to focus on architecture, design patterns, and best practices. That's one area where Microsoft development organizations have fallen short. The lack of guidance has stifled the community's growth a lot, in my opinion. The ease of VB classic definitely helped make up for this in the big picture, but standardized development with promising guidance has never been so available. I'm lovin' it! (Nobody tell McDonald's I said that - it's their current slogan.)
With their sixth release, a very nice turn of events has taken place. Microsoft has decided to transition the magazine to a permanent staff - as opposed to the temporary, "test-bed" staff that's been getting it up and running. To lead this group, Simon Guest has been recruited (to that team, anyway - he's already a Microsoft employee).
Simon is a great asset to this team. I was lucky enough to hear him speak and discuss a few topics with him a few years back at an architecture conference for government customers. One of the best things about Simon is his J2EE experience. The J2EE community has had more of a focus on architecture, design patterns, and best practices than the Microsoft development community has. Simon uses this experience to focus .NET development in the right direction. I know that The Architecture Journal will just keep getting better and better - not to take away from its current success.
So, I think I can speak for all .NET software architects when I say, "Welcome, Simon! We expect great things in the road ahead and are excited to see what the new team churns out." Architecture is a very important discussion topic and as someone with has interop at the top of their priorities, Simon will serve this task - and us - well.
Monday, February 13, 2006
#
The diff/merge built into TSvn causes an error in Word 12: The requested member of the collection does not exist. There's a simple fix, tho. First, open the diff and merge scripts that TSvn runs in a text editor (Diff-Scripts\diff-doc.js and Diff-Scripts\merge-doc.js in the TSvn install directory, which is by default C:\Program Files\TortoiseSVN). Scroll down to line 47 (49 in merge script) and replace it with the following code:
if ( Number(word.Version) < 12 )
{
word.ActiveDocument.Windows(1).Visible = 1;
}
Like I said, very simple. I just got very annoyed by that error everytime I opened the file and figured I'd post something for others.
Tuesday, February 07, 2006
#
Mainly for my own benefit, I've accomplished a diff between DNN 3.1 and 3.2.2. View my blog post for details.
Tuesday, January 24, 2006
#
I have to do a lot of documentation for systems I work on. Because of this, anything I can do to save time with templates and auto-updated fields helps. I use file properties in Word (File > Properties) to set things like product name, acronym, and version, among others. When I first started playing with Office 12, I needed to update something and just couldn't find the properties editor anywhere. I griped about it to a co-worker who ultimately found it for me. The whole thing still drives me crazy, but here's the solution...
File > Word Options > Customization
- Select
Developer from the Available commands drop-down
- Select the
Property Editor Dialog option
- Click
Add
- Click
OK
Now, you're ready to actually use it whenever you want. There should be a small orange dot on your Quick Access Toolbar, which will be either to the right of the File menu or below the toolbar icons.
- Click the
Property Editor Dialog icon
- Click OK
You should see a small form show up below your toolbar with the standard file properties (i.e. author, title, subject). If this is what you need, you're good to go. If you need custom properties, keep going...
- Select
Advanced from the Properties drop-down
FINALLY! Something familiar! This is the normal File Properties dialog, so you should be fine from here. I hope this helps someone. This damn thing drove me crazy the first hour or so I was looking for it. If someone finds a simpler way to access the properties, PLEASE let me know!
Monday, August 16, 2004
#
Download UpdateVersion
I've been looking at NAnt pretty hard lately. The biggest problem that I've had so far is creating and updating version numbers. NAntContrib has a <version> task that will read in and update a version number specified in a text file, but that doesn't quite give me what I'm looking for. NAnt 0.85 is supposed to come with a method for reading assembly the version, but again, this falls pretty short of what I'm looking for.
After looking around, I found a pretty good solution: UpdateVersion. Currently in version 1.2, this tool will read through your AssemblyInfo.cs (or .vb) file and update the version number based on specified criteria. The tool was pretty nice. I didn't quite like the code, but it got the job done. It can read through any input file (or stream) and write output to the same or another file or even the output stream. There was a “pinning” option (-p or --pin) to specify a particular version number, but that didn't work. I fixed that and extended it a little bit. I modified the code to allow any pinned version (i.e. 1.0, 1.0.0, or 1.0.0.0). Whatever you don't specify will be generated based on the other options you specify. I also added a write version (-w or --write) option to write the version number (and only the version number) to the output stream. This allows a user to catch the new version that updates the AssemblyInfo.cs file(s).
I didn't end up using the -w option that I setup because of the order of events that needed to happen in my build script. So, I just decided to update the version manually and use the pinning option to update the project assemblies. I probably could've used the <version> task included in the NAntContrib project, but there were two reasons I didn't: (1) I'm using one separate properties file and don't want to have to deal with another one for the version number; and, more importantly, (2) when I updated to a 0.85 nightly build (8/12/2004), NAnt wouldn't recognize my NAntContrib tasks.
First, I've specified a “startdate” and “build.version” property to represent the project start date and custom major.minor version number. Second, I run the following build script to update the “build.version” property.
<script language="C#">
<imports>
<import name="System.Globalization" />
<import name="System.Threading" />
</imports>
<code><![CDATA[
public static void ScriptMain(Project project) {
Version version = new Version(project.Properties["build.version"]);
int major = version.Major;
int minor = version.Minor;
int build = version.Build;
int revision = version.Revision;
if (build == -1) {
DateTime start = Convert.ToDateTime(project.Properties["startdate"]);
Calendar calendar = Thread.CurrentThread.CurrentCulture.Calendar;
int months = ((calendar.GetYear(DateTime.Today)
- calendar.GetYear(start)) * 12)
+ calendar.GetMonth(DateTime.Today)
- calendar.GetMonth(start);
int day = DateTime.Now.Day;
build = (months * 100) + day;
}
if (revision == -1) {
TimeSpan difference = DateTime.Now.Subtract(DateTime.Today);
revision = (int)(difference.TotalSeconds / 10);
}
version = new Version(major, minor, build, revision);
project.Properties["build.version"] = version.ToString();
}
]]></code>
</script>
I hope this helps anyone else looking for a version numbering system for NAnt. After I updated the version number, everything else was pretty easy - I looped thru each AssemblyInfo.cs file in the solution directory and updated the versions using my modified UpdateVersion.
If anyone is interested in the UpdateVersion code, let me know. I sent an email to Matt about getting it updated, but haven't heard from him. I'll give it a few days.
Update (4/4/2008): Changed download link to CodePlex project
Wednesday, January 18, 2006
#
Well, I actually participated in my first webcast yesterday. Brian Scarbeau invited me to join in on his 3rd DotNetNuke webcast on custom module development to help by answer questions and filling in as needed. It went quite well and I plan on also participating in his 5th webcast on skinning. Should be interesting! If you're interested in DNN skinning, I suggest you check it out.
Tuesday, January 10, 2006
#
Well, I just installed the initial pre-release version of Office 12. I remember reading something online about it a while back and I was kind of scared of it. I do a lot of documentation support for the projects I work on, so I frequent Office a lot. The new toolbar-focused user experience just didn't set well in the back of my mind. After opening it for the first time, I freaked... Where's my menu!? I want my Tools > Options! I want my... umm... what else was up there? I honestly don't even remember. View, Styles, Format... I found myself vaguely remembering what options I had because I didn't even use them that frequently. Hmm... Maybe I can give this thing a shot.
Anyone who works in software development knows that you're always plagued with usability issues because of "stupid users." There's nothing you can do about it. With Word's hundreds or thousands of options, I found myself around quite well. With Office 12, tho, I have one: File. What the heck is that!? Under that menu, I have 8 options: new, open, save/save as, finish (i.e. digital signatures), send (i.e. fax), print, and close. Everything else is laid out on a toolbar. Initially, you're given 6 toolbars. Only one is visible at a time, but there are tabs above them to select the one you want. Each of these are broken out into related groups. The toolbars are context-sensitive, so if you add a picture, for instance, a new Picture Tools toolbar pops up.
I have to admit that I'm very impressed. This is definitely a new way of thinking and I look forward to seeing it in more apps. This really gives me a lot of ideas. Don't know whether that's good or bad, but I'm interested in seeing how these tools pan out after using them for a while.
Friday, November 25, 2005
#
After having this problem several times and continually forgetting the fix, I figured I'd go ahead and make a post about it. Hopefully, it'll save someone time in the future. Let me know if you have a different fix.
Symptoms
When you browse to a DNN page after adding a new module to the page, you receive an error message that is similar to the following:
Multiple controls with the same ID 'ctr123_DD' were found. FindControl requires that controls have unique IDs.
Cause
DNN dynamically loads modules to the page when it loads and references them using the Control.FindControl() method. As the error specifies, FindControl() can only be used when all IDs are unique. This usually happens when a module definition has been recently modified. DNN modules are identified using a combination of the key and type properties. To specify the control that should be loaded when a user browses to a page with the module, the key should be blank and the type should be "View". The default edit control (i.e. Add content) and the settings controls should have key values of "Edit" and "Settings", respectively. All other controls need to have unique key values. When non-unique key values are used, DNN loads all of the controls with the same ID, which is the true culprit.
Resolution
First, you'll have to know what module is causing the problem. If you are unsure of which module is causing the problem, there are three ways to figure it out:
- If a module was just added to the page before the error occurred, the module that was added is most likely the problem. (Cause you needed me to tell you that, right?)
- If a module on the page that's giving you the error was just added, that module is most likely causing the error. (Another great hint!)
- If neither of the previous identification methods work, the module ID is listed in the error. "ctr123_DD" refers to module 123. Take a look in the
dnn_Modules table and the row with that ModuleId is definitely the problem.
After finding the offending module, browse to the module definitions page (Host > Module Definitions) and check to ensure all module controls have unique key values. Remember: default view is blank, default edit is "Edit", settings is "Settings", and all others can be whatever makes your little heart go pitter-patter. Once the key values are corrected, you will most likely have to restart IIS. The quickest way to do this is to use iisreset (Start > Run, type iisreset, click OK).
More Information
- Applies to: DotNetNuke 1.0 - 3.1 (I don't think it's been fixed in newer releases, yet; but I haven't confirmed anything newer than 3.1)
- There is another error that does not specify the module ID, "Multiple controls with the same ID 'ctr' were found." This fix does not apply to those. If/when I run into that one again, I'll try to post a fix on that, too.
I may have found the cause of the 'ctr' error. It seems that this is caused with malformed HTML within the ASCX and/or mis-matched assembly (I didn't notice there was a build error because VS was saying it built successfully, for some reason.) This happened right after editing a module control, so I just opened the ASCX file in the designer and solved the problem pretty easily. I'm pretty sure this also happened when I wasn't customizing a control, but I can't really remember. That's all I really have right now. Hope it helps someone.
Friday, January 06, 2006
#
As I'm sure you already know, one of the accessibility standards Section 508 covers is specifying alternate text for all images. Not a big deal, right? Well, what about images that are purely used for formatting, such as spacers? Well, just give it an empty string: <img src="spacer.gif" alt="" />. Ok, still not a big deal. Unfortunately, the Image control in ASP.NET 1.x only outputs alternate text if it contains a value. For instance, <asp:Image id="spacer1" ImageUrl="spacer.gif" AlternateText="" runat="server" /> does not render the alternate text. Instead, this is the output: <img src="spacer.gif" />. The only way to add an empty alternate text string is to do it programmatically: spacer1.Attributes.Add("alt", "").
ASP.NET 2.0 hit the streets with a new lease on life. The goal was to be more standards compliant. Every control has been changed to support XHTML standards in three modes: legacy (HTML 4.0), transitional (XHTML 1.0 Transitional), and strict (XHTML 1.0 Strict). Apparently, using legacy conformance will not render your tags in an XHTML-compliant manner, which I think is kind of stupid, but oh well. Anyway, back to the matter at hand... The new Image control adds a GenerateEmptyAlternateText property. As the name implies, this will give you the empty alternate text, but only if you set it to true. What's up with that!? Ok, I realize that this is kind of a small issue; but if you're so stuck on standards compliance - which I'm happy about, by the way - why not just automatically output empty alternate text if no alternate text is specified? I don't really have a problem with the GenerateEmptyAlternateText property, just give it a default of true. Heck, even if you only do it for transitional and strict modes, it'd still be nice - not that this has anything to do with XHTML conformance.
Thursday, January 05, 2006
#
Well, I've been very busy over the past few months. Project after project at home and work. Well, I definitely made sure to get my all-important playtime at home, too, of course. I guess it's all a good thing, tho. I just haven't had too much time for new posts. I do have news, tho. I was just added to the DNN Image Module Project last week. I just got the latest code and plan on adding some of my own updates to it within the next week or so. I look forward to contributing. There aren't too many items in the issue tracker, but I have seen some in the project forums. I'll try to start getting issues in and being productive soon. It should be fun.
Friday, December 02, 2005
#
Ever since I first saw shelving in the new version of Visual Source Safe, I've been somewhat enthralled by it. The first thing I did was figure out how I could do that with Subversion. I started typing an email to the Svn mailing list and then I realized how simple it was to do already. All you need to do is use branches.
Here's how to do it with TortoiseSVN...
- Create a
shelves directory in the root of your repository (alongside the branches, tags, and trunk directories)
- If desired, create a subdirectory for each developer on the team to allow shelves to be separated by developer (i.e.
shelves/flanakin/)
- Update files as needed
- Select the directory that needs to be shelved
- Select
TortoiseSVN > Branch/Tag...
- Specify the a new shelved directory for the developer (i.e.
shelves/flanakin/req1234), use the working copy, choose whether or not to switch to that shelf (for further work), and click OK
You now have shelved code. Other developers can grab that in one of two ways: by switching or simply merging with their existing working copy. Switch if you don't plan on finishing the shelved code; merge if you plan on unshelving it and committing it into the trunk (or another branch).
Man, all these CM code words make it sound worse than it really is. It truly is a simple task, if you've ever branched or tagged with Svn. Same implementation, different concept. I'd love to see the shelving concept be integrated into the Svn docs. The term, "shelving," seems to be new, but the concept is old. Some are referring to it as private branches. Whatever it's called (I like shelving better, tho), it should be in the best practices. Best of luck to those who use it!
Monday, November 28, 2005
#
There's a new Firefox extension in town. I like the idea, but don't really plan on using it myself. When I access my repositories, I always do so from the working copy. I do know that this would be useful for users who don't need local copies of a repository, but would be able to benefit from some of the TSVN features. It'll be interesting to see how this evolves.
Friday, November 25, 2005
#
Has anyone noticed how ridiculously slow the Asp.net site is with Firefox? Is it just my settings? I can't stand it!!! I hope this is fixed. I haven't seen anything about others having this same problem, but its aggravating the hell outta me.
Wednesday, November 16, 2005
#
I absolutely love Google Analytics! Sure, it's not anything new on the site metrics front. It's all data you can get from just about any tool. This comes with Google's overwhelming ease of use, tho. That, combined with the fact that it's free - how could you not like it!? Try it out, if you have a site. All you have to do is add a two javascript calls - one importing a Google JS file and the other to set a variable and call a method. That's it. They suggest you place it in the head secton of your HTML, but you can place it anywhere, of course. Placing it in the head just ensures it gets called all the time - the sooner in the HTML it is, the sooner it's called and tracked.
Tuesday, November 01, 2005
#
Looks like Oracle's reaching. All I really have to say is, "'Express Edition,' huh? Gee, I wonder where they got that idea." Either way, this will probably be an impact to other databases. The only thing against it is going to be the same problem the current editions have: their unnecessary complexity.
Thursday, October 27, 2005
#
I'm working on a couple Visual Studio project wizards and have been looking all over the place for a list of VSZ parameters. Well, I finally found the list here: http://msdn.microsoft.com/library/en-us/vccore/html/vclrfpredefinedcustomwizardsymbols.asp. Just figured I'd post it here in case anyone else was looking for it or I needed it again in the future.
One side note, however: VS05 wizards are a LOT easier to create and manage. I'm definitely looking forward to those. They're require a complete change of current wizards, but it should be well worth it.
Monday, September 19, 2005
#
I saw this and just thought it was pretty cool. I'm sure most of you've seen it; but for those who haven't, an Italian programmer found the remains of an ancient villa while looking around his home town. I believe this is the correct map. Funny thing is, it's about 3000 feet from a non-imaged area (well, for now, anyway).
Luca Mori, the programmer who stumbled upon this find, is starting up a new site, CyberArcheologist.net. Best of luck! Now, if only the US had something as cool... Actually, I'm wondering if they truly know what they've found, yet. The discovery was only made 5 days ago (Sept 14, 2005), from what I can tell. Either way, congrats Luca!
Thursday, September 15, 2005
#
Ya know, I'm not trying to start any holy wars or anything, but I keep getting aggravated with some VB code I have to maintain.
First off, my biggest complaint is the way VB handles imports. A lot are assumed, but some aren't. I've even seen the same code transition to another machine and have it not work. I don't really know the rules behind it, but it sucks.
Second, the Microsoft.VisualBasic namespace needs to just die a horrible death. Do VB-ers not understand that it simply exists for backwards compatability and shouldn't be used? Sure, you may have the old VB6 functions around, but should you use them? NO! There's a reason it's in Microsoft.VisualBasic and not in the core .NET base class library!
While we're on "functions," let me gripe about the naming conventions. I understand the difference between a subroutine and a function - who doesn't? I just don't like the fact that they are different from the .NET standard of "method." Yeah, yeah, backwards compatibility, whatever. Backwards compatibility is the root of a lot of evils in the software world. Look at Java. One of the primary reasons it sucks so bad and doesn't go thru a major overhaul is because of backwards compatibility. Other things I don't like as far as standard naming goes are the keywords Shared, Nothing, Me, and so on.
This is a small one, but I hate the fact that Visual Studio doesn't tab regions in for VB. I like my regions to be tabbed in at the same level as the code. This is just a preference, but I think the code seems harder to read when the left edge of the code jumps back to the first character position every so often. As a matter of fact, Visual Studio's auto-formatting for VB drives me crazy altogether. Most of it works fine; but occasionally, I want something to look different for readability concerns. I'm sure there might be options for this, but I don't care enough to look. It's just annoying.
Speaking of readability, OMG!!! Nobody can argue that VB is more wordy. One thing I learned in a high school desktop publishing class was that white space is good. White space actually helps the brain process what's on the screen and separate code easier. It's a LOT harder to do that with VB because the lines can get so long and seem to jumble together. Granted, this only happens in lines with a lot of keywords, but that doesn't mean I like it any more.
Oh, great, now it's time for my favorite (well, for the past two days, anyway): modules. I've been working on .NET since its inception. I cheered on C# and revelled in its birth. Because of that, I ignored VB and its features (in part, that's why I'm getting so aggravated). Well, for the past few days, I copied some VB code and was modifying it. I kept looking for what seemed to be local methods, but couldn't find them anywhere. I searched through class after class to no avail. Finally, I was looking at an assembly and noticed that a class was using the Module keyword. "Hmm... That's odd. I wonder what that is. Oh well," I thought. A little later, I ran into another method I couldn't find anywhere. Then I made the connection and found it. This has got to be the most retarded feature. I can understand and appreciate it's worth, but I just don't like it. It obviously decreases readability and maintainability. Oh, and before you say that I should've used the "Go to Definition" context menu option, I didn't have the source loaded in a VS project, so I couldn't.
I don't even need to get into the obvious ones like case-insensitivity and Option Strict/Explicit. Hell, I think I've complained enough for today. There are a ton of other things I don't like about it, but this'll suffice. Also, I must say that I am merely pointing out my angst with VB. I am not saying that C# or any other language is perfect. There are aspects of VB I'd love to see in C#.
Wednesday, August 31, 2005
#
Man, oh, man! Setting this thing up was a pain in the arse. It took up most of my day! Anyway, hopefully, I can save someone else the heardache.
Here's the setup: client - Windows XP, server - Windows Server 2003 running Subversion 1.2.1 and Apache 2.0.54. Within the Apache httpd.conf file, the following modules must be setup in order:
# Windows authentication module
LoadModule sspi_auth_module modules/mod_auth_sspi.so
# subversion modules
LoadModule dav_svn_module "C:/Program Files/Subversion/bin/mod_dav_svn.so"
LoadModule authz_svn_module "C:/Program Files/Subversion/bin/mod_authz_svn.so"
Next, I had to setup my Subversion location (later in the same file):
<Location />
DAV svn
SVNParentPath "D:/Repository/"
# authentication
AuthName "Subversion Authentication"
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
SSPIDomain DOMAIN
SSPIOfferBasic On
Require valid-user
# authorization
AuthzSVNAccessFile "D:/Repository/authorization.conf"
</Location>
Finally, I had to setup a Subversion access file. With this file, I kind of took the easy way out. I only added developers with write access to the root and setup any other user with read-only to the root. I didn't feel like messing with it much after that.
[groups]
dashboard-dev = DOMAIN\FLANAKINM, flanakinm
[/]
* = r
@dashboard-dev = rw
Here's the important part to remember: you have to use two login names - one with and one without the domain. The reason for this, as I understand it, is because Subversion requires the former and the web browser requires the latter (that may be backwards).
Now, let me dig into this a little bit. The aforementioned modules are for Windows authentication, Subversion WebDAV, and Subversion authorization, respectively. That's pretty simple - no real options there. You may notice that I chose to reference the Subversion modules from the Subversion directory. I believe most people move them to the Apache directory instead. Whatever works for you. I chose this method because, if they're ever updated, that's where they'd be installed after upgrading Subversion. Also of note, I used the mod_auth_sspi.so module from the TortoiseSVN website (link provided later). There's supposed to be another one floating around with more features. The links I found to that one are all dead, so if anyone knows how to get it, let me know, please.
Next, let's look at the location section. I'm only using Apache for Subversion (on port 9999), so I just setup the location to be the root (hence the "/"). The DAV svn is required for WebDAV and the SVNParentPath specifies that the parent directory of my repositories is located at "D:\Repository" (I used forward slashes (/), but I'm pretty sure you can use back slashes (\), too). Now, into the part that can be a pain... AuthName doesn't matter, as far as I can tell; so use whatever makes sense (hell, you might even be able to omit it). AuthType SSPI tells Apache to use the SSPI module for Windows authentication. SSPIAuth On and SSPIAuthoritative On turn that authentication on. SSPIDomain specifies the domain you're using - I believe this is optional. SSPIOfferBasic On tells Apache to provide basic authentication for non-IE connectors. Require valid-user tells Apache that all users must be authenticated in order to gain access to the location. Finally, the AuthzSVNAccessFile specifies the text file which holds the authorization rules.
I'm not going to get into this file too much. As I mentioned before, all you really need to know is that you have to have two entries per user: one with and one without the domain name.
For more information on the following areas, check out the respective links. Best of luck to you! (...you may need it)
- mod_auth_sspi.so
- http://tortoisesvn.tigris.org/mod_auth_sspi.zip
- TortoiseSVN FAQ: Windows Authentication on Linux (just in case you're bored)
- http://tortoisesvn.berlios.de/?q=node/48
- TortoiseSVN FAQ: Windows Authentication on Windows
- http://tortoisesvn.berlios.de/?q=node/137
- TortoiseSVN Help: Windows Authentication with a Windows Domain
- http://tortoisesvn.sourceforge.net/docs/release/TortoiseSVN_en/ch03.html#tsvn-serversetup-apache-5
- Windows Domain Authentication (c/o Martin Tomes)
- http://www.subversionary.org/sspidomainauth
- Subversion Mail Archive: Getting NT Authorization Right with mod_auth_sspi.so
- http://svn.haxx.se/users/archive-2004-07/subject.shtml#580
- Mere-Moments Guide to installing a Subversion server on Windows (c/o Joe White)
- http://excastle.com/blog/archive/2005/05/31/1048.aspx?Pending=true
Ultimately, the link that helped me the most was the
Subversion users mail archive. I linked to the last post (they're listed latest to earliest), so review those as needed.
Thursday, August 25, 2005
#
I about did a back flip after reading this article about AOL being fined for bad customer service practices. I've always hated AOL for stupid things like this. Not that I'll like them any more, but I'm glad to see something being done about it. Or, at least them being fined for it, anyway.
Friday, August 19, 2005
#
I was pleasently surprised when I noticed that TortoiseSVN supported diffs in Word documents. I've made a number of changes to a requirements document over the past week or so and wanted to get an idea of the scope of changes before committing them, so I figured, 'What the hell! Let's try a diff.' I didn't honestly think it'd work as desired. I guess I figured it'd try to do it as a text file and come up with all the junk Word adds for formatting before and after the text. In actuality, the original was opened, tracking was turned on, then the newer version was [seemingly] pasted over the original content. The magic of Word's tracking features was then put to work to show me the differences. I love it! Great job TortoiseSVN (specifically, the TortoiseMerge) team!