CodeGuru Update eNewsletter – October 12th, 2004

==========================================================


CodeGuru Newsletter
October 12,
2004

http://www.CodeGuru.com


This newsletter is part of the Developer.com, EarthWeb, and
internet.com networks.
Jupitermedia Corporation


___________________________ Sponsors
________________________________
Merant www.merant.com
_____________________________________________________________________


==========================================================
All
newsletters are sent from the domain “internet.com.”
If configuring e-mail or
Spam filter rules, please use this
domain name (not the entire “from”
address, which varies).

==========================================================



TOPICS:



–> Editorial –

        ==> Standing Your
Ground…
        ==> Recently
Published Books


–> New Articles on
CodeGuru:

        ==>
Assemblies (.NET)
        
   – Securing Managed Assemblies with Native EXE
Interoperability
        ==>
Controls
           
– Retrieve the Caret Position by Using an Extended TextBox
Class
        ==> Controls
(C#)
            – Edit Almost
Anything — Part 1
        ==>
Dialogs
            –
WYSIWYG Runtime Properties Editor
(unedited)
        ==> Errors/Debugging
(C++)
            – Visual
C++: Protecting Against Buffer Overruns with the /GS
Switch
        ==> Errors/Debugging
(.NET)
            – Playing .NET Doctor: Diagnose Application Hiccups with .NET
Classes
        ==> Office Programming
(VB 6)
            –
Generate Excel Pivot Reports Using VB
6.0
        ==> Serialization
(C++)
            – Managed
Extensions — Implementing Custom
Serialization
        ==>
System
            – System
Call Optimization with the SYSENTER
Instruction
        ==> XML
(C++)
            – A
Simple DOM-Based XML Manager Class

–> Discussion
Groups


–> Highlighted new articles on
Developer.com
        1. Query
Analyzer Tips and Tricks 
        2.
Programming Language Popularity: The TCP Index for October,
2004
        3. Using JDBC with MySQL,
Getting Started
        4. Certifying Your
Desktop Support Skills


/——————————————————————-
Download
a free trial of Merant Professional 8, the most
significantly enhanced
release ever of the world’s most popular
version control, issue tracking and
build software. See for yourself
how Merant Professional supports


* Dynamic, fast-paced software development projects
* Rapid start-up of a
team-centric SCM solution
* Distributed teams via the web


http://nl.internet.com/ct.html?rtr=on&s=1,165x,1,2ov,4yvs,jorm,i5r0
————————————————————–adv.-/


==========================================================
Comments
from the
Editor
==========================================================


This week, Rob Bogue posted an article to Developer.com that got me thinking.
His article called “Stand Your Ground” is at http://nl.internet.com/ct.html?rtr=on&s=1,165x,1,ghrr,g49r,jorm,i5r0 


When I read this article, I ended up with a slightly different slant on the
point that Rob presents. My thoughts centered in a different, yet related area
— project scope.


Consider this scenario. You are a developer working on a project that
involves windows forms. One of the users asks you to add a simple button that
clears the form. This was not a part of the specification and seems easy enough.


Do you do it?


After all, clearing the form is relatively easy and adding a button is a
simple drag and drop.


What is one the most important deciding factor on adding or not adding this
button? It is the comment that this request is not a part of the specification.
It wasn’t what you agreed to do. While it seem simple, a quick ‘yes’ to the user
could snowball an entire project out of control.


Sound extreme?


If you had said yes as a developer and added this button, then consider the
scenario a little farther. The button and a couple dozen lines of code are added
to clear out the fields on the form. Fifteen minutes of a developer’stime is
spent making this change, so the impact is minimal.


The project manager shouldn’t even notice.


If you use methodologies and do formal testing – which is likely if you are
doing a project for another person – then test cases and test scenarios now need
to be added for the new button and its functionality. Writing the test cases
will take another fifteen to thirty minutes, plus will add just a few negligible
minutes to the actual testing if everything is coded correctly.


But wait….


A couple of the fields should not be cleared. In testing, the user indicates
that it isn’t the entire field that should be cleared. A few fields such as user
name and the sequence number should be left in place. Now you have to update the
button to avoid clearing two fields.


You also have to update the test cases and any documentation.


Your hour just doubled.


When the supervisor for the user looks at the form and notices the button and
its functionality, they comment that in fact, when clearing the form, the
approval field’s value should be left if the person using the system is a
manager. Now all of the sudden you have to code in checks for the role of the
person using the system and use that information to validate whether a field
gets cleared. You just added additional database access as well as integration
into a different part of the system. Your two hours now becomes two days for the
coding and unit testing.


Because the button is already on the form you are now in a predicament.


If you a developer billing at $50, then you just added $800 worth of
development for a simple button. Not only that, if you are on a deadline, you
just lost two days off of the project on items you had not agreed to do. In many
projects, there isn’t two extra days for a developer. You have a project manager
that is not going to be happy with you. If you try to drop the button at this
point, you have a users that are not going to be happy with you because you had
given all indication that it could be done and because they were asking for was
that one field remain uncleared in certain circumstances. You’ve just entered a
lose-lose situation.


This might seem like an extreme example, but experience says it is not.
Additionally, experience says that if you agree to add one button, then chances
are other requests will be made to add other “minor” items. The moral of the
story is don’t do anything for your users.


Actually, that is not the moral, but I wanted to see if you were still
reading! The moral is that even simple requests can turn out to be loaded with
things you don’t expect. It is best to stand your ground with what was
originally agreed upon. If something is important enough to be added to the
system, then it should be important enough to allow for the project to be
reevaluated and it should be important enough to allow for timelines and costs
to be adjusted. If it isn’t important enough for this, the follow Rob Bogue’s
advice and Stand Your Ground.


Until next week!


Brad!
—————————
Brad Jones
www.CodeGuru.com
—————————


… Recently Published Books


For those of you keeping up by reading books. The following are just a few of
the new books that have been recently released. If you’ve read any of these,
feel free to write a review to be posted on CodeGuru. See the submission
guidelines at:


http://www.codeguru.com/review-guidelines.php


–> C++ Without Fear
      By
Biran Overland for Prentice-Hall
      500 pages
wiht CD $24.99
      http://books.internet.com/books/0321246950
      This is a beginning level book.
Leaves out topics such as templates because they are too advanced.


–> XSLT 2.0 Programmer’s Reference, 3rd
Edition

      By Michael Kay for
WROX
      920 pages for
$44.99
      http://books.internet.com/books/0764569090



=========================================================
New
& Updated Articles on
CodeGuru
==========================================================


Following are short descriptions of new articles on CodeGuru. If you are
interested in submitting your own article for inclusion on the site, then you
will find guidelines located at http://nl.internet.com/ct.html?rtr=on&s=1,165x,1,fka1,909i,jorm,i5r0


This week’s posted CodeGuru articles:


==> Assemblies (.NET)


– Securing Managed Assemblies with Native EXE
Interoperability

    By Palem GopalaKrishna
Learn
about a simple yet elegant way of securing managed assemblies from easy
disassembly by using the powerful interoperability features of .NET.
http://nl.internet.com/ct.html?rtr=on&s=1,165x,1,awki,c0eo,jorm,i5r0


==> Controls
– Retrieve the Caret Position by Using an Extended TextBox
Class
    By Csaba Hatvany
Extend the TextBox class with
properties for retrieving the (line, column) coordinate of the caret current
position.
http://nl.internet.com/ct.html?rtr=on&s=1,165x,1,6psu,9lzv,jorm,i5r0


==> Controls (C#)


– Edit Almost Anything — Part 1
    By
dbrennan
Learn about controls to edit a wide range of data types and/or
complex DataSets.
http://nl.internet.com/ct.html?rtr=on&s=1,165x,1,b02d,c30r,jorm,i5r0


==> Dialogs


– WYSIWYG Runtime Properties Editor
(unedited)

    By jainnys
When working with
controls such as grids and so forth, it is much easier to design the GUI if we
can see the data-filled grid, and then adjust the various look and feel
properties.
http://nl.internet.com/ct.html?rtr=on&s=1,165x,1,bjbz,7q41,jorm,i5r0


==> Errors/Debugging (C++)


– Visual C++: Protecting Against Buffer Overruns with the /GS
Switch

    By Nick Wienholt
Visual C++.NET
supports the automatic detection of stack-based buffer overruns through the use
of the /GS compiler switch. Learn why stack-based buffer overruns are so
serious, and how /GS and other Visual C++ settings can combat them.
http://nl.internet.com/ct.html?rtr=on&s=1,165x,1,70ht,dd8v,jorm,i5r0


==> Errors/Debugging (.NET)


– Playing .NET Doctor: Diagnose Application Hiccups with .NET
Classes

    By Mark Strawmyer
Discover how to add
functionality for debugging and tracking an application’s execution path.
http://nl.internet.com/ct.html?rtr=on&s=1,165x,1,hmz6,ewbg,jorm,i5r0


==> Office Programming (VB 6)


– Generate Excel Pivot Reports Using VB
6.0

    By Ramdeep Bhattacharya
Learn how a common
procedure can be written in VB to generate Excel pivot reports using COM.
http://nl.internet.com/ct.html?rtr=on&s=1,165x,1,esbt,anzk,jorm,i5r0


==> Serialization (C++)


– Managed Extensions — Implementing Custom
Serialization

    By Tom Archer –
Tom Archer
introduces a step-by-step technique for versioning your serialized files so that
your application can handle current and older file formats, as well as properly
deal with situations where the application is older than the file format being
read.
http://nl.internet.com/ct.html?rtr=on&s=1,165x,1,dlwe,1baq,jorm,i5r0


==> System


– System Call Optimization with the SYSENTER
Instruction

    By John Gulbrandsen
Windows NT
calls system services by using an “int 2e” software interrupt. The “int 2e”
instruction uses both an interrupt gate and a code segment descriptor to find
the interrupt service routine (KiSystemService) which services the “int 2e”
software interrupt. Since the CPU will have to load one interrupt gate and one
segment descriptor from memory in order to know what interrupt service routine
to call, significant overhead is involved in making an “int 2e” system call. The
SYSENTER instruction drastically reduces this overhead.
http://nl.internet.com/ct.html?rtr=on&s=1,165x,1,fvf,hlg,jorm,i5r0


==> XML (C++)


– A Simple DOM-Based XML Manager Class
   
By Ejaz Anwer
CXMLMgr is a very simple MSXML 4.0 DOM wrapper class that can
be used to manipulate XML files. It can be used in MFC as well as Win32.
http://nl.internet.com/ct.html?rtr=on&s=1,165x,1,hkpz,7skn,jorm,i5r0


==========================================================
Discussion
Groups
==========================================================


Check out the CodeGuru discussion forums at:


http://nl.internet.com/ct.html?rtr=on&s=1,165x,1,bcr8,cx5j,jorm,i5r0


Forums include Visual C++, General C++, Visual Basic, Java, General
Technology, C#, ASP.NET, XML, Help Wanted, and much, much, more!


==========================================================
New
Articles on
Developer.com
==========================================================


Below are some of the new articles that have been posted to Developer.com (http://www.developer.com).


1. Query Analyzer Tips and Tricks
    By
Mike Gunderloy –
   You’ve probably used SQL Query Analyzer as a
tool to execute ad hoc queries against Microsoft SQL Server. But there’s much
more than that in the Query Analyzer package.



http://nl.internet.com/ct.html?rtr=on&s=1,165x,1,gxh2,2a9w,jorm,i5r0


2. Programming Language Popularity: The TCP Index for October,
2004

    By Bradley L. Jones –
   Find
out how languages rate in the TIOBE Programming Community (TPC) Index.



http://nl.internet.com/ct.html?rtr=on&s=1,165x,1,jc0a,vki,jorm,i5r0


3. Using JDBC with MySQL, Getting
Started

    By Richard G. Baldwin
– 
   Baldwin shows you how to download, install, and prepare
a MySQL database as a localhost server on a Windows platform for use with JDBC.
He then shows you how to write JDBC programs to administer the database server
and to manipulate data stored on the MySQL



http://nl.internet.com/ct.html?rtr=on&s=1,165x,1,vpn,ftfy,jorm,i5r0


4. Certifying Your Desktop Support
Skills
    By Steve Rowe –
   As long
as corporations have PCs and Macintoshes as workstations, there will be a need
for someone to support these machines and their users.



http://nl.internet.com/ct.html?rtr=on&s=1,165x,1,isla,d963,jorm,i5r0


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Advertising:
If you are interested in advertising in our newsletters, call
Claudia at
1-203-662-2863
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For
information about advertising opportunities, visit http://www.jupiterweb.com
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

For details on becoming a Commerce Partner, contact David Arganbright
on
1-203-662-2858 or go to www.jupitermedia.com/corporate/licensingform.html
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

To learn about other free newsletters offered by internet.com or
to
change your subscription visit http://e-newsletters.internet.com

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


internet.com’s network of more than 160 Web sites is organized into 12
channels:

Developer http://internet.com/webdev/
Download
http://internet.com/downloads/
International
http://internet.com/international/
Internet
Lists http://internet.com/lists/
Internet
News http://internet.com/news/
Internet
Resources http://internet.com/resources/
IT
http://internet.com/it/
Small Business
http://internet.com/sb/
Linux/Open
Source http://internet.com/linux/
Windows
Technology http://internet.com/win/
Wireless
Internet http://internet.com/wireless/
xSP
Resources http://internet.com/xsp/

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

To find an answer – http://search.internet.com

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Looking for a job? Filling an opening? – http://jobs.internet.com
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This
newsletter is published by Jupitermedia Corporation
Copyright (c) 2004
Jupitermedia Corporation. All rights
reserved.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For
information on reprinting or linking to Jupitermedia content:
http://www.jupitermedia.com/corporate/permissionform.html
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

More by Author

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read