summaryrefslogtreecommitdiff
path: root/docs/log
diff options
context:
space:
mode:
authorAndreas Baumann <abaumann@yahoo.com>2009-02-26 22:46:11 +0100
committerAndreas Baumann <abaumann@yahoo.com>2009-02-26 22:46:11 +0100
commit794387ec96da3cd32bedfc84fae9db23e7ea0a41 (patch)
tree90ee39a2c2be5c2d4fe679c6ecb111048f28bf09 /docs/log
parent8200b8b0f0048aafadf4c900b6852f9a1061cb8b (diff)
downloadwolfbones-794387ec96da3cd32bedfc84fae9db23e7ea0a41.tar.gz
wolfbones-794387ec96da3cd32bedfc84fae9db23e7ea0a41.tar.bz2
added documentation about event log in .NET which is happily broken!
Diffstat (limited to 'docs/log')
-rw-r--r--docs/log/1844167641746
1 files changed, 1746 insertions, 0 deletions
diff --git a/docs/log/184416764 b/docs/log/184416764
new file mode 100644
index 0000000..38c08b9
--- /dev/null
+++ b/docs/log/184416764
@@ -0,0 +1,1746 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- Title: gatekeeper -->
+<html>
+<head>
+<!--SiteCatalyst code version: G.7. Copyright 1997-2004 Omniture, Inc.
+More info available at http://www.omniture.com
+-->
+<script language="JavaScript">
+<!--
+var s_pageName="";
+var s_server="";
+var s_channel="";
+var s_pageType="";
+var s_prop1="";
+var s_prop2="";
+var s_prop3="Dr. Dobb's Journal | 184416764 | The NT Event Log";
+var s_prop4="The NT Event Log";
+var s_prop5="Windows/.NET";
+var s_prop6="";
+var s_prop7="Richard Grimes
+ ";
+var s_prop8="77.56.85.119 | Wget/1.11.4";
+var s_prop9="";
+var s_prop10="";
+var s_prop11="";
+var s_prop12="";
+var s_prop13="http://www.ddj.com/windows/dhandler.jhtml";
+var s_prop14="";
+var s_prop15="";
+var s_prop16="";
+
+/* E-commerce Variables */
+var s_campaign="";
+var s_state="";
+var s_zip="";
+var s_events="event5";
+var s_products="";
+var s_purchaseID="";
+var s_eVar1="";
+var s_eVar2="";
+var s_eVar3="";
+var s_eVar4="";
+var s_eVar5="";
+//-->
+</script>
+
+<title>Dr. Dobb's | The NT Event Log | September 3, 2002</title>
+ <META NAME="description" CONTENT="When a significant event occurs in your app, you can report a message to the event log and the system will store the message safely, ready for a viewer application to read it.">
+ <META NAME="keywords" CONTENT="significant,event,occurs,your,app,report,message,log,system,store,safely,ready,viewer,application">
+ <META NAME="headline" CONTENT="The NT Event Log">
+ <META NAME="created" CONTENT="">
+
+
+<link rel="Stylesheet" rev="Stylesheet" href="http://i.cmpnet.com/ddj/styles/Layout.css" type="text/css">
+<link rel="Stylesheet" rev="Stylesheet" href="http://i.cmpnet.com/ddj/styles/FontStyles.css" type="text/css">
+<link rel="Stylesheet" rev="Stylesheet" href="http://i.cmpnet.com/ddj/styles/newarticle.css" type="text/css">
+<script src="https://i.cmpnet.com/ddj/js/popwindow.js"></script>
+<script language="javascript">
+<!--
+function jobsopen(){
+ document.getElementById("jobscontainer").style.height = '';
+ }
+
+function jobsclose(){
+ document.getElementById("jobscontainer").style.height = "41px";
+ }
+
+//-->
+</script>
+<script language="JavaScript" type="text/javascript">
+var addtoMethod=1;
+var AddURL = document.location.href;
+var AddTitle = escape(document.title);
+
+</script>
+<script language="JavaScript" src="http://i.cmpnet.com/ddj/ddj/images/add2/add2.js" type="text/javascript"></script>
+</head>
+<body bgcolor="#ffffff" vlink="#006699" link="#006699" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
+<table cellpadding=0 cellspacing=0>
+<tr>
+<td><script> var ckRef=document.referrer; if(ckRef && ckRef.indexOf('/as5/redirect/')==-1 || !ckRef) { document.write('<script language="JavaScript" src="http://i.cmpnet.com/shared/omniture/s_code_remote.js"><\/script>'); document.close(); }</script></td>
+</tr>
+</table>
+<!-- End SiteCatalyst code version: G.7. -->
+
+
+
+
+
+
+ <!-- error getting ad: null(java.lang.NullPointerException) -->
+
+
+
+<!-- CMP LOGO and AD BANNER AT TOP -->
+<div id="TopAdContainer">
+ <img src="http://i.cmpnet.com/ddj/techweb_logo.gif" width="125" height="42" hspace="15" vspace="0" border="0" align="left" alt="">
+
+
+
+ <!-- error getting ad: null(java.lang.NullPointerException) -->
+
+</div><br>
+
+ <!-- error getting ad: null(java.lang.NullPointerException) -->
+
+<!-- /CMP LOGO and AD BANNER AT TOP -->
+<!-- LOGO and USER/PORTAL NAV and SEARCH -->
+<table border="0" width="990" cellpadding="0" cellspacing="0" class="elfixo">
+ <TR>
+ <TD width="1" bgcolor="#000000" rowspan=2><img src="http://i.cmpnet.com/ddj/blank.gif" border="0" width="1" height="1" alt=""></td>
+ <TD width="362" colspan="2" bgcolor="#000000"><img src="http://i.cmpnet.com/ddj/blank.gif" border="0" width="362" height="1" alt=""></td>
+
+ <TD width="397" bgcolor="#000000"><img src="http://i.cmpnet.com/ddj/blank.gif" border="0" width="397" height="1" alt=""></td>
+ <TD width="1" bgcolor="#000000" rowspan=2><img src="http://i.cmpnet.com/ddj/blank.gif" border="0" width="1" height="1" alt=""></td>
+ </TR>
+ <TR>
+ <TD width="362" align=left valign=middle bgcolor="#349F2C">
+ <a href="/"><img src="http://i.cmpnet.com/ddj/logo_ddj.gif" hspace="3" vspace="5" border="0" alt=""></a></td>
+ <TD width="228" align=left valign=top bgcolor="#349F2C"><span class="fphead">NEW!</span> <a class="fp" href="http://www.ddj.com/go-parallel;jsessionid=XWDTPFYZDJZCYQSNDLQSKHSCJUNN2JVN">Parallel Programming Blog</a><br />
+ <!-- <droplet src="/viewAd.jhtml">
+ <param name="pagepos" value="focallink1">
+ </droplet> -->
+ </td>
+ <TD align=right valign=middle bgcolor="#349F2C"><!-- SEARCH -->
+ <FORM action="/TechSearch/searchResults.jhtml">
+ <input type="text" name="queryText" value="" style="width:290px; height:20px" size="11" class="searchInput" onfocus="this.value=''">
+ <input type="image" src="http://i.cmpnet.com/ddj/search.gif" alt="" align="absbottom" hspace="3" vspace="0">
+ </FORM>
+ <!-- /SEARCH -->
+
+ <a style="font: 10px verdana, sans-serif bold; color: #ffc20e;" href="http://www.ddj.com/TechSearch/searchResults.jhtml;jsessionid=XWDTPFYZDJZCYQSNDLQSKHSCJUNN2JVN">Site Archive (Complete)</a></td>
+ </TR>
+ <!-- /LOGO, and SEARCH -->
+ <TR>
+ <TD colspan=5 bgcolor="#000000"><img src="http://i.cmpnet.com/ddj/blank.gif" border="0" width="250" height="1" alt=""></TD>
+ </TR>
+ <TR>
+
+
+<TD bgcolor="#000000"></TD>
+<TD bgcolor="#FFB305" colspan=3>
+ <div class="portalNAVPad">
+ <span class=noLINE>
+ <a href="/about.html" CLASS=portalNAV>ABOUT US</a> |
+ <a href="/contact.html" CLASS=portalNAV>CONTACT</a> |
+ <a href="/advertise/" CLASS=portalNAV>ADVERTISE</a> |
+ <a href="/subscribe/" CLASS=portalNAV>SUBSCRIBE</a> |
+ <!-- <a href="/pubs/" CLASS=portalNAV>ARCHIVES</a> | -->
+ <a href="/code/" CLASS=portalNAV>SOURCE CODE</a> |
+ <!-- <a href="/currentIssuePage.html" CLASS=portalNAV>CURRENT PRINT ISSUE</a> | -->
+ <!-- <a href="`request.getParameter("jiveDomain")+"/jive3/index.jspa"`" CLASS=portalNAV>
+ <param name="categoryID" value="param:ddjCategoryID">FORUMS
+ </a>| -->
+ <a href="/newsletters/" CLASS=portalNAV>NEWSLETTERS</a>
+ |
+ <a href="/resources/" CLASS=portalNAV>RESOURCES</a>
+ |
+ <a href="http://dobbscodetalk.com/" CLASS=portalNAV>BLOGS</a>
+ |
+ <a href="/mediaCenter/" CLASS=portalNAV>PODCASTS</a>
+ |
+ <a href="http://www.techcareers.com/?affiliate=ddj" CLASS=portalNAV>CAREERS</a>
+ |
+ <a href="/go-parallel/" CLASS=portalNAV>GO PARALLEL</a>
+ </span>
+ </div>
+</TD>
+<TD bgcolor="#000000"></TD>
+ </TR>
+ <TR>
+ <TD colspan=5 bgcolor="#000000"><img src="http://i.cmpnet.com/ddj/blank.gif" border="0" width="250" height="1" alt=""></TD>
+ </TR>
+</TABLE>
+<div style="height: 14px; width: 990px;">
+
+
+
+
+ <!-- error getting ad: null(java.lang.NullPointerException) -->
+
+</div>
+ <table border="0" width="900" cellpadding="0" cellspacing="0" class=elfixo>
+
+ <TR>
+ <td valign=top>
+ <!-- LEFT COL -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<script language="Javascript">
+ function launcher(art_id,urlPrefix,siteUrl) {
+ uri = "/article/emailBox.jhtml?articleID=" +art_id+"&urlPrefix="+ urlPrefix+"&host_url="+siteUrl;
+ window.open(uri,"","toolbar=no,scrollbars=auto,location=no,status=no,width=480,height=415,resizable=1");
+ }
+</script>
+
+
+
+
+
+
+
+
+
+
+
+<DIV class="LColMargin">
+
+ <a href="/windows/"><img src=http://i.cmpnet.com/ddj/header_windows.gif hspace="0" vspace="0" border="0" alt="Windows/.NET"></a>
+ <img src="http://i.cmpnet.com/ddj/rule.gif" width="405" height="1" hspace="0" vspace="0" border="0" align="left"><BR>
+
+</DIV>
+
+<DIV class="articlepadding">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <table border="0" width="160" cellpadding="0" cellspacing="0" class=elfixo align=right>
+ <TR>
+ <TD width="10" rowspan=5><img src="http://i.cmpnet.com/ddj/blank.gif" border="0" width="10" height="1"></td>
+ <TD width="75"><img src="http://i.cmpnet.com/ddj/blank.gif" border="0" width="75" height="1"></td>
+ <TD width="75"><img src="http://i.cmpnet.com/ddj/blank.gif" border="0" width="75" height="1"></td>
+ </TR>
+ <TR><TD valign=top>
+
+ <img src="http://i.cmpnet.com/ddj/redsquare.gif" width="15" height="12" hspace="0" vspace="0" border="0" align="absmiddle"><a href="javascript:launcher(184416764,'/windows/','www.ddj.com')" title="Send As Email">Email</a><BR> <!--
+ <img src="http://i.cmpnet.com/ddj/redsquare.gif" width="15" height="12" hspace="0" vspace="0" border="0" align="absmiddle"><a href="#articleComments">Discuss</a>
+ -->
+ </td>
+ <TD valign=top>
+ <img src="http://i.cmpnet.com/ddj/redsquare.gif" width="15" height="12" hspace="0" vspace="0" border="0" align="absmiddle"><a href="/article/printableArticle.jhtml?articleID=184416764&dept_url=/windows/">Print</a><BR>
+ <img src="http://i.cmpnet.com/ddj/redsquare.gif" width="15" height="12" hspace="0" vspace="0" border="0" align="absmiddle"><a href="http://www.magreprints.com/QuickQuote.asp" target="_new">Reprint</a>
+ </td></tr>
+ <TR>
+ <TD height="7" colspan="2" valign="middle" style="padding: 7 0 0 0;"><div align="center"><img src="http://i.cmpnet.com/ddj/ddj/images/dotted_line3.gif" width="140" height="1" hspace="0" vspace="0" border="0"><br><span class="add2header">add to:</span></div></td>
+ </tr>
+ <TR>
+ <TD valign=top><img src="http://i.cmpnet.com/ddj/redsquare.gif" width="15" height="12" hspace="0" vspace="0" border="0" align="absmiddle"><span class="add2ddj" title="Add this page to Delicious" onclick="addto(2)"><u>Del.icio.us</u></span><BR>
+ <img src="http://i.cmpnet.com/ddj/redsquare.gif" width="15" height="12" hspace="0" vspace="0" border="0" align="absmiddle"><span class="add2ddj" title="Add this page to Digg" onclick="addto(3)"><u>Digg</u></span><BR>
+ <img src="http://i.cmpnet.com/ddj/redsquare.gif" width="15" height="12" hspace="0" vspace="0" border="0" align="absmiddle"><span class="add2ddj"title="Add this page to Google" onclick="addto(5)"><u>Google</u></span><BR>
+ <img src="http://i.cmpnet.com/ddj/redsquare.gif" width="15" height="12" hspace="0" vspace="0" border="0" align="absmiddle"><span class="add2ddj" title="Add this page to Furl" onclick="addto(4)"><u>Furl</u></span>
+ </td>
+ <TD valign=top> <img src="http://i.cmpnet.com/ddj/redsquare.gif" width="15" height="12" hspace="0" vspace="0" border="0" align="absmiddle"><span class="add2ddj" title="Add this page to Slashdot" onclick="addto(6)"><u>Slashdot</u></span><BR>
+ <img src="http://i.cmpnet.com/ddj/redsquare.gif" width="15" height="12" hspace="0" vspace="0" border="0" align="absmiddle"><span class="add2ddj" title="Add this page to Yahoo! MyWeb" onclick="addto(7)"><u>Y! MyWeb</u></span><BR>
+ <img src="http://i.cmpnet.com/ddj/redsquare.gif" width="15" height="12" hspace="0" vspace="0" border="0" align="absmiddle"><span class="add2ddj" title="Add this page to Blink" onclick="addto(1)"><u>Blink</u></span>
+ </td>
+ </tr>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </table>
+ <DIV class="Bspace4">
+ <em>September 03, 2002</em><BR>
+
+ <h5>The NT Event Log</h5>
+ <h2></h2>
+ </div>
+
+
+
+
+
+
+ <DIV class="Bspace15"><em>Richard Grimes
+ </em></div>
+
+
+
+
+
+
+
+
+ <!-- teaser -->
+ <DIV class="Bspace15"><span class="greenBlurb">When a significant event occurs in your app, you can report a message to the event log and the system will store the message safely, ready for a viewer application to read it.</span></div>
+ <!-- end teaser -->
+
+
+
+ <!--If you prefer to receive .Net Newsletter in text format, please click the unsubscribe link below. You will be taken to the Windows Developer newsletter sign up page where you can sign up for this newsletter in text format. <a href="${unsub_link}">Unsubscribe</a>-->
+<html> <head>
+<title>The NT Event Log</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</head>
+<body bgcolor="#FFFFFF" text="#000000">
+<P>
+
+<P>
+
+The NT event log was designed to solve many problems, and although I feel that
+ the Win32 API is a little arcane, I think the event log does its job admirably.
+ The messages in the event log can be exported to a file and read on another
+ machine, or if a remote user has sufficient privileges, the messages can be
+ read over the network. This presents two issues: First, the messages must be
+ stored in a compact way so that they take little bandwidth when read across
+ the network; second, the locale of the machine where the messages are read may
+ be different to the locale of the machine when the event was generated, so there
+ must be some mechanism to allow the user to see the messages formatted in his
+ own language.</p>
+<P>
+
+The event log addresses these two problems with a single solution, each process
+ that can generate event log messages has &quot;templates&quot; for each of those
+ messages, the template (called a &quot;format string&quot;) has placeholders
+ for data that will vary between instances of the same event, and each format
+ string has an identifier number. For example, a message like &#145;Disk C is
+ full&#146; would have the format string &quot;Disk %1 is full&quot; with %1
+ as the placeholder to be replaced with the name of the disk, in this case C.
+ This solves the space problem because only the format string identifier and
+ the data for the placeholders will be stored in the event log. A process that
+ reads the event must have a resource file that contains the message format strings.
+ Win32 has a function called <b>::FormatMessage()</b> that will return a complete
+ message based on the format string with the placeholders replaced with the message
+ data. The nice part of this process is that the resource file can have message
+ format strings for several locales, and <b>::FormatMessage()</b> will use the
+ format string for the locale of the thread that called the function. This means
+ that the responsibility of localizing a message is placed upon the code that
+ reads the message (which knows what locale to use) and not on the code that
+ generates the message.
+<P>
+
+As I&#146;ve said, the Win32 API is rather arcane, particularly the API for
+ reading messages. It was a relief to see that the .NET framework had provided
+ a class called EventLog in the System::Diagnostics namespace that makes reading
+ events as simple as iterating through a collection. However, the EventLog class
+ makes a very poor attempt at reporting events. The designers of this class clearly
+ felt that it was too much effort to generate resource files with the message
+ format strings and instead produced a single file called EventLogMessages.dll
+ for all processes that use EventLog. This is a one-size-fits-all file that has
+ 65,535 format strings that look like this:</p>
+<pre>%1</pre>
+<P>
+
+In other words, the data you provide when you report an event is the entire
+ message, which means that the code that generates the message has the responsibility
+ of formatting the message in an appropriate locale. This has the problem that
+ the event log will get bloated if the messages are detailed, and since the event
+ log service can be configured to trim the size of the event log files when they
+ grow too large, this can mean that event messages could be lost. Furthermore,
+ reading such events over the network uses up more bandwidth, which in the long
+ run can mean higher infrastructure costs. The most serious problem, in my opinion,
+ is that the developer of the process that generates the event has to guess the
+ locale of the reader of the event message. Since this is difficult, and often
+ impossible, to do, it results in developers taking a &quot;locale neutral&quot;
+ approach, which means formatting the messages in the so-called International
+ English. In a multicultural, multinational world, this will be interpreted as
+ arrogant cultural imperialism, and yet as a developer, you have no choice.</p>
+<P>
+
+The other downside of the EventLog class working in the way that it does is
+ that it removes the facility of having categories with meaningful names. When
+ you report an event you can pass a category ID, which is stored along with the
+ message in the event log file. The category ID is actually the index of a format
+string, but since the EventLog class uses a single generic resource file, there
+ is no space for the category descriptive string. As a consequence, when you
+ read a message you&#146;ll get the category number displayed if the category
+ is greater than 6, and if the category is between 0 and 6 the event log viewer
+ will give the name for the default categories defined in eventlog.dll.
+<P>
+
+These problems are not new to .NET, indeed, the object in VB6 to read and write
+ the event log behaved in the same way, and this makes me wonder whether the
+ EventLog class is a port of the VB6 code.</p>
+<P>
+
+My advice is to use the EventLog class only to read events&#151;if you want
+ to write events you should call the Win32 API through platform invoke and provide
+ an event format string resource file. This has two benefits: First, you use
+ the event log correctly with localized format strings, and second, because it
+ is more effort to use the event log, you will be forced to review whether you
+ should be using it. The event log should be used for &quot;eventful&quot; messages
+ for diagnostics purposes, it should not be used for trace messages.</p>
+<hr noshade size="1">
+<P>
+
+Richard Grimes speaks at conferences and writes extensively on .NET, COM, and
+ COM+. He is the author of <i>Developing Applications with Visual Studio .NET</i>
+ (Addison-Wesley, 2002). If you have comments about this topic, Richard can be
+ reached at <a href="mailto:dotnet.dev@grimes.demon.co.uk">dotnet.dev@grimes.demon.co.uk</a>.
+ For questions regarding your newsletter subscription, please contact <a href="mailto:wdletter@cmp.com">wdletter@cmp.com</a>.
+ To subscribe, visit <a href="http://www.windevnet.com/newsletters/">http://www.windevnet.com/newsletters/</a>.</p>
+</body>
+</html>
+<P>
+
+
+
+
+
+ <div class=Bspace15>
+ <em><a href="/authors/authorInfo.jhtml?authorID="><strong></strong></a> <a href="mailto:"><strong></strong></a></em>
+ </div>
+
+
+ <center>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </center>
+
+
+
+
+<!-- ARTICLE COMMENTS-->
+<!--
+<a name="articleComments"></a>
+<br>
+<droplet src="/article/articleComments.jhtml">
+<param name="articleTitle" value="param:element.headline">
+<param name="articleID" value="param:articleID">
+<param name="commentsOpen" value="true">
+</droplet>
+-->
+<!-- AROUND THE WEB AND TOP 5 ARTICLES -->
+<table border="0" width="467" cellpadding="0" cellspacing="0" class=elfixo>
+<tr>
+ <td width="229"><img src="http://i.cmpnet.com/ddj/blank.gif" border="0" width="229" height="1"></td>
+ <td width="9"><img src="http://i.cmpnet.com/ddj/blank.gif" border="0" width="9" height="1"></td>
+ <td width="229"><img src="http://i.cmpnet.com/ddj/blank.gif" border="0" width="229" height="1"></td>
+</tr>
+<TR>
+ <TD valign=top>
+ <!-- AROUND THE WEB -->
+ <!-- AROUND THE WEB -->
+ <div id="GreenContainerBoxSM2">
+ <div id="GreenBARSM2"><span class="BARTitles">RELATED ARTICLES</span></div>
+
+
+
+
+
+
+
+
+<div class="PaddingStyle2">
+
+
+
+
+
+
+
+
+
+
+ <div class="Bspace5">
+ <a href="/web-development/210004209">
+ Code Signing in Adobe AIR</a>
+ </div>
+
+
+</div>
+ </div>
+ </td>
+ <td width="9"><img src="http://i.cmpnet.com/ddj/blank.gif" border="0" width="9" height="1" alt=""></td>
+ <TD valign=top>
+ <!-- TOP 5 ARTICLES -->
+ <div id="GreenContainerBoxSM2"><div id="GreenBARSM2"><span class="BARTitles">TOP 5 ARTICLES</span></div>
+ <DIV class="PaddingStyle2">
+
+
+
+
+
+
+
+
+
+
+<DIV class="PaddingStyle2">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ No Top Articles.
+
+
+</div>
+
+ </DIV>
+ </td>
+</tr>
+</table>
+</DIV>
+
+
+ </td>
+ <TD width="10"><img src="http://i.cmpnet.com/ddj/blank.gif" border="0" width="10" height="1" alt=""></td>
+ <td valign=top>
+ <!-- RIGHT COL -->
+
+
+
+
+<!-- RIGHT COL -->
+
+<!-- ARTICLE contaier table for media center and departments -->
+<table width="575" cellpadding="0" cellspacing="0" border="0" class="elfixo">
+<TR> <TD width=400 rowspan="2" valign=top>
+
+<!-- YET TO RECEIVE AD PARAMS-->
+
+ <div class="clear">
+
+
+
+ <!-- error getting ad: null(java.lang.NullPointerException) -->
+ </div>
+
+
+<!------------------------DDJ UNIVERSITY --------------->
+<!--
+<div id="SponsorBar" style="background-color: blue;color: white;">
+<span class="miniBARTitles">DR. DOBB'S UNIVERSITY</span>
+</div>
+<div style="width: 100%; padding: 5px 0px 5px 5px;border: 1px solid black;margin-bottom: 5px;">
+Dr. Dobb's new e-learning platform, Dr. Dobb's University, gives you access to select conference sessions from Dr. Dobb's world-class developer events. Available courses focus on such topics as <a href="http://www.ddj.com/architect/ddjuniversity.jhtml">Architecture & Design</a>, <a href="http://www.ddj.com/cpp/ddjuniversity.jhtml">C/C++</a>, <a href="http://www.ddj.com/database/ddjuniversity.jhtml">Database engineering</a>, <a href="http://www.ddj.com/development-tools/ddjuniversity.jhtml">Development tools</a>, <a href="http://www.ddj.com/embedded/ddjuniversity.jhtml">Embedded systems</a>, <a href="http://www.ddj.com/hpc-high-performance-computing/ddjuniversity.jhtml">HPC</a>, <a href="http://www.ddj.com/java/ddjuniversity.jhtml">Java</a>, <a href="http://www.ddj.com/mobile/ddjuniversity.jhtml">Mobility</a>, <a href="http://www.ddj.com/linux-open-source/ddjuniversity.jhtml">Open Source</a>, <a href="http://www.ddj.com/security/ddjuniversity.jhtml">Security</a>, <a href="http://www.ddj.com/web-development/ddjuniversity.jhtml">Web Development</a> and <a href="http://www.ddj.com/windows/ddjuniversity.jhtml">Windows/.NET</a>.
+
+</div> -->
+
+
+<!----------------------SEARCH JOBS BOX----------------->
+
+<div id="jobscontainer" style="height: 41px; width: 402px; overflow: hidden;">
+
+<form method="post" action="http://www.TechCareers.com/js/action/searchresults.asp?affiliate=ddj&_DARGS=/template_parts/dept/right/right.jhtml" id="form1" name="form1">
+
+<input type="hidden" name="FOrderBy" value="modifydate[d]">
+<div id="TechCareersBox">
+<div id="SponsorBar" style="background-color: teal;">
+<span class="miniBARTitles">DR. DOBB'S CAREER CENTER</span>
+
+
+
+ <!-- error getting ad: null(java.lang.NullPointerException) -->
+
+</div>
+<div style="width: 100%; padding: 5px 0px 5px 5px;">
+Ready to take that job and shove it? <span style="text-decoration: underline;" class="pointerhand" onclick="jobsopen()">open</span> | <span style="text-decoration: underline;" class="pointerhand" onclick="jobsclose()">close</span><br>
+</div>
+</div>
+<table width=100% border=0 cellpadding=5 cellspacing=1 bgcolor="000000">
+
+ <tr bgcolor="FFFFFF">
+ <td colspan="2" valign=top bgcolor="CDE5E8" class="noLINE"> <b>Search jobs on</b> <a class="thirteenBOLD" href="http://www.techcareers.com/?affiliate=ddj">Dr. Dobb's TechCareers</a></td>
+ </tr>
+ <tr bgcolor="FFFFFF">
+ <td width="50%" valign=top>
+<table border=0 cellpadding=0 cellspacing=0 width="100%">
+ <tr>
+ <td valign="top">
+
+ <div><strong>Function:</strong><br> <select name='FCareerFocus1' size='1'>
+ <option value='23' >Information Technology</option>
+ <option value='25' >Engineering</option>
+ </select></div>
+ <br />
+ <div><strong>Keyword(s):</strong><br>
+ <input name="FKeywords" size=25></div>
+ <br />
+ <div><b>State:</b>   <input name="FState" size=8 maxlength=2> <input type="submit" value="Go" id=submit1 name=submit1 align="right"></div>
+ </td>
+
+ </tr>
+ </table>
+
+ </td>
+ <td width="50%" valign=top class="noLINE">
+ <!------------------FEATURED JOB----------------->
+
+<li><a href="http://www.TechCareers.com/JS/Form/SignUpForm.asp?affiliate=ddj">Post Your Resume</a>
+<li><a href="http://www.TechCareers.com/MKT/Content/EMP/Default.asp?affiliate=ddj">Employers Area</a>
+<li><a href="http://www.techcareers.com/content/news.asp?affiliate=ddj">News & Features</a>
+<li><a href="http://www.techcareers.com/content/forum.asp?affiliate=ddj">Blogs & Forums</a>
+<li><a href="http://www.techcareers.com/JS/CareerResources/?affiliate=ddj">Career Resources</a>
+<br><br>
+<b>Browse By:</b> <br>
+ <A href="http://www.TechCareers.com/JS/JobSearch/?affiliate=ddj">Location</A> | <A href="http://www.TechCareers.com/JS/JobSearch/?affiliate=ddj">Employer</A> | <A href="http://www.TechCareers.com/JS/JobSearch/?affiliate=ddj">City</A><br>
+
+
+
+
+ <!-- error getting ad: null(java.lang.NullPointerException) -->
+
+ </td>
+ </tr>
+
+ <tr bgcolor="FFFFFF">
+ <td colspan="2" valign=top bgcolor="CDE5E8"><b>Most Recent Posts:</b></td>
+ </tr>
+ <tr bgcolor="FFFFFF">
+ <td colspan="2" valign=top class="noLINE">
+ <!-- <script language=javascript
+src=http://www.4jobs.com/common/partnership/jobs/display.asp?max=4&col=1&par=http://www.techcareers.com&slo=N&vj=N&des=y&ran=Y&i1=23&aor=OR&loc=Y&ind=N&sal=N&comp=Y&bc=FFFFFF&bg=FFFFFF&jbc=FFFFFF&jbg=FFFFFF&pad=5&wid=&tar=n&qsn1=affiliate&qsv1=ddj&date=Y></script> -->
+<!-- <script language="javascript" src="http://www.dobbsprojects.com/prox/tcrss.js"></script> -->
+<script language="javascript" src="http://i.cmpnet.com/ddj/js/tcrss.js"></script></td>
+ </tr>
+</table>
+</form>
+</div>
+<DIV class="Bspace15"></DIV>
+<!----------------------END SEARCH JOBS BOX----------------->
+<br>
+<!-- VIDEO BOX -->
+
+
+<!-- END VIDEO BOX -->
+
+<br />
+
+<div align="center">
+
+
+
+ <!-- error getting ad: null(java.lang.NullPointerException) -->
+ </div>
+ <br />
+
+
+
+ <TABLE>
+ <TR>
+ <TD VALIGN="TOP">
+
+
+ <!-- <img src="http://i.cmpnet.com/ddj/rule.gif" width="180" height="1" hspace="0" vspace="0" border="0" alt=""> -->
+ <!-- INFO LINK-->
+
+
+<table width="100" border="0">
+ <tr>
+ <td valign="top"><!-- MICROSITES -->
+ <DIV id="ArticlerightcolBox">
+ <div id="TOCBAR"><span class="BARTitles">MICROSITES</span></div>
+ <DIV class="PaddingStyle2">
+ <span class="blogName">FEATURED TOPIC</span>
+
+
+
+
+ <!-- error getting ad: null(java.lang.NullPointerException) -->
+
+ <br /><br />
+ <span class="blogName">ADDITIONAL TOPICS</span>
+
+
+
+
+ <!-- error getting ad: null(java.lang.NullPointerException) -->
+
+ <br /><br />
+
+
+
+
+ <!-- error getting ad: null(java.lang.NullPointerException) -->
+
+ </div>
+ </div>
+ <!-- END MICROSITES --></td>
+ <td valign="top"><!-- INFO LINK-->
+ <DIV id="ArticlerightcolBox">
+<span class="blogName">INFO-LINK</span>
+ <DIV class="Bspace5">
+
+
+
+
+ <!-- error getting ad: null(java.lang.NullPointerException) -->
+ </div>
+ <DIV class="Bspace5">
+
+
+
+
+ <!-- error getting ad: null(java.lang.NullPointerException) -->
+ </div>
+ <DIV class="Bspace5">
+
+
+
+
+ <!-- error getting ad: null(java.lang.NullPointerException) -->
+ </div>
+ <DIV class="Bspace5">
+
+
+
+
+ <!-- error getting ad: null(java.lang.NullPointerException) -->
+ </div>
+</div>
+ <br></td>
+ </tr>
+</table>
+<!--
+<br>
+<div align="center"><droplet src="/viewAd.jhtml">
+ <param name="pagepos" value="sec2">
+ </droplet></div>
+ <br> -->
+
+
+ </TD>
+
+ <TD VALIGN="TOP">
+ <!-- MICROSITES -->
+ <!-- <DIV id="ArticlerightcolBox">
+ <div id="TOCBAR"><span class="BARTitles">MICROSITES</span></div>
+ <DIV class="PaddingStyle2">
+ <span class="blogName">FEATURED TOPIC</span>
+ <droplet src="/viewAd.jhtml">
+ <param name="pagepos" value="microsite1">
+ </droplet>
+ <br /><br />
+ <span class="blogName">ADDITIONAL TOPICS</span>
+ <droplet src="/viewAd.jhtml">
+ <param name="pagepos" value="microsite2">
+ </droplet>
+ <br /><br />
+ <droplet src="/viewAd.jhtml">
+ <param name="pagepos" value="microsite3">
+ </droplet>
+ </div>
+ </div> -->
+ <!-- END MICROSITES -->
+ <br />
+
+ <!--
+<div align="center"><droplet src="/viewAd.jhtml">
+ <param name="pagepos" value="jumbobox">
+ </droplet></div>
+ <br> -->
+ <!-- <droplet src="/viewAd.jhtml">
+ <param name="pagepos" value="testdrive">
+ </droplet> -->
+ </TD>
+ </TR>
+ <tr>
+ <td colspan="2">
+ <div align="center">
+
+
+
+ <!-- error getting ad: null(java.lang.NullPointerException) -->
+ </div>
+ <br />
+ <!-- Industry Brains -->
+ <script type="text/javascript" src="http://jlinks.industrybrains.com/jsct?sid=644&amp;ct=CMP_SD_DR_DOBBS_JOURNAL_ROS&amp;num=5&amp;layt=1&amp;fmt=simp"></script>
+ <!-- end Industry Brains -->
+ </td>
+ </tr>
+
+ </TABLE>
+
+
+
+ <td rowspan="2">
+<TD width=10 rowspan="2" VALIGN=top>&nbsp;</TD>
+ <TD VALIGN=top width=165>
+ <!-- DEPARTMENTS -->
+
+
+<div id="DepartmentBOX"><div id="DepartmentBar"><span class="miniBARTitles">DEPARTMENTS</span></div>
+<span class="deptLinks">
+
+<div class="DeptLinkPad"><a href="/?cid=vnav" class="deptLinks">Home</a></div>
+ <div id="dividerLine"><img src="http://i.cmpnet.com/ddj/images/blank.gif" hspace="0" vspace="0" border="0" width=5 height=1></div>
+
+ <div class="DeptLinkPad"><a href="/architect/?cid=vnav" class="deptLinks">Architecture & Design</a></div>
+ <div id="dividerLine"><img src="http://i.cmpnet.com/ddj/images/blank.gif" hspace="0" vspace="0" border="0" width=5 height=1></div>
+
+ <div class="DeptLinkPad"><a href="/cpp/?cid=vnav" class="deptLinks">C/C++</a></div>
+ <div id="dividerLine"><img src="http://i.cmpnet.com/ddj/images/blank.gif" hspace="0" vspace="0" border="0" width=5 height=1></div>
+
+
+ <div class="DeptLinkPad"><a href="/database/?cid=vnav" class="deptLinks">Database</a></div>
+ <div id="dividerLine"><img src="http://i.cmpnet.com/ddj/images/blank.gif" hspace="0" vspace="0" border="0" width=5 height=1></div>
+
+ <div class="DeptLinkPad"><a href="/development-tools/?cid=vnav" class="deptLinks">Development Tools</a></div>
+ <div id="dividerLine"><img src="http://i.cmpnet.com/ddj/images/blank.gif" hspace="0" vspace="0" border="0" width=5 height=1></div>
+
+ <div class="DeptLinkPad"><a href="/embedded/?cid=vnav" class="deptLinks">Embedded Systems</a></div>
+ <div id="dividerLine"><img src="http://i.cmpnet.com/ddj/images/blank.gif" hspace="0" vspace="0" border="0" width=5 height=1></div>
+
+ <div class="DeptLinkPad"><a href="/hpc-high-performance-computing/?cid=vnav" class="deptLinks">High Performance Computing</a></div>
+ <div id="dividerLine"><img src="http://i.cmpnet.com/ddj/images/blank.gif" hspace="0" vspace="0" border="0" width=5 height=1></div>
+
+ <div class="DeptLinkPad"><a href="/java/?cid=vnav" class="deptLinks">Java</a></div>
+ <div id="dividerLine"><img src="http://i.cmpnet.com/ddj/images/blank.gif" hspace="0" vspace="0" border="0" width=5 height=1></div>
+
+
+ <div class="DeptLinkPad"><a href="/mobile/?cid=vnav" class="deptLinks">Mobility</a></div>
+ <div id="dividerLine"><img src="http://i.cmpnet.com/ddj/images/blank.gif" hspace="0" vspace="0" border="0" width=5 height=1></div>
+
+ <div class="DeptLinkPad"><a href="/linux-open-source/?cid=vnav" class="deptLinks">Open Source</a></div>
+ <div id="dividerLine"><img src="http://i.cmpnet.com/ddj/images/blank.gif" hspace="0" vspace="0" border="0" width=5 height=1></div>
+
+
+ <div class="DeptLinkPad"><a href="/security/?cid=vnav" class="deptLinks">Security</a></div>
+ <div id="dividerLine"><img src="http://i.cmpnet.com/ddj/images/blank.gif" hspace="0" vspace="0" border="0" width=5 height=1></div>
+
+ <div class="DeptLinkPad"><a href="/web-development/?cid=vnav" class="deptLinks">Web Development</a></div>
+ <div id="dividerLine"><img src="http://i.cmpnet.com/ddj/images/blank.gif" hspace="0" vspace="0" border="0" width=5 height=1></div>
+
+ <div class="DeptLinkPad"><a href="/windows/?cid=vnav" class="deptLinks">Windows/.NET</a></div>
+ <div id="dividerLine"><img src="http://i.cmpnet.com/ddj/images/blank.gif" hspace="0" vspace="0" border="0" width=5 height=1></div>
+</span>
+<!--<div id="EventBar"><span class="eventBARTitles"><a href="/events/" class="eventBARTitles">Events</a></span></div>-->
+</div></DIV>
+<!--
+<br />
+<!-- <div id="DepartmentBOXSponsored">
+<div class="deptSponsorHeader">&#9830; sponsored</div></div> -->
+ <div id="dividerLine"><img src="http://i.cmpnet.com/ddj/images/blank.gif" hspace="0" vspace="0" border="0" width=5 height=1></div>
+ <div id="DepartmentBOXSilverlight">
+ <div class="DeptLinkPadSilverlight"><a href="http://www.ddj.com/go-parallel/;jsessionid=XWDTPFYZDJZCYQSNDLQSKHSCJUNN2JVN" class="deptLinksSilverlight">Parallel & Multi-core</a></div>
+ <div id="dividerLine"><img src="http://i.cmpnet.com/ddj/images/blank.gif" hspace="0" vspace="0" border="0" width=5 height=1></div>
+
+
+ <!-- <div id="EventBar"><span class="eventBARTitles"><a href="/dept/events/" class="eventBARTitles">Events</a></span></div> -->
+ </div>
+
+
+ <br>
+ <div align="center" width="161" height="601" hspace="0" vspace="0" border="0">
+
+
+
+
+ <!-- error getting ad: null(java.lang.NullPointerException) -->
+
+ </div>
+ <br>
+
+
+
+
+ <!-- error getting ad: null(java.lang.NullPointerException) -->
+
+ </TD>
+</TR>
+</table>
+<!-- IMU AD-->
+
+
+ </td>
+ </TR>
+ </table>
+
+<img src="http://i.cmpnet.com/ddj/rule.gif" width="900" height="1" hspace="5" vspace="10" border="0" align="left" alt="">
+<br clear="left">
+<!-- AD BANNER AT BOTTOM -->
+<div id="BottomAdContainer">
+
+
+
+ <!-- error getting ad: null(java.lang.NullPointerException) -->
+
+</div>
+<!-- /AD BANNER AT BOTTOM -->
+<DIV class="LColMargin">
+ <table width=900 cellpadding=0 cellspacing=0 border=0 class=elfixo>
+ <TR>
+ <TD valign=top width=600>
+ </TD>
+ <TD valign=top width=300>
+
+ <!-- put Microsoft Resource Center box on article pages -->
+
+
+
+
+ <table cellpadding=1 border=0><tr><td>
+ <!-- error getting ad: null(java.lang.NullPointerException) -->
+ </td></tr></table>
+
+
+
+
+
+ </TD>
+ </tr>
+ </table>
+</div>
+<img src="http://i.cmpnet.com/ddj/rule.gif" width="900" height="1" hspace="5" vspace="8" border="0" align="left" alt="">
+<br clear="left">
+
+<!-- COPYRIGHT AND LINKS -->
+<div id="COPYRIGHTContainer">
+ <span class="tenBOLD">
+ <div class="Bspace8">
+ <!--<a href="http://www.sdmediagroup.com/reg/faq.html" class=nineBOLD>What are the <span class="green9">green links</span>?</a> |-->
+ <!-- The value for parameter category is the same as deptID. It has value when the blog pages are called. -->
+
+
+
+
+
+
+
+
+
+ <!-- a href="/rss/`request.getParameter("file")`" --> <a href="/resources/rss/"><img src="http://i.cmpnet.com/ddj/rss.jpg" hspace="3" vspace="0" border="0" align=absbottom ></a> | <a href="/resources/rss/" class="tenBOLD">All Feeds</a>
+ <!-- <a href="/sitemap/" class="tenBOLD">Site map</a> -->
+ </div>
+ </span> <span class="tenBOLD">
+ <div class="Bspace8">
+ <a href="http://www.techweb.com/;jsessionid=XWDTPFYZDJZCYQSNDLQSKHSCJUNN2JVN" target="new" class="tenBOLD">© 2009 TechWeb</a>,
+ <a href="http://www.cmp.com/delivery/privacy.html" class="tenBOLD">Privacy Policy</a>,
+ <a href="http://www.cmp.com/delivery/terms.html" class="tenBOLD">Terms of Service</a>,
+ <a href="http://www.unitedbusinessmedia.com/" class="tenBOLD">United Business Media LLC</a> <BR>
+ Comments about the web site: <a href="mailto:webmaster@ddj.com" class="tenBOLD">webmaster@ddj.com</a>
+ </div>
+ Related Sites:
+ <a href="http://www.dotnetjunkies.ddj.com/" target="_blank" class="tenBOLD">DotNetJunkies</a>,
+ <a href="http://www.sdexpo.com/" target="_blank" class="tenBOLD">SD Expo</a>,
+ <a href="http://www.sqljunkies.ddj.com/" target="_blank" class="tenBOLD">SqlJunkies</a>,
+ <a href="http://totaldevpro.com/" target="_blank" class="tenBOLD">TotalDevPro</a></span>
+</div>
+<!-- /COPYRIGHT AND LINKS -->
+
+
+
+
+ <!-- error getting ad: null(java.lang.NullPointerException) -->
+
+<!-- start Vibrant Media IntelliTXT script section -->
+<script type="text/javascript" src="http://images.intellitxt.com/ast/js/ddj/ddj_edit.js"></script>
+<!-- end Vibrant Media IntelliTXT script section -->
+</body>
+</html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \ No newline at end of file