Friday, January 14, 2005
Discussing Portal Software Selection
Here is a very interesting discussion on selecting a portal application vendor. Although the author is Microsoft employee, his areas for consideration and general advice are solid.
posted by Chip Childers @ 1:50 PM
0 comments
![]()
Links to this post
Thursday, January 13, 2005
One Way to Setup CVS for a Windows-based Development Workstation
2. Open a command prompt and run the "puttygen" command. When the dialog appears, select the appropriate key type and click the "generate" button. You will have to move your mouse over the blank area of the dialog to get the key to generate (this is because the applications uses the input from your mouse movement for the random seed value).
3. Once the key pair has been generated, enter a meaningful name for the key into the Key Comment field.
4. Type in a key passphrase for the private key into both the "Key passphrase" and "Confirm passphrase" fields. This should be a fairly complex password, but you will only need to type it on the startup of your workstation.
5. Click the "Save public key" button and save the key into the "C:\\Program Files\\Putty" directory as a text file.
6. Keep the “puttygen” application running until you install the public key on the target server.
7. Run the TortoiseCVS-1.8.7.exe program that will install the TortiseCVS application.
8. Copy a shortcut of "C:\\Program Files\\Putty\\pageant.exe" into your "Startup" folder.
9. Edit the shortcut to include the name and location of your private key file after the program file's name and location (in the target field of the properties dialog). The result will look something like this:
"C:\\Program Files\\Putty\\pageant.exe" "C:\\Program Files\\Putty\\{PrivateKeyFile}"
Replace the "{PrivateKeyFile}" string with the actual name of your private key file.
10. Run the shortcut to activate the Putty Agent application. You will have to type in your passphrase when the application loads.
11. In the system tray, the Putty Agent icon should be visible. Right click on the icon and select the "New Session" menu option.
12. In the Putty session dialog, set the following values:
Session -> Saved Sessions = the hostname of the CVS server
This field is right above the list of displayed sessions.
Session -> Host Name = the hostname of the CVS server
Session -> Protocol = SSH
Session -> Port = 22
Connection -> Auto-login username = {USER}
Replace {USER} with your username for the CVS server.
Connection -> SSH -> Preferred SSH protocol version
Select wither 1 or 2, appropriately to the version that you set the key pair to support.
Connection -> SSH -> Auth -> Private key file for authentication = {PrivateKeyFile}
Replace {PrivateKeyFile} with the name and location of your private
key file (the "PPK" file).
13. Back on the "Session" settings page, click the "Save" button to save the definition.
14. Click “Open” to connect to the target server.
You will have to type in your password for the CVS server (NOT your private key passphrase).
15. Go back to the “puttygen” application and copy the “Public key for pasting into the authorized_keys file” to the clipboard.
16. Add the contents of the clipboard to the ~/.ssh/authorized_keys file on the server. If the file is not there, then create it and add the data.
17. After saving the changes to the authorized_keys file, close the putty session.
18. Close the "puttygen" application.
19. Test the key based authentication by right clicking on the Putty Agent system tray icon and selecting the "saved session" of 216.203.1.133. When selected, a putty terminal window should appear, and you should be automatically logged into the server.
20. Add the following user environmental variables:
CVS_ROOT=:ext:{USER}@{CVS SERVER}:{CVS HOME}
CVS_RSH=plink
21. Add the following to the "Path" system environment variable:
;C:\\Program Files\\Putty
22. Restart your system. Be sure to type in your passphrase into the Putty agent dialog after you login.
23. CVS should now be integrated into your workstation. You can test the connectivity by right clicking on your desktop and selecting “CVS Checkout”. When the dialog opens, set the following settings:
Protocol -> Secure shell (:ext:)
Server -> {CVS SERVER}
Repository directory -> {CVS HOME}
User name -> {USER}
Click the “Fetch list…” button to see a list of modules that are available for Checkout.
If the list returns, then the application is installed correctly.
posted by Chip Childers @ 5:50 PM
0 comments
![]()
Links to this post
Wednesday, January 12, 2005
Service Oriented Architecture for Service Providers
Some Definitions Without first providing these definitions, everything below will be confusing:
- Service Oriented Architecture – I will use this term to describe a technical architecture for software development and tool implementations within an IT infrastructure that makes heavy use of loosely coupled and message based integrations between systems.
- Service Provider – An organization that is responsible for providing IT services (hosting, network, applications, etc…) to other organizations.
- Service Provisioning
- Service Transparency
- Service Quality Assurance
- Utility Functions
posted by Chip Childers @ 8:00 AM
0 comments
![]()
Links to this post
Tuesday, January 11, 2005
Ups and Downs with Certificate-based Web Service Security
The Vibro.NET blog has a great post about certificate-based security in the XML Web Services world. Based on my personal experience with certificates and WS-Sec, this is worth reading: Why you should consider WS-Trust... I'm pretty sure that the ideas presented are something that I will include within my company's SOA planning.
posted by Chip Childers @ 6:13 PM
0 comments
![]()
Links to this post
Converting .NET Managed String Objects to NULL Terminated Char Pointers in C++
This is something that took me a long time to get figured out, and I'm still not sure if I am correctly transfering the data from the managed string object into the NULL terminating char pointer:
1#pragma managed 2char* TranslateRealStringToCharPtr(System::String* strToConvert) 3{ 4 System::String* StringPointer = strToConvert; 5 char* CharPointer = _ 6 (char*)(void*)Marshal::StringToHGlobalAnsi(StringPointer); 7 return CharPointer; 8}
I think that there is a memory leak in the code, but I can't figure out where it is. Any ideas?
posted by Chip Childers @ 8:00 AM
0 comments
![]()
Links to this post
Monday, January 10, 2005
What makes a good programmer good? What makes a great programmer great?
Mikael Grev wrote an interesting blog entry describing his opinion about what the attributes of a rock star programmer are. While I agree with the general idea, he's missing a pretty major element: the ability to work in a team. As software has grown, it has become less and less about the solo acts of heroism, and more and more a team game. Nobody, especially programmers, should underestimate the need for the team to work well together.
posted by Chip Childers @ 2:45 PM
0 comments
![]()
Links to this post
IP Address Validation Expressions
We've been working on several web applications that have IP addresses as part of their user input. Since validation of the address format has been something I haven't gotten around to writting yet, I'd like to thank Mike Poulson for the ability to cheat: Regular Expressions and IP addresses (ipv4 and IPv6)
posted by Chip Childers @ 2:28 PM
0 comments
![]()
Links to this post
Friday, January 07, 2005
How can code that tries to prevent a buffer overflow end up causing one?
Raymond has a very interesting article about *ncpy functions in C / C++. Most "how to write secure code" books, articles, etc... speak of the *ncpy functions as the solution to all your buffer overflow problems. It's nice to see someone clarify that thought process a bit. How can code that tries to prevent a buffer overflow end up causing one?
posted by Chip Childers @ 10:09 AM
0 comments
![]()
Links to this post
Monday, January 03, 2005
Rubik's Cube Solution
My brother has done it again. He has managed to get his Rubik's cube solving down to an average two minutes and thirty seconds. And just to rub it in, he gave me a cube of my own for Christmas. So, I have been fighting with the cube for hours at a time. After begging him for some advice, I was sent a link to this Rubik's Cube Solution page. Now all I need to do is practice.
posted by Chip Childers @ 2:31 PM
0 comments
![]()
Links to this post
Service Oriented Architecture
Service Oriented Architecture (SOA) - what's the point? We try and we try to get this type of thinking to come from our executives. Instead, we are left impelementing partial strategies to support an "eventual" service oriented architecture. I just hope that "eventual" doesn't become "never". Perhaps I can use some of Gilbert's thoughts to help create a broader support for SOA based development efforts.
posted by Chip Childers @ 2:15 PM
0 comments
![]()
Links to this post


