CINXE.COM
October 2013 Digital Edition
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html> <head> <style> #registrationForm #submit { margin: 30px 20px !important; float: none !important; } .digital-bottom-link{ float: right; margin-top: -37px; padding-right: 125px; } </style> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <title>October 2013 Digital Edition</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta name="pagecaching" content="662"/><meta name="node" content="97"/> <meta name="description" content="Software tools and techniques for global software development. Dr. Dobb's features articles, source code, blogs,forums,video tutorials, and audio podcasts, as well as articles from Dr. Dobb's Journal, BYTE.com, C/C++ Users Journal, and Software Development magazine." /> <meta name="headline" content="Good stuff for serious developers: Programming Tools, Code, C++, Java, HTML5, Cloud, Mobile, Testing" /> <meta name="news_keywords" content="software development, source code, Architecture & Design, Eclipse & Open Source, Windows/.NET, Database, Testing & Debugging, SOA, Web Services & XML, Mobility" /> <meta name="created" content="" /> <meta name="google-site-verification" content="HqG7-1r7RoBTg-CKrClDy746Njj0o8y-9CgeYSK4CyM" /> <style type="text/css" media="screen"> @import "https://i.cmpnet.com/informationweek/whitepaper/v2/common/css/layout.css"; @import "https://i.cmpnet.com/informationweek/whitepaper/v2/common/css/layout1.css"; @import "https://i.cmpnet.com/informationweek/whitepaper/v2/common/css/style.css"; @import "https://i.cmpnet.com/informationweek/whitepaper/v3/common/css/registration.css"; </style> <script type="text/javascript"> $(document).ready(function (){ $('.account').nextGenInit({ width: 780 }); }); </script> <link href="https://i.cmpnet.com/infoweek/green/green-pages.css" rel="stylesheet" type="text/css" media="screen,print" /> <!--[if IE 8]><style type="text/css" media="screen">.digital-bottom-link{margin-top:-15px;}</style><![endif]--> <!--[if lt IE 9]> <link href="https://i.cmpnet.com/informationweek/whitepaper/v3/common/css/registration_ie.css" rel="stylesheet" type="text/css" /> <![endif]--> <!--[if IE 7]> <style type="text/css" media="screen"> .item label {line-height:28px;} .item input {margin:4px 0;} .item select {margin:5px 0;} </style> <![endif]--> <!--[if lte IE 7]> <link href="ie.css" rel="stylesheet" type="text/css" media="screen,print" /> <![endif] --> <!--[if IE 6]> <style type="text/css" media="screen"> .login label {line-height:20px;} </style> <![endif]--> <style> body { background:url(https://i.cmpnet.com/informationweek/whitepaper/v2/common/images/body_bg.jpg) left top repeat-x; background-attachment:fixed; margin:0; padding-top:1px; } </style> <style> .submiterror {FONT-FAMILY:arial; FONT-SIZE: 10pt; COLOR:Red; FONT-WEIGHT:bold;BACKGROUND-COLOR:#F9FE36;} .submitok {FONT-FAMILY:arial; FONT-SIZE: 1pt; COLOR:White;BACKGROUND-COLOR:#FFFFFF;} </style> <script type="text/javascript"> //<![CDATA[ $.ajax({ type: "GET", url: "/checkauth", data: {"referer": encodeURIComponent(document.referrer), "redirectTo": encodeURIComponent(window.location.href)}, success: function(data){ if (data != null) { window.location = data.redirectTo; } }, dataType: "json", async: false, cache: false }); //]]> </script> <script type="text/javascript" src="https://i.cmpnet.com/informationweek/whitepaper/v3/common/js/jquery.url.js"></script> <script type="text/javascript" src="https://i.cmpnet.com/informationweek/whitepaper/v3/common/js/md5_hash.js"></script> <script type="text/javascript" src="https://i.cmpnet.com/informationweek/whitepaper/v3/common/js/twlightbox.js"></script> <script type="text/javascript" src="https://twimgs.com/nojitter/ddj/nextgen.js"></script><link href="https://i.cmpnet.com/informationweek/whitepaper/v3/common/css/twlightbox.css" media="screen" rel="stylesheet" type="text/css" /> <script> var registerlink = 'hide'; </script> <script type='text/javascript'> var _vwo_code=(function(){ var account_id=32069, settings_tolerance=2000, library_tolerance=1500, use_existing_jquery=false, // DO NOT EDIT BELOW THIS LINE f=false,d=document;return{use_existing_jquery:function(){return use_existing_jquery;},library_tolerance:function(){return library_tolerance;},finish:function(){if(!f){f=true;var a=d.getElementById('_vis_opt_path_hides');if(a)a.parentNode.removeChild(a);}},finished:function(){return f;},load:function(a){var b=d.createElement('script');b.src=a;b.type='text/javascript';b.innerText;b.onerror=function(){_vwo_code.finish();};d.getElementsByTagName('head')[0].appendChild(b);},init:function(){settings_timer=setTimeout('_vwo_code.finish()',settings_tolerance);this.load('//dev.visualwebsiteoptimizer.com/j.php?a='+account_id+'&u='+encodeURIComponent(d.URL)+'&r='+Math.random());var a=d.createElement('style'),b='body{opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important;}',h=d.getElementsByTagName('head')[0];a.setAttribute('id','_vis_opt_path_hides');a.setAttribute('type','text/css');if(a.styleSheet)a.styleSheet.cssText=b;else a.appendChild(d.createTextNode(b));h.appendChild(a);return settings_timer;}};}());_vwo_settings_timer=_vwo_code.init(); </script> <!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '832000476880185'); fbq('track', 'PageView'); </script> <noscript><img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=832000476880185&ev=PageView&noscript=1" /></noscript> <!-- End Facebook Pixel Code --> </head> <body> <div id="layout"> <div id="main"> <div id="header"> <div class="banner"> </div> <div class="strip"></div> </div> <div id="body_container"> <div id="body_container_inner"> <div id="register_full_container"> <div id="masthead"> <h1><img src="https://i.cmpnet.com/ddj/digital/ddj.gif" alt="Dr. Dobb's" /></h1> </div> <div id="intro"> <script type="text/javascript" src="https://twimgs.com/infoweek/js/jquery.cookies.2.2.0.min.js"></script> <h2 style="padding-top: 20px">Welcome Guest,</h2> <div class="account"> <strong>Already a member? <a id="signin" class="requires_cookies" href="javascript:void(0);" onclick="NextGen.loginForm('/login?successfulLoginRedirect=http%3A%2F%2Fwww.drdobbs.com%2Fdigital%2F092313%2F')">Sign In</a></strong> </div> <p><strong>How to get started in DevOps without buy-in, an outline of the first steps to achieving continuous delivery, the top ten best practices for DevOps, driving continuous integration from Git, and more!</strong></p> <div class="issue-synopsis"> <h3>The DevOps Issue:</h3><br> <ul class="toc"> <li><b>Continuous Delivery: The First Steps</b><br> <i>By Dave Jabs</i></li> Continuous delivery integrates many practices that in their totality might seem daunting. But starting with a few basic steps brings immediate benefits. Here's how.<br /><br /> <li><b>Guerilla Improvement</b><br> <i>By Langdon White and Robyn Bergeron</i></li> Getting started in DevOps without buy-in.<br /><br /> <li><b>Driving Continuous Integration from Git</b><br> <i>By Sarah Goff-Dupont and Tim Pettersen</i></li> Testing, code coverage, style enforcement are all check-in and merge requirements that can be automated and driven from Git. <br /><br /> <li><b>From the Vault: Top 10 Practices for Effective DevOps</b><br> <i>By Scott Ambler</i></li> While DevOps might mean different things to different organizations, there is an emerging core of best practices that further its goals of enhanced collaboration to produce better software. <br /><br /> <li><b>News Briefs</b><br> <i>By Adrian Bridgwater</i></li> Recent news on tools, platforms, frameworks, and the state of the software development world. <br /><br /> <li><b>Links</b><br> Snapshots of interesting items on drdobbs.com including a Git tutorial and atomic operations and low-wait algorithms in CUDA. </li> </ul> <p class="disclaimer" style="padding-left:20px;padding-bottom:0px;">This PDF is best viewed with Adobe Acrobat version 5.0 or later.</p> <p class="disclaimer">The information submitted is collected by UBM Tech and our sponsor(s).<br> <a href="https://legal.us.ubm.com/privacy-policy-highlights/" target="sponsor">UBM Tech's privacy policy</a>; <a target="_blank" href="https://dtsearch.com/privacy.html">dtSearch's privacy policy</a>; <a target="_blank" href="https://www.utest.com/privacy-policy">uTest's privacy policy</a>. </p> <p>This digital issue is sponsored by:</p> <div class="sponsor"> <table><tr> <td valign="top" style="padding-right:20px;"><img src="https://twimgs.com/ddj/digital/022513/dtSearch.jpg" alt="dtSearch" width="125" height="35" border="0" class="sponsor-logo"></td> <td valign="top"><img src="https://twimgs.com/financetech/sp/utest.png" alt="uTest" border="0" class="sponsor-logo"></td> </tr></table> <br clear="all"> <br clear="all"> </div> <br clear="all"> </div> <div class="issue-asset"> <img class="asset-cover" alt="Issue cover" src="http://twimgs.com/ddj/digital/092313/OctDDJCover.jpg"> </div> </div> <div style="clear:both;"><noscript><h2 class="red">Javascript on your browser is disabled please enable it to get best experience ...</h2></noscript></div> <div id="register_full_container_inner"> <div class="contents_mid"> <!-- Need to add our Registration --> <script> var formPosted = '0'; </script> <style> .linkedproviders {clear:both;} .linkedproviders .providers {float:left;} .linkedproviders .providers ul {list-style:none outside none;padding:0px;} .linkedproviders .providers ul li {margin:5px;clear:both;font-weight: bold;} .linkedproviders .providers ul li div {float:left;width:125px !important;} .linkedproviders .followus {float:right;margin:5px;} </style> <div class="digital-bottom-link"> Having trouble logging in? <a href="/cdn-cgi/l/email-protection#eb8a8fb4989e89988899829b9f82848598ab9f8e88839c8e89c5888486">Click here</a>. <a href="https://get.adobe.com/reader/otherversions/">Download Adobe Reader</a> </div> <!-- Need to add our Registration --> </div> </div> </div> </div> <!-- Eloqua Tracking Script Call for all IWBTN sites layout --> <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><SCRIPT TYPE='text/javascript' LANGUAGE='JavaScript' SRC='https://twimgs.com/informationweek/elqNow/elqCfg.js'></SCRIPT> <SCRIPT TYPE='text/javascript' LANGUAGE='JavaScript' SRC='https://twimgs.com/informationweek/elqNow/elqImg.js'></SCRIPT> <div class="strip_bottom"> </div> <div id="footer" style="width:725px;"> <div class="footer_menu" style="width:700px;"> <ul style="width:700px;"> <li><a href="https://www.informationweek.com/newshome/">News</a></li> <li>|</li> <li><a href="https://www.informationweek.com/windows/">Windows</a></li> <li>|</li> <li><a href="https://www.informationweek.com/security/">Security</a></li> <li>|</li> <li><a href="https://www.informationweek.com/mobility/">Outsourcing</a></li> <li>|</li> <li><a href="https://www.informationweek.com/internet/">Internet</a></li> <li>|</li> <li><a href="https://www.informationweek.com/software/">Software</a></li> <li>|</li> <li><a href="https://www.informationweek.com/hardware/">Hardware</a></li> <li>|</li> <li><a href="https://www.informationweek.com/management/">Management</a></li> <li>|</li> <li><a href="https://www.informationweek.com/research/">Research & Tools</a></li> <li>|</li> <li><a href="https://www.informationweek.com/industries/">Industries</a></li> <li>|</li> <li><a href="https://www.techcareers.com/?affiliate=iwk">Careers</a></li> </ul> <ul class="down" style="width:700px;"> <li><a href="https://www.informationweek.com/aboutus.jhtml">About Us</a></li> <li>|</li> <li><a href="https://www.informationweek.com/contactus.jhtml">Contact Us</a></li> <li>|</li> <li><a href="https://www.informationweek.com/thisweek">Current Issue</a></li> <li>|</li> <li><a href="https://www.informationweek.com/maindocs/archive.htm">Back Issues</a></li> <li>|</li> <li><a href="https://www.informationweek.com/whitepaper/">White Papers</a></li> <li>|</li> <li><a href="https://briefingcenters.techweb.com/">Briefing Centers</a></li> <li>|</li> <li><a href="https://www.informationweek.com/sitemap/index.html">Site Map</a></li> <li>|</li> <li><a href="https://www.informationweek.com/contactsales.jhtml">Advertise</a></li> <li>|</li> <li><a href="https://www.informationweek.com/mediakit/">Media Kit</a></li> </ul> </div> <div class="copyright"><a href="https://www.techweb.com/terms-of-service.htm">Terms of Service</a> <a href="https://www.techweb.com/copyright.htm">Copyright © 2024, UBM Techweb</a> <a href="https://www.techweb.com/privacy-highlights.htm">Privacy Statement</a> <a href="https://www.informationweek.com/mediakit">Media Kit</a> <a href="/cdn-cgi/l/email-protection#3d5b5858595f5c5e567d49585e554a585f135e5250">Feedback</a> </div> </div> </div> </div> </div> <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script type="text/javascript"> $("label[for='req_note']").text("By clicking on \"Go To Digital Issue\", you will be sending information to UBM LLC. a company located in the United States, for processing within the United States and possibly in other countries."); </script> <script type="text/javascript"> //<![CDATA[ $( function() { $('.requires_cookies') .click( function() { if (! $.cookies.test() ) { alert( 'Cookies must be enabled to Sign In.' ); return false; } } ); } ); //]]> </script> <script type="text/javascript"> //<![CDATA[ $( function() { $('div#131-element').append('<div id="email_exists"></div>'); // check if email already exists $('#email_exists').hide(); $('input#131') .blur( function(event) { $('#registrationForm :input').removeAttr('disabled'); $('#email_exists').load( '/registration/index/validateemailexists', {identity: $(this).val(), edition: $('input#edition').val(), currUrl:'http://www.drdobbs.com/digital/092313/', assetId:''}, function(response, status, xhr){ if (jQuery.trim(response)){ $('#email_exists').show(); $('#registrationForm :input').attr('disabled', 'disabled'); $('input#131').removeAttr('disabled'); $('input#confirmEmail').removeAttr('disabled'); } } ); } ); //display Horizontal rule above the Question var html = '<div class="divider"></div>'; if ( $('div#203-element').length ) { $('div#203-element').prepend(html); }else{ $('div#517-element').prepend(html); } $('div#123-element').append('<div id="nickname_exists" class="errors"></div>'); // check if nickname already exists $('#nickname_exists.errors').hide(); $('input#123') .blur( function(event) { $('#registrationForm :input').removeAttr('disabled'); $('#nickname_exists').load( '/registration/index/validatenicknameexists', {nickname: $(this).val(), currUrl:'http://www.drdobbs.com/digital/092313/'}, function(response, status, xhr){ if (jQuery.trim(response)){ $('#nickname_exists.errors').show(); $('#registrationForm :input').attr('disabled', 'disabled'); $('input#123').removeAttr('disabled'); } else { $('#nickname_exists.errors').hide(); } } ); } ); //check if passwords match $('input#confirmPassword') .focus( function(event) { $('#err-confirmPassword').remove(); } ) .blur( function(event) { if($('input#124').val() != $('input#confirmPassword').val()) { $('#err-confirmPassword').remove(); $('<div class="errors" id="err-confirmPassword">Your passwords do not match.</div>').insertAfter(this); } } ); //check if email match $('input#confirmEmail') .focus( function(event){ $('#err-confirmEmail').remove(); } ) .blur( function(event){ if($('input#confirmEmail').val() != '' && $('input#131').val() != $('input#confirmEmail').val()){ $('#err-confirmEmail').remove(); $('<div class="errors" id="err-confirmEmail">Your emails do not match.</div>').insertAfter(this); } } ); //Hide empty fieldsets var currentFieldsetId = 0; $('#registrationForm fieldset:not(\'.exclusive\')').each(function(i){ var showFieldset = 0; $('#fieldset-s'+currentFieldsetId+' .inner_left').each(function () { if(!$(this).is(':hidden')){showFieldset++} }); if(showFieldset == 0){ $('#fieldset-s'+currentFieldsetId).hide(); if ( $('#navigation .fieldset-s'+currentFieldsetId).length ) { $('#navigation .fieldset-s'+currentFieldsetId).remove(); } } currentFieldsetId++; }); //OnChange event for country dropdown $('select#107').change(function(e){ var currentFieldsetId = 0; $('#registrationForm fieldset:not(\'.exclusive\')').each(function(i){ var showFieldset = 0; $('#fieldset-s'+currentFieldsetId+' .inner_left').each(function () { if($(this).css('display') == 'block'){showFieldset++} }); if(showFieldset == 0){ $('#fieldset-s'+currentFieldsetId).hide(); }else{ $('#fieldset-s'+currentFieldsetId).show(); } currentFieldsetId++; }); }); } ); //]]> </script> <script type="text/javascript"> //<![CDATA[ $(document).ready(function () { //Add loader if ( $('#req_note-label').length ) { $('#req_note-label').before('<div id="load-other-assets" style="display:none;" align="left"><span style="color:#FF0000;font-size:12px;font-weight: bold;">Loading more assets...</span></div>'); } else { var FieldsetCount = $('#registrationForm fieldset:visible').length - 1; $('#fieldset-s'+FieldsetCount+' .inner_border_lg').append('<div id="load-other-assets" style="display:none;" align="left"><span style="color:#FF0000;font-size:12px;font-weight: bold;">Loading more assets...</span></div>'); } //Load co-reg content $('#load-other-assets').parents('fieldset').show(); $('#load-other-assets').show().load('/digitaledition/assetonmainpage?page=092313§ion=DigitalEdition', function() { //Adjust the height if ( $('#steps').length ) { var currentFHeight = parseInt ( $('#registrationForm #fieldset-s'+FieldsetCount).height() ) + 30; $('#steps').stop().animate({ height:currentFHeight + 'px' }, 500); } } ); }); //]]> </script> <!-- SiteCatalyst code version: H.16. Copyright 1997-2008 Omniture, Inc. More info available at https://www.omniture.com --> <script type="text/javascript" src="https://twimgs.com/custom/library.gtecevent.com/assets/ubm-tech-global-app-measurement.js?ormzkk" ></script> <script language='JavaScript' type='text/javascript'> var referer = ''; var eVar23 = ''; var slr=""; var host=""; var userAgent = ''; $.ajax({ type: "GET", url: host+"/omniture", data: "referer="+slr+encodeURIComponent(document.referrer), success: function(data){ if (data != null) { referer = data.referer; eVar23 = data.eVar23; userAgent = data.userAgent; } }, dataType: "json", async: false, cache: false } ); </script> <script language='JavaScript' type='text/javascript'> <!-- s.pageURL="http://www.drdobbs.com/digital/092313/"; s.pageName=""; s.referrer=referer; s.server=""; s.channel="drdobbs.com.com/digital"; s.pageType=""; s.prop1=""; s.prop2=""; s.prop3=""; s.prop4=""; s.prop5="digital"; s.prop6=""; s.prop7=""; s.prop8=userAgent; s.prop9=""; s.prop10=""; s.prop11=""; s.prop12=""; s.prop14=""; s.prop15=""; s.prop16=""; s.prop19="False"; s.prop20=""; s.prop21=""; /* Conversion Variables */ s.campaign=""; s.state=""; s.zip=""; s.events=""; s.products=""; s.purchaseID=""; s.eVar1=""; s.eVar2=""; s.eVar3=""; s.eVar4=""; s.eVar5=""; s.eVar6=""; s.eVar8=""; s.eVar21=""; s.eVar22=""; s.eVar23=eVar23; s.eVar31=""; /************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/ var s_code=s.t();if(s_code)document.write(s_code)//--> </script> <noscript><a href="https://www.omniture.com" title="Web Analytics"><img src="https://cmpglobalvista.112.2O7.net/b/ss/cmpglobalvista/1/H.16--NS/0" height="1" width="1" border="0" alt="" /></a></noscript><!--/DO NOT REMOVE/--> <script language="JavaScript" type="text/javascript"> function trackComment(){ var s=s_gi('cmpglobalvista'); s.evar24=s.prop7 +" | "+ s.prop4; s.events='event8'; s.tl(this,'o','Article Comment Posted'); } </script> <!-- End SiteCatalyst code version: H.16 --><!-- Google Code for Remarketing Tag --> <!-------------------------------------------------- Remarketing tags may not be associated with personally identifiable information or placed on pages related to sensitive categories. See more information and instructions on how to setup the tag on: http://google.com/ads/remarketingsetup ---------------------------------------------------> <script type="text/javascript"> /* <![CDATA[ */ var google_conversion_id = 1007530244; var google_custom_params = window.google_tag_params; var google_remarketing_only = true; /* ]]> */ </script> <script type="text/javascript" src="//www.googleadservices.com/pagead/conversion.js"> </script> <noscript> <div style="display:inline;"> <img height="1" width="1" style="border-style:none;" alt="" src="//googleads.g.doubleclick.net/pagead/viewthroughconversion/1007530244/?guid=ON&script=0"/> </div> </noscript> </body> </html>