<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
        <title>DevCentral Docs and Tips (Video)</title> 
        <link>http://devcentral.f5.com</link> 
        <description>Get your dose of technical information from the DevCentral Docs and Tips.</description> 
        <ttl>60</ttl> <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/DevCentralVideoTutorials" /><feedburner:info uri="devcentralvideotutorials" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><media:copyright>Copyright 2007, F5 Networks Inc.</media:copyright><media:thumbnail url="http://devcentral.f5.com/podcast/DC4-VideoTutorial.jpg" /><media:keywords>F5,BIG,IP,iControl,iRules,Video,Tutorials</media:keywords><media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Technology/Software How-To</media:category><itunes:owner><itunes:email>devcentralteam@f5.com</itunes:email><itunes:name>F5 DevCentral Team</itunes:name></itunes:owner><itunes:author>F5 DevCentral Team</itunes:author><itunes:explicit>no</itunes:explicit><itunes:image href="http://devcentral.f5.com/podcast/DC4-VideoTutorial.jpg" /><itunes:keywords>F5,BIG,IP,iControl,iRules,Video,Tutorials</itunes:keywords><itunes:subtitle>DevCentral Docs and Tips | Video Tutorials</itunes:subtitle><itunes:summary>Get the latest walkthroughs on F5 Products and Technologies.</itunes:summary><itunes:category text="Technology"><itunes:category text="Software How-To" /></itunes:category><geo:lat>47.622220</geo:lat><geo:long>-122.362638</geo:long><item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086492/v11-RDP-Access-via-BIG-IP-APMPart-1.aspx#Comments</comments> 
    <slash:comments>2</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=1086492</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1086492&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>v11: RDP Access via BIG-IP APM–Part 1</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/wgX2VdqYeYc/v11-RDP-Access-via-BIG-IP-APMPart-1.aspx</link> 
    <description>&lt;script type="text/javascript" src="/DesktopModules/itcMetaPost/js/ca0c21fbdc85f6a1597417732d450607.ashx?hs=1"&gt;&lt;/script&gt;
&lt;p&gt;I wrote an article several months back on &lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086455/Auto-launch-Remote-Desktop-Sessions-with-APM.aspx" target="_blank"&gt;auto-launching Remote Desktop sessions with APM&lt;/a&gt;.&amp;#160; With the introduction of BIG-IP APM v11, there is a new built-in capability to support a full webtop.&amp;#160; This means that server, desktop, or other resources can be placed on the webtop for users to select once logging in.&amp;#160; In this first example, I’ll set up a static internal resource for users to connect to after logging in.&lt;/p&gt;
&lt;h3&gt;Create the Webtop&lt;/h3&gt;
&lt;p&gt;After logging in to the BIG-IP, open up the Access Policy tab and select &lt;strong&gt;Webtops&lt;/strong&gt;-&amp;gt;&lt;strong&gt;Webtop List&lt;/strong&gt; and then click Create (or you can hit the “+” circled to the right of the Webtop List.) Give the Webtop a meaningful name and the type needs to be Full as show in Figure 1.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:0cee0dc4-d320-4919-b962-ef6c772ff2d1" class="wlWriterEditableSmartContent"&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_3-8x6.png" title="Figure 1. Full Webtop" rel="thumbnail" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'7c944a3e'})"&gt;&lt;img width="580" height="358" border="0" alt="" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_3_5.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;h3&gt;Create the RDP Resource&lt;/h3&gt;
&lt;p&gt;Still in the Access Policy tab, click &lt;strong&gt;Application Access&lt;/strong&gt;-&amp;gt;&lt;strong&gt;Remote Desktops&lt;/strong&gt;-&amp;gt;&lt;strong&gt;Remote Desktops&lt;/strong&gt; and then click Create. There are a number of fields here, but for this example the only ones that need to be set are the &lt;strong&gt;Type&lt;/strong&gt; (RDP), the &lt;strong&gt;Destination&lt;/strong&gt; (Server or Desktop hostname or IP), and &lt;strong&gt;Auto Logon&lt;/strong&gt; (Enable). When Auto Logon is selected, the username, password, and domain source variable fields are shown.&amp;#160; I accepted the defaults.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:48d682f2-91f5-41f1-a658-e67ae4f27954" class="wlWriterEditableSmartContent"&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_2-8x6.png" title="Figure 2. RDP Resource" rel="thumbnail" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'7c944a3e'})"&gt;&lt;img width="580" height="390" border="0" alt="" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_2_3.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;h3&gt;Create the Access Policy&lt;/h3&gt;
&lt;p&gt;Now that the two custom objects for the RDP Webtop are created, I’ll create the access policy (and virtuals) with the &lt;strong&gt;Network Access Setup Wizard for Remote Access&lt;/strong&gt; under the Wizards tab. I create all my access policies this way, the wizard is very thorough and eliminates my tendency to overlook an object or misconfigure one, not to mention the time savings. In the first screen, I disabled AV checks (though in production I wouldn’t recommend this) as shown in Figure 3 below.&lt;/p&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:7725d386-cbd5-4b7a-99a8-085e8f347615" class="wlWriterEditableSmartContent"&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_4-8x6.png" title="Figure 3. Access Policy Wizard Step 1" rel="thumbnail" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'7c944a3e'})"&gt;&lt;img width="580" height="428" border="0" alt="" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_4_7.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Next I create a new authentication resource (you can select existing if this is not a new installation), utilizing my test active directory server.&lt;/p&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:0dc845b2-c7c0-4391-8777-84e5548451f3" class="wlWriterEditableSmartContent"&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_5-8x6.png" title="Figure 4. Authentication Resource" rel="thumbnail" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'7c944a3e'})"&gt;&lt;img width="580" height="433" border="0" alt="" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_5_3.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:e1660838-8ad5-44bb-90a7-33662f039035" class="wlWriterEditableSmartContent"&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_6-8x6.png" title="Figure 5. AD Configuration Details" rel="thumbnail" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'7c944a3e'})"&gt;&lt;img width="580" height="393" border="0" alt="" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_6_4.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Next I configure the lease pool.&amp;#160; It’s just me in my test lab, so I only create a single client address, but you’ll likely need to choose the IP address range.&lt;/p&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:f3effd19-e092-4555-8822-8aa97f9c2fa5" class="wlWriterEditableSmartContent"&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_7-8x6.png" title="Figure 6. Lease Pool Configuration" rel="thumbnail" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'7c944a3e'})"&gt;&lt;img width="580" height="511" border="0" alt="" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_7_4.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The next step is for network access configuration.&amp;#160; Corporate policies will dictate whether all traffic is forced through the tunnel or if split-tunneling is appropriate. For this example, I stuck with forcing all traffic through the tunnel to minimize the necessary configuration to show the features.&lt;/p&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:597aa133-b617-46a2-9f5d-5e015983b41c" class="wlWriterEditableSmartContent"&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_8-8x6.png" title="Figure 7. Network Access Configuration" rel="thumbnail" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'7c944a3e'})"&gt;&lt;img width="580" height="475" border="0" alt="" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_8_3.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;I only have one name server, my ad01 directory server, so I enter that and leave the rest blank.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:935d8102-1e5a-45ff-9711-b6325c082512" class="wlWriterEditableSmartContent"&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_9-8x6.png" title="Figure 8. Client DNS Configuration" rel="thumbnail" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'7c944a3e'})"&gt;&lt;img width="580" height="600" border="0" alt="" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_9_6.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Next I’ll enter the VIP address and leave the http-&amp;gt;https redirect virtual enabled.&lt;/p&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:5fa518ae-798b-465b-b7e2-6f4399d227b2" class="wlWriterEditableSmartContent"&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_10-8x6.png" title="Figure 9. VIP Configuration" rel="thumbnail" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'7c944a3e'})"&gt;&lt;img width="580" height="401" border="0" alt="" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_10_4.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;At this point, I review the configuration and click &lt;strong&gt;next&lt;/strong&gt;.&amp;#160; If there are any errors, you can return to previous steps in the wizard and make corrections. Before clicking &lt;strong&gt;Finished&lt;/strong&gt; in the next screen, I need to edit the access policy.&lt;/p&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:efab365e-53ff-4742-8e34-2fce94f2e3fd" class="wlWriterEditableSmartContent"&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_11-8x6.png" title="Figure 10. Edit Access Policy" rel="thumbnail" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'7c944a3e'})"&gt;&lt;img width="580" height="339" border="0" alt="" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_11_3.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Once in the policy editor, click on the &lt;strong&gt;Logon Page&lt;/strong&gt; object and set Field 3 from &lt;strong&gt;none&lt;/strong&gt; to &lt;strong&gt;text&lt;/strong&gt; and use &lt;strong&gt;domain&lt;/strong&gt; as the post and session variable name.&amp;#160; Then below in the &lt;strong&gt;Logon Page Input Field #3&lt;/strong&gt; text box, enter &lt;strong&gt;Domain&lt;/strong&gt;.&lt;/p&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:59f449a7-0431-4726-a385-27beff507745" class="wlWriterEditableSmartContent"&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_12-8x6.png" title="Figure 11. Logon Page Settings" rel="thumbnail" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'7c944a3e'})"&gt;&lt;img width="580" height="484" border="0" alt="" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_12_5.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Next, click on the &lt;strong&gt;Resource Assign&lt;/strong&gt; object and then click &lt;strong&gt;Add/Delete&lt;/strong&gt; in the expression. I need to replace the webtop the network access wizard created and I need to select the RDP Resource I created.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:3391b08f-d238-4c41-a7c8-a507f5f8cd8f" class="wlWriterEditableSmartContent"&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_13-8x6.png" title="Figure 12. Resource Assign" rel="thumbnail" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'7c944a3e'})"&gt;&lt;img width="580" height="312" border="0" alt="" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_13_3.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:46619637-496b-490d-9698-5071aaf99fc7" class="wlWriterEditableSmartContent"&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_15-8x6.png" title="Figure 13. Replace Webtop" rel="thumbnail" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'7c944a3e'})"&gt;&lt;img width="580" height="305" border="0" alt="" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_15_4.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:74f1deaf-7e88-4b94-a077-e05f75cbf6cf" class="wlWriterEditableSmartContent"&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_14-8x6.png" title="Figure 14. Assign RDP Resource " rel="thumbnail" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'7c944a3e'})"&gt;&lt;img width="580" height="279" border="0" alt="" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_14_7.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Close out the policy and then click &lt;strong&gt;Finished&lt;/strong&gt; in the &lt;strong&gt;Setup Summary&lt;/strong&gt; screen. For my configuration I need to snat the traffic, so I enabled snat-automap on the virtual created by the wizard. Because I made changes to the policy, I need to re-apply it, so in the Access Policy tab I clicked on &lt;strong&gt;Access Profiles&lt;/strong&gt; and then selected my profile and clicked &lt;strong&gt;Apply Access Policy&lt;/strong&gt;.&lt;/p&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:7bee4600-824f-4360-91aa-4b5225f876f9" class="wlWriterEditableSmartContent"&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_16-8x6.png" title="Figure 15. Apply Access Policy" rel="thumbnail" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'7c944a3e'})"&gt;&lt;img width="580" height="327" border="0" alt="" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_16_2.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;That completes the configuration steps. Now it’s time to test.&lt;/p&gt;
&lt;h3&gt;Testing the Configuration&lt;/h3&gt;
&lt;p&gt;First I open a browser and navigate to my vip, https://10.10.20.30.&lt;/p&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:60cac915-dcef-48af-8940-36bfbee37e7d" class="wlWriterEditableSmartContent"&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_19-8x6.png" title="Figure 16. Logon Screen" rel="thumbnail" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'7c944a3e'})"&gt;&lt;img width="580" height="412" border="0" alt="" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_19_3.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;After login, my RDP resource is shown on my Webtop, along with my network access.&lt;/p&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:ee938cee-0d64-45aa-9979-cf059655cbd2" class="wlWriterEditableSmartContent"&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_20-8x6.png" title="Figure 17. v11 Webtop" rel="thumbnail" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'7c944a3e'})"&gt;&lt;img width="580" height="352" border="0" alt="" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_20_3.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;After clicking the rdptest icon, I am logged in automatically to my server.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: none;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:c5ecadc5-6892-4fa3-bb75-fd8562d9c770" class="wlWriterEditableSmartContent"&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_22-8x6.png" title="Figure 18. RDP Session" rel="thumbnail" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'7c944a3e'})"&gt;&lt;img width="580" height="510" border="0" alt="" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2011/Sep/Windows-Live-Writer-v11-Access-Policy-Manager-Remote-Desktop_BCC1-apm_rdp1_22_4.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;It seems like a lot of steps, but I configured this in less than five minutes, which is far more efficient and far less error-prone than the previous solution. The video below shares the same steps covered here in screen captures.&lt;/p&gt;
&lt;div class="techTipPlayer"&gt;&lt;a id="ba5d7e4a-85d3-44d8-ad23-b17e21260ea3" href="http://www.youtube.com/watch?v=XBr4rl_GnKc" alt="youtube"&gt;BIG-IP APM RDP Webtop&lt;/a&gt;&lt;/div&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;This solution introduces a full Webtop environment for BIG-IP APM in version 11, which I took advantage of for statically configuring RDP resources for clients.&amp;#160; In part 2, I’ll introduce a dynamic option for the RDP resource.&lt;/p&gt;
&lt;div class="d_itc_f" style="clear: both; height: 11px;"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/wgX2VdqYeYc" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Tue, 13 Sep 2011 02:00:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1086492</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086492/v11-RDP-Access-via-BIG-IP-APMPart-1.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086452/Link-Tracking-With-iRules--Part-3--URI-Filtering.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=1086452</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1086452&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>Link Tracking With iRules - Part 3 - URI Filtering</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/x-c09jK3oKI/Link-Tracking-With-iRules--Part-3--URI-Filtering.aspx</link> 
    <description>&lt;script type="text/javascript" src="/DesktopModules/itcMetaPost/js/ca0c21fbdc85f6a1597417732d450607.ashx?hs=1"&gt;&lt;/script&gt;
&lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/Joe/2011/Apr/Windows-Live-Writer-Link-Tracking-With-iRules---Part-3--_8B7A-tt_linktracking-3-1.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'09301f2d'})"&gt;&lt;img width="244" height="178" border="0" align="right" style="background-image: none; border-right-width: 0px; margin: 0px 0px 10px 10px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="tt_linktracking-3-1" alt="tt_linktracking-3-1" src="/Portals/0/images/metapost/News-Articles/Joe/2011/Apr/Windows-Live-Writer-Link-Tracking-With-iRules---Part-3--_8B7A-tt_linktracking-3-1_thumb.jpg" /&gt;&lt;/a&gt;This is the third article in a series on building link tracking functionality with iRules.&amp;#160; The previous articles were&lt;/p&gt;
&lt;ul class="ArrowList"&gt;
    &lt;li&gt;&lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086444/Link-Tracking-With-iRules--Part-1.aspx"&gt;Link Tracking With iRules - Part 1&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086446/Link-Tracking-With-iRules--Part-2--Filtering-Results.aspx"&gt;Link Tracking With iRules - Part 2 - Filtering Results&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the first article, I focused on building the core link tracking logic and in the second I added the logic to implement a simple output filter to only list the URI’s you are interested in seeing the statistics for.&amp;#160; In this article I will build on additional functionality, so I would highly suggest taking a peek at the first two before continuing.&lt;/p&gt;
&lt;p&gt;Now, if you are like me, there are a lot of HTTP requests that go into your application that you don’t care about keeping tracking data on.&amp;#160; The first two articles did nothing with regards to pre-filtering the URIs coming in to the iRule and left unattended, will get a fairly large list.&amp;#160; This article will discuss how to add some basic filtering to the incoming URIs that are added to the link tracking database.&lt;/p&gt;
&lt;h3&gt;&lt;font style="font-weight: bold"&gt;The Control Panel UI Elements&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/Joe/2011/Apr/Windows-Live-Writer-Link-Tracking-With-iRules---Part-3--_8B7A-tt_linktracking-3-3.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'09301f2d'})"&gt;&lt;img width="99" height="120" border="0" align="left" style="background-image: none; border-right-width: 0px; margin: 0px 10px 10px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="tt_linktracking-3-3" alt="tt_linktracking-3-3" src="/Portals/0/images/metapost/News-Articles/Joe/2011/Apr/Windows-Live-Writer-Link-Tracking-With-iRules---Part-3--_8B7A-tt_linktracking-3-3_thumb.jpg" /&gt;&lt;/a&gt;In order to list and store the URI filters in this application, I created a control panel to the left of the URI tracking results.&amp;#160;&lt;/p&gt;
&lt;p&gt;The control panel consists of the subtable name, the number of links currently in the tracking database, global control links for clearing the data and filters, the URI filter list, and a text box to allow for the user to add new URI filters.&lt;/p&gt;
&lt;p&gt;I’d like to note here, that I’ve expended a &lt;em&gt;minimal&lt;/em&gt; amount of UI design in this iRule.&amp;#160; I have no sense of color, so you are just going to get plain HTML tables out of me.&amp;#160; I’d love to get someone with some artistic abilities to fix up the styles in this and make it look nice.&amp;#160; Anyone?&lt;/p&gt;
&lt;p&gt;Anyway, back to the contents of the control panel..&lt;/p&gt;
&lt;h3&gt;&lt;font style="font-weight: bold"&gt;Table Names&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;The table names, as in the previous examples, are derived from the name of the virtual server the iRule is attached to.&amp;#160; This allows for applications on different virtual servers to have separate data stores.&amp;#160; In this example, I’m just storing these as local variables in the HTTP_REQUEST handler event.&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; TABLE_LINK    &lt;span style="color: #006080"&gt;"LINK_TRACKING_[virtual name]"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; TABLE_FILTERS &lt;span style="color: #006080"&gt;"LINK_TRACKING_FILTERS_[virtual name]"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;&lt;font style="font-weight: bold"&gt;Link Count&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;The number of items in the link tracking database is easily determined by using the “&lt;strong&gt;table keys&lt;/strong&gt;” command with the “&lt;strong&gt;-count&lt;/strong&gt;” argument.&amp;#160; This will return the number of keys that would have been returned from the command if the “&lt;strong&gt;-count&lt;/strong&gt;” parameter wasn’t specified.&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; count [&lt;span style="color: #0000ff"&gt;table&lt;/span&gt; keys -subtable $TABLE_LINK -count]&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;append&lt;/span&gt; content &lt;span style="color: #006080"&gt;"&amp;lt;tr&amp;gt;&amp;lt;td align='right'&amp;gt;&amp;lt;b&amp;gt;Link&amp;amp;nbsp;Count&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$count&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;&lt;font style="font-weight: bold"&gt;Controls&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;I’ve moved the "Clear Data” control from the report listing into the Controls section of the control panel.&amp;#160; What that I know have three control commands:&lt;/p&gt;
&lt;ul class="ArrowList"&gt;
    &lt;li&gt;/linkcleardata - Clear all link tracking data from the table.&amp;#160; In the handler for this command, I simply issue the “&lt;strong&gt;table delete&lt;/strong&gt;” command on the &lt;em&gt;$TABLE_LINK &lt;/em&gt;table.&lt;/li&gt;
    &lt;li&gt;/linkclearfilters&amp;#160; - Clear all filters from the filter table.&amp;#160; In this handler, I use the “&lt;strong&gt;table delete&lt;/strong&gt;” command to erase the &lt;em&gt;$TABLE_FILTERS&lt;/em&gt; table.&lt;/li&gt;
    &lt;li&gt;/linkadmin - reload the iRule to refresh the result table.&lt;/li&gt;
&lt;/ul&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;append&lt;/span&gt; content {&amp;lt;tr&amp;gt;&amp;lt;td align=&lt;span style="color: #006080"&gt;'right'&lt;/span&gt; valign=&lt;span style="color: #006080"&gt;'top'&lt;/span&gt;&amp;gt;&amp;lt;b&amp;gt;Controls&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;   &amp;lt;td&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     &amp;lt;a href=&lt;span style="color: #006080"&gt;'/linkcleardata'&lt;/span&gt;&amp;gt;Clear Data&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     &amp;lt;a href=&lt;span style="color: #006080"&gt;'/linkclearfilters'&lt;/span&gt;&amp;gt;Clear Filters&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     &amp;lt;a href=&lt;span style="color: #006080"&gt;'/linkadmin'&lt;/span&gt;&amp;gt;Refresh&amp;lt;/a&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;   &amp;lt;/td&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; &amp;lt;/tr&amp;gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt; .&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt; .&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt; &lt;span style="color: #006080"&gt;"/linkcleardata"&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;table&lt;/span&gt; delete -subtable $TABLE_LINK -all;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;HTTP::redirect&lt;/span&gt; &lt;span style="color: #006080"&gt;"http://[HTTP::host]/linkadmin/Link+Tracking+Cleared"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt; &lt;span style="color: #006080"&gt;"/linkclearfilters"&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;table&lt;/span&gt; delete -subtable $TABLE_FILTERS -all;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;HTTP::redirect&lt;/span&gt; &lt;span style="color: #006080"&gt;"http://[HTTP::host]/linkadmin/Link+Filters+Cleared"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;&lt;font style="font-weight: bold"&gt;Adding New URI Filters&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;Adding new filters is relatively simple.&amp;#160; An HTML &lt;strong&gt;input &lt;/strong&gt;form is created in the control panel and I’ve overridden the &lt;strong&gt;onKeyDown&lt;/strong&gt; handler to look for the enter key (keyCode == 13) and when it’s hit, the page is redirected to the “/linkaddfilter” command passing in the new filter as the rest of the URI.&lt;/p&gt;
&lt;p&gt;The add filter processing code will extract all the values past the initial “/linkaddfilter/” in the URI and insert that into the &lt;em&gt;$TABLE_FILTERS&lt;/em&gt; table.&amp;#160; This table is just being used to store the filter patterns. In this case I really don’t care what the value is, nor if it’s already in the table so a single “table add” command is made to insert it for future processing.&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;append&lt;/span&gt; content {&amp;lt;tr&amp;gt;&amp;lt;td align=&lt;span style="color: #006080"&gt;'right'&lt;/span&gt;&amp;gt;&amp;lt;b&amp;gt;Add&amp;amp;nbsp;Filter&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;   &amp;lt;input type=&lt;span style="color: #006080"&gt;'text'&lt;/span&gt; id=&lt;span style="color: #006080"&gt;'new_filter'&lt;/span&gt; value=&lt;span style="color: #006080"&gt;''&lt;/span&gt; size=&lt;span style="color: #006080"&gt;'15'&lt;/span&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     onkeydown=&lt;span style="color: #006080"&gt;"if (event.keyCode == 13) { window.location.assign('/linkaddfilter/' + encodeURI(getElementById('new_filter').value)) }"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;   &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; .&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; .&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; &lt;span style="color: #006080"&gt;"/linkaddfilter/*"&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; f [&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; range ]&lt;span style="color: #0000ff"&gt;HTTP::uri&lt;/span&gt;[ ]&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; length &lt;span style="color: #006080"&gt;"/linkaddfilter/"&lt;/span&gt;[ end]&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; { &lt;span style="color: #006080"&gt;""&lt;/span&gt; != $f } {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;table&lt;/span&gt; add -subtable $TABLE_FILTERS $f 1 indefinite indefinite;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;   }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;HTTP::redirect&lt;/span&gt; &lt;span style="color: #006080"&gt;"http://[HTTP::host]/linkadmin/Filter+Added"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;&lt;font style="font-weight: bold"&gt;Listing And Removing URI Filters&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;As I mentioned in the previous section, the URI filters are stored in the &lt;em&gt;$TABLE_FILTERS&lt;/em&gt; table.&amp;#160; The UI listing for these filters simply iterates through all the keys in the table (which are the filters) and inserts them in a list.&amp;#160; Before the actual filter string, I’ve inserted a "[x]” link that will allow for removing the filter in a similar way that I did for removing individual URIs from the link tracking database.&amp;#160;&lt;/p&gt;
&lt;p&gt;If the delete link is clicked, the filter is extracted from the URI and the “&lt;strong&gt;table delete&lt;/strong&gt;” command is called with that filter as the key.&amp;#160; A HTTP redirect is then made to refresh the page and show the updated list of URI filters.&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;append&lt;/span&gt; content &lt;span style="color: #006080"&gt;"&amp;lt;tr&amp;gt;&amp;lt;td align='right' valign='top'&amp;gt;&amp;lt;b&amp;gt;URI&amp;amp;nbsp;Filters&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; key [&lt;span style="color: #0000ff"&gt;table&lt;/span&gt; keys -subtable $TABLE_FILTERS] {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;append&lt;/span&gt; content &lt;span style="color: #006080"&gt;"\[&amp;lt;a href='/linkremovefilter/$key'&amp;gt;x&amp;lt;/a&amp;gt;\] $key&amp;lt;br/&amp;gt;"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;append&lt;/span&gt; content &lt;span style="color: #006080"&gt;"&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; .&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; .&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt; &lt;span style="color: #006080"&gt;"/linkremovefilter/*"&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; val [&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; range ]&lt;span style="color: #0000ff"&gt;HTTP::uri&lt;/span&gt;[ ]&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; length &lt;span style="color: #006080"&gt;"/linkremovefilter/"&lt;/span&gt;[ end]&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; { &lt;span style="color: #006080"&gt;""&lt;/span&gt; != $val } {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;table&lt;/span&gt; delete -subtable $TABLE_FILTERS $val;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;   }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;HTTP::redirect&lt;/span&gt; &lt;span style="color: #006080"&gt;"http://[HTTP::host]/linkadmin/Filter+Deleted"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;&lt;font style="font-weight: bold"&gt;Processing The URI Filters&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;The default handler for all URIs that are not handled by the iRule previously inserted all URIs with the “&lt;strong&gt;table&lt;/strong&gt;” command.&amp;#160; I’ve added additional logic to look for the existence of any filters and process them.&amp;#160; I’m using the &lt;em&gt;$match&lt;/em&gt; variable to determine if the URI is to be stored.&amp;#160; If there are no filters in the filter table, then I’m assuming that all URIs will get added to the tracking database.&amp;#160; But, if there are some filters in the filter table, I iterate through each of them with the “&lt;strong&gt;foreach&lt;/strong&gt;” command and use the “string match” command to see if the incoming URI matches each individual filter.&amp;#160; The “&lt;strong&gt;string match&lt;/strong&gt;” command is a great tool for performing wildcard comparisons.&amp;#160; It is much lighter weight than regular expressions and usually does just what you need.&amp;#160; If a match occurs, I break out of the iteration and proceed to entering the value into the tracking database.&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;default&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; match 1;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; c [&lt;span style="color: #0000ff"&gt;table&lt;/span&gt; keys -subtable $TABLE_FILTERS -count]&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; { $c != 0 } {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; match 0;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; key [&lt;span style="color: #0000ff"&gt;lsort&lt;/span&gt; ]&lt;span style="color: #0000ff"&gt;table&lt;/span&gt; keys -subtable $TABLE_FILTERS[] {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;       &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; m [&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; match $key ]&lt;span style="color: #0000ff"&gt;HTTP::uri&lt;/span&gt;[];&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;       &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; { 1 == $m } {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; match 1;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;       }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;   }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; { $match ==  1} {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; { [&lt;span style="color: #0000ff"&gt;table&lt;/span&gt; &lt;span style="color: #0000ff"&gt;incr&lt;/span&gt; -subtable $TABLE_LINK -mustexist ]&lt;span style="color: #0000ff"&gt;HTTP::uri&lt;/span&gt;[] eq &lt;span style="color: #006080"&gt;""&lt;/span&gt;} {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;       &lt;span style="color: #0000ff"&gt;table&lt;/span&gt; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; -subtable $TABLE_LINK [&lt;span style="color: #0000ff"&gt;HTTP::uri&lt;/span&gt;] 1 indefinite indefinite;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;   }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;&lt;font style="font-weight: bold"&gt;Video Walkthrough&lt;/font&gt;&lt;/h3&gt;
&lt;center&gt;
&lt;div class="techTipPlayer"&gt;&lt;a alt="youtube" href="http://www.youtube.com/watch?v=rhY93n37EfM" id="youtube"&gt;Link Tracking With iRules - Part 3 - URI Filtering&lt;/a&gt;&lt;/div&gt;
&lt;/center&gt;
&lt;h3&gt;&lt;font style="font-weight: bold"&gt;Conclusion&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;So, with the addition of this article, you you not only have the ability to tracking and report on link metrics, but you can only store data on the ones that you are concerned about.&amp;#160; The logic for the filter table could easily be modified to use it as a negative filter (ie. allow URI’s that &lt;strong&gt;don’t&lt;/strong&gt; match the filters) but I’ll leave that for the reader to develop.&lt;/p&gt;
&lt;h3&gt;&lt;font style="font-weight: bold"&gt;Still More To Come!&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;I’m not done yet.&amp;#160; In the next addition to this iRule, I will add more advanced functionality to allow tracking external referral links.&lt;/p&gt;
&lt;h3&gt;&lt;font style="font-weight: bold"&gt;Get The Source&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;The source code for this application can be downloaded the &lt;a href="/wiki/default.aspx/iRules/LinkTracking3.html"&gt;LinkTracking3&lt;/a&gt; topic in the &lt;a href="/wiki/default.aspx/iRules/iRules.html"&gt;iRules&lt;/a&gt; &lt;a href="/wiki/default.aspx/iRules/CodeShare.html"&gt;CodeShare&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;&lt;font style="font-weight: bold"&gt;Related Articles on DevCentral&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;
&lt;table border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;ul class="ArrowList"&gt;
                &lt;li&gt;&lt;a href="http://links.f5.com/cX4rxV"&gt;F5 DevCentral &amp;gt; Hot Topics &amp;gt; iRules&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://links.f5.com/aaAP12"&gt;DevCentral Wiki: iRules Reference&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://links.f5.com/hhnWxZ"&gt;iRules Event Order &amp;gt; DevCentral &amp;gt; F5 DevCentral &amp;gt; Tech Tips&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://links.f5.com/igdYDK"&gt;Help Kill IE6 with iRules &amp;gt; DevCentral &amp;gt; F5 DevCentral &amp;gt; Tech Tips&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://links.f5.com/fmOiRI"&gt;Development Performance Metrics Will Eventually Favor Cost per ...&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://links.f5.com/ent4Fz"&gt;Link Tracking With iRules - Part 2 - Filtering Results ...&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
            &lt;/td&gt;
            &lt;td&gt;
            &lt;ul class="ArrowList"&gt;
                &lt;li&gt;&lt;a href="http://links.f5.com/htZNKb"&gt;Link Tracking With iRules - Part 1 &amp;gt; DevCentral &amp;gt; F5 DevCentral ...&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://links.f5.com/dMOSHf"&gt;iRules: Rewriting URIs for Fun and Profit&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://links.f5.com/ga7jYw"&gt;Heatmaps, iRules Style: Part 1 &amp;gt; DevCentral &amp;gt; F5 DevCentral &amp;gt; Tech ...&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://links.f5.com/9qeWL0"&gt;v10.1 - The table Command - The Basics &amp;gt; DevCentral &amp;gt; F5 ...&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://links.f5.com/eexP1V"&gt;Custom Reporting with iRules &amp;gt; DevCentral &amp;gt; F5 DevCentral &amp;gt; Tech Tips&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://links.f5.com/dJPlhy"&gt;iRules 101 - #15 - TCL List Handling Commands &amp;gt; DevCentral &amp;gt; F5 ...&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;div&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/link"&gt;link&lt;/a&gt;, &lt;a href="http://technorati.com/tags/tracking"&gt;tracking&lt;/a&gt;, &lt;a href="http://technorati.com/tags/table"&gt;table&lt;/a&gt;, &lt;a href="http://technorati.com/tags/metrics"&gt;metrics&lt;/a&gt;, &lt;a href="http://technorati.com/tags/reporting"&gt;reporting&lt;/a&gt;, &lt;a href="http://technorati.com/tags/irules"&gt;irules&lt;/a&gt;&lt;/div&gt;
&lt;div class="d_itc_f" style="clear:both;height:11px;"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/x-c09jK3oKI" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Wed, 06 Apr 2011 08:00:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1086452</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086452/Link-Tracking-With-iRules--Part-3--URI-Filtering.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086444/Link-Tracking-With-iRules--Part-1.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=1086444</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1086444&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>Link Tracking With iRules - Part 1</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/rw9LJNu4J1o/Link-Tracking-With-iRules--Part-1.aspx</link> 
    <description>&lt;script type="text/javascript" src="/DesktopModules/itcMetaPost/js/ca0c21fbdc85f6a1597417732d450607.ashx?hs=1"&gt;&lt;/script&gt;&lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/Joe/2011/Mar/Windows-Live-Writer-Link-Tracking-With-iRules---Part-1_8513-tt_linktracking-1_1.jpg"  class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'c94cb4b5'})" &gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 10px 10px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="tt_linktracking-1" border="0" alt="tt_linktracking-1" title="tt_linktracking-1" align="right" src="/Portals/0/images/metapost/News-Articles/Joe/2011/Mar/Windows-Live-Writer-Link-Tracking-With-iRules---Part-1_8513-tt_linktracking-1_thumb_1.jpg" width="244" height="169" /&gt;&lt;/a&gt;One common request that application developers ask of their network admins is to report on the amount of times links in their applications are requested.&amp;#160; Various analytics packages including page trackers can be added to the application pages to store those values but in this article, I’ll show you how to create a very simple link tracker with a transparent iRule applied to your virtual server of choice.&lt;/p&gt;  &lt;h3&gt;&lt;font style="font-weight: bold"&gt;Storing The Data&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;The first step is to take the incoming URI’s and store a count of the number of times they have been requested.&amp;#160; In this application, I will be using the &lt;a href="/Wiki/default.aspx/iRules.table"&gt;table&lt;/a&gt; command to create and store the data in a subtable (for more information on the table command, check out &lt;a href="/Default.aspx?tabid=63&amp;amp;articleType=ArticleView&amp;amp;articleId=2375"&gt;this excellent series of articles&lt;/a&gt; on it’s various uses and features).&lt;/p&gt;  &lt;p&gt;I’ve created a dynamic name for the table that consists of the prefix “LINK_TRACKING_” and is followed by the name of the virtual server that the iRules is applied to.&amp;#160; This is beneficial in that it allows you to have a separate data store for different applications running on different virtual servers.&amp;#160; The value of the table name is stored in the &lt;strong&gt;TABLE_LINKDATA &lt;/strong&gt;variable.&lt;/p&gt;  &lt;p&gt;Next, an attempt is made to increment the link count of the current URI (in the &lt;a href="/Wiki/default.aspx/iRules.HTTP__uri"&gt;HTTP::uri&lt;/a&gt; value) with the “&lt;strong&gt;table incr&lt;/strong&gt;” command.&amp;#160; If the entry doesn’t exist yet (the first time in the system), the if condition will fail and a new entry will be inserted with the “&lt;strong&gt;table set&lt;/strong&gt;” command with a link count of 1.&amp;#160; That’s it!&amp;#160; Now all your links are stored with their reference counts.&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; set TABLE_LINKDATA &lt;span style="color: #006080"&gt;&amp;quot;LINK_TRACKING_[virtual name]&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; { [table incr -subtable $TABLE_LINKDATA -mustexist ]HTTP::uri[] eq &lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt;} {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;   table set -subtable $TABLE_LINKDATA [HTTP::uri] 1 indefinite indefinite;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;&lt;font style="font-weight: bold"&gt;Reporting The Metrics&lt;/font&gt;&lt;/h3&gt;

&lt;p&gt;Storing the data is only half of the solution, there needs to be some way to view the data once it is in the system table.&amp;#160; This is achieved with the following iRule code where I create a HTML page response containing a HTML table with a row for each entry in the link tracking data table.&amp;#160; The first column contains the URI and the second is it’s view count.&amp;#160; The generated page is then returned to the browser via the &lt;a href="/Wiki/default.aspx/iRules.HTTP__respond"&gt;HTTP::respond&lt;/a&gt; command.&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; set content {&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Link Tracking&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;center&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;   &amp;lt;table border=&lt;span style="color: #006080"&gt;'1'&lt;/span&gt;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th colspan=&lt;span style="color: #006080"&gt;'2'&lt;/span&gt;&amp;gt;&amp;lt;a href=&lt;span style="color: #006080"&gt;'/linkcleardata'&lt;/span&gt;&amp;gt;Clear Data&amp;lt;/a&amp;gt;&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;   &amp;lt;tr&amp;gt;&amp;lt;th width=&lt;span style="color: #006080"&gt;'100%'&lt;/span&gt;&amp;gt;URI&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Views&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; key [table keys -subtable $TABLE_LINKDATA] {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;   append content &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$key&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[table lookup -subtable $TABLE_LINKDATA $key]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; append content &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;/table&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt; HTTP::respond 200 Content $content;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;&lt;font style="font-weight: bold"&gt;Cleaning Up&lt;/font&gt;&lt;/h3&gt;

&lt;p&gt;You may notice the “Clear Data” hyperlink I created in the reporting page.&amp;#160; When storing the data in the system table, I specified a time of “indefinite” for the lifetime of the data.&amp;#160; This means that it lives in the system table for the lifetime of the TMM process.&amp;#160; It would only be prudent to provide a way to clean up this table from time to time and that is where the “Clear Data” link comes in.&amp;#160; It will link back to the iRule and issue the “&lt;strong&gt;table delete&lt;/strong&gt;” command to clear out the contents of the link data table.&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; table delete -subtable $TABLE_LINKDATA -all;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;&lt;font style="font-weight: bold"&gt;Putting It All Together&lt;/font&gt;&lt;/h3&gt;

&lt;p&gt;Below is the full iRule to implement basic link tracking.&amp;#160; All normal requests will fall through the “default” case in the switch statement and add the view counts to the link table.&amp;#160; I’ve created two special URI’s to handle the reporting and data management&lt;/p&gt;

&lt;ul class="ArrowList"&gt;
  &lt;li&gt;“/linkadmin” - This will generate the HTML response page and return it to the browser with all the links and their view counts. &lt;/li&gt;

  &lt;li&gt;“/linkcleardata” - This will erase the contents of the link data table. &lt;/li&gt;
&lt;/ul&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; when HTTP_REQUEST {&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;   set TABLE_LINKDATA &lt;span style="color: #006080"&gt;&amp;quot;LINK_TRACKING_[virtual name]&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;switch&lt;/span&gt; [&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; tolower ]HTTP::uri[] {&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color: #006080"&gt;&amp;quot;/linkadmin&amp;quot;&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;       set content {&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Link Tracking&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;center&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;         &amp;lt;table border=&lt;span style="color: #006080"&gt;'1'&lt;/span&gt;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th colspan=&lt;span style="color: #006080"&gt;'2'&lt;/span&gt;&amp;gt;&amp;lt;a href=&lt;span style="color: #006080"&gt;'/linkcleardata'&lt;/span&gt;&amp;gt;Clear Data&amp;lt;/a&amp;gt;&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;         &amp;lt;tr&amp;gt;&amp;lt;th width=&lt;span style="color: #006080"&gt;'100%'&lt;/span&gt;&amp;gt;URI&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Views&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;       &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; key [table keys -subtable $TABLE_LINKDATA] {&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;         append content &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$key&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[table lookup -subtable $TABLE_LINKDATA $key]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;       }&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;       append content &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;/table&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;       HTTP::respond 200 Content $content;&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;     &lt;span style="color: #006080"&gt;&amp;quot;/linkcleardata&amp;quot;&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;       table delete -subtable $TABLE_LINKDATA -all;&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;       HTTP::redirect &lt;span style="color: #006080"&gt;&amp;quot;http://[HTTP::host]/linkadmin&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;default&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt;       &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; { [table incr -subtable $TABLE_LINKDATA -mustexist ]HTTP::uri[] eq &lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt;} {&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt;         table set -subtable $TABLE_LINKDATA [HTTP::uri] 1 indefinite indefinite;&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum21"&gt;  21:&lt;/span&gt;       }&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum22"&gt;  22:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum23"&gt;  23:&lt;/span&gt;   }&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum24"&gt;  24:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

&lt;h3&gt;&lt;font style="font-weight: bold"&gt;Video Walkthrough&lt;/font&gt;&lt;/h3&gt;
&lt;center&gt;
  &lt;div class="techTipPlayer"&gt;&lt;a id="youtube" href="http://www.youtube.com/watch?v=he5WNlh-trg" alt="youtube"&gt;Link Tracking With iRules - Part 1&lt;/a&gt;&lt;/div&gt;
&lt;/center&gt;

&lt;h3&gt;&lt;strong&gt;More To Come!&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;There are several ways to enhance this iRule that I will be illustrating in future articles over the next few weeks.&amp;#160; I’ll look into building URI filters to allow you to only track certain URIs as well as adding filtering features in the generated link count report.&amp;#160; Be on the lookout!&lt;/p&gt;

&lt;h3&gt;&lt;font style="font-weight: bold"&gt;Get The Source&lt;/font&gt;&lt;/h3&gt;

&lt;p&gt;The source code for this application can be downloaded the &lt;a href="/wiki/default.aspx/iRules/LinkTracking.html"&gt;LinkTracking&lt;/a&gt; topic in the &lt;a href="/wiki/default.aspx/iRules/iRules.html"&gt;iRules&lt;/a&gt; &lt;a href="/wiki/default.aspx/iRules/CodeShare.html"&gt;CodeShare&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;&lt;font style="font-weight: bold"&gt;Related Articles on DevCentral&lt;/font&gt;&lt;/h3&gt;
&lt;center&gt;
  &lt;table border="0" width="100%"&gt;&lt;tbody&gt;
      &lt;tr&gt;
        &lt;td align="left"&gt;
          &lt;ul class="ArrowList"&gt;
            &lt;li&gt;&lt;a href="http://links.f5.com/cX4rxV"&gt;F5 DevCentral &amp;gt; Hot Topics &amp;gt; iRules&lt;/a&gt;&lt;/li&gt;

            &lt;li&gt;&lt;a href="http://links.f5.com/hxMMcJ"&gt;Friendly URL Redirection Scaling via iRules &amp;gt; DevCentral &amp;gt; F5 ...&lt;/a&gt;&lt;/li&gt;

            &lt;li&gt;&lt;a href="http://links.f5.com/fv396X"&gt;F5 DevCentral &amp;gt; Community &amp;gt; Group Details - Management, Reporting ...&lt;/a&gt;&lt;/li&gt;

            &lt;li&gt;&lt;a href="http://links.f5.com/aaAP12"&gt;DevCentral Wiki: iRules Reference&lt;/a&gt;&lt;/li&gt;

            &lt;li&gt;&lt;a href="http://links.f5.com/iiGDSp"&gt;An iRules Challenge, Resolved &amp;gt; DevCentral &amp;gt; F5 DevCentral &amp;gt; Tech Tips&lt;/a&gt;&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/td&gt;

        &lt;td align="left"&gt;
          &lt;ul class="ArrowList"&gt;
            &lt;li&gt;&lt;a href="http://links.f5.com/dWDkm5"&gt;redirect and sorry server, new to irules - DevCentral - F5 ...&lt;/a&gt; &lt;/li&gt;

            &lt;li&gt;&lt;a href="http://links.f5.com/dKZw1Z"&gt;2x5-Minute iRules - Timing &amp;gt; DevCentral &amp;gt; F5 DevCentral &amp;gt; Tech Tips&lt;/a&gt; &lt;/li&gt;

            &lt;li&gt;&lt;a href="http://links.f5.com/eUAsTw"&gt;Documenting iRules with Comment Headers &amp;gt; DevCentral &amp;gt; F5 ...&lt;/a&gt; &lt;/li&gt;

            &lt;li&gt;&lt;a href="http://links.f5.com/9qeWL0"&gt;v10.1 - The table Command - The Basics &amp;gt; DevCentral &amp;gt; F5 ...&lt;/a&gt; &lt;/li&gt;

            &lt;li&gt;&lt;a href="http://links.f5.com/hMWk8w"&gt;Table Replace command with CMP - Connections reset - DevCentral ...&lt;/a&gt;&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;&lt;/table&gt;
&lt;/center&gt;



&lt;div&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/iRules"&gt;iRules&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Link"&gt;Link&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Tracking"&gt;Tracking&lt;/a&gt;, &lt;a href="http://technorati.com/tags/table"&gt;table&lt;/a&gt;, &lt;a href="http://technorati.com/tags/reporting"&gt;reporting&lt;/a&gt;&lt;/div&gt;&lt;div class="d_itc_f" style="clear:both;height:11px;"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/rw9LJNu4J1o" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Wed, 16 Mar 2011 17:29:58 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1086444</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086444/Link-Tracking-With-iRules--Part-1.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086438/2x5-Minute-iRules--Timing.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=1086438</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1086438&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>2x5-Minute iRules - Timing</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/91JZcDvw6TE/2x5-Minute-iRules--Timing.aspx</link> 
    <description>&lt;p&gt;Timing is a command in iRules that triggers the system to track the number of cycles each event in an iRule consumes.&amp;#160; Deb has covered timing previously in &lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/123/iRules-Optimization-101--05--Evaluating-iRule-Performance.aspx" target="_blank"&gt;iRules Optimization 101 – #05 – Evaluating iRule Performance&lt;/a&gt;, so I took that and a presentation someone internally put together from that information and recorded a walkthrough on what makes timing tick.&amp;#160; (ba-dah, ching!)&lt;/p&gt;
&lt;div class="techTipPlayer"&gt;&lt;a id="5a6afbb8-2001-493f-8ee7-5237db94bdb1" href="http://www.youtube.com/watch?v=aGcq2d3zoUI" alt="youtube"&gt;iRule Timing Part 1&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;I also took the opportunity to dust off my pycontrol skills and whipped up a script that will do some load testing against a virtual with your iRule applied, then download and crunch the stats specific to your platform cores/speeds so the numbers should be accurate.&amp;#160;&lt;/p&gt;
&lt;div class="techTipPlayer"&gt;&lt;a id="5a6afbb8-2001-493f-8ee7-5237db94bbd1" href="http://www.youtube.com/watch?v=U0raBwhgPX4" alt="youtube"&gt;iRule Timing Part 2&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;I uploaded the script to the &lt;a href="/wiki/default.aspx/iControl.CodeShare" target="_blank"&gt;iControl codeshare&lt;/a&gt;, titled &lt;a href="/wiki/default.aspx/iControl/pycontrolIruleTiming.html" target="_blank"&gt;pycontroliRuleTiming.&lt;/a&gt;&amp;#160; A sample of the output from the script is below:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="mailto:jrahm@jrahm-dev:/var/tmp$"&gt;jrahm@jrahm-dev:/var/tmp$&lt;/a&gt; ./iRuleStats.py 10.10.20.5 admin timing_test &lt;a href="http://10.10.20.50"&gt;http://10.10.20.50&lt;/a&gt;      &lt;br /&gt;
Please enter your password:      &lt;br /&gt;
Password:&lt;/p&gt;
&lt;p&gt;Resetting Statistics for the timing_test iRule&lt;/p&gt;
&lt;p&gt;Running load test to host &lt;a href="http://10.10.20.50"&gt;http://10.10.20.50&lt;/a&gt;      &lt;br /&gt;
### Raw Data ###      &lt;br /&gt;
Event:&amp;#160; HTTP_REQUEST      &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; STATISTIC_RULE_AVERAGE_CYCLES = 41767      &lt;br /&gt;
Event:&amp;#160; HTTP_RESPONSE      &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; STATISTIC_RULE_AVERAGE_CYCLES = 92363&lt;/p&gt;
&lt;p&gt;### iRule timing_test Performance Results     &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; BIG-IP LTM 3600 has 3413568000 availabe CPU Cycles (2 cores, 2133.480 MHz)      &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Average Cycles/sec:&amp;#160;&amp;#160;&amp;#160;&amp;#160; 134130      &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CPU Utilization/req:&amp;#160;&amp;#160;&amp;#160; 0.00392931970302 percent      &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Max Requests/sec:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 25449&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Happy coding!&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Related Articles&lt;/i&gt;&lt;/p&gt;
&lt;ul class="ArrowList"&gt;
    &lt;li&gt;&lt;a href="/Forums/tabid/53/aff/5/aft/3650/afv/topic/Default.aspx"&gt;Timing iRules - DevCentral - F5 DevCentral &amp;gt; Community &amp;gt; Group ...&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/Forums/tabid/53/afv/topic/aff/5/aft/23451/Default.aspx"&gt;irule timing: how to convert Cycles to Seconds - DevCentral - F5 ...&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/123/iRules-Optimization-101--05--Evaluating-iRule-Performance.aspx"&gt;iRules Optimization 101 - #05 - Evaluating iRule Performance ...&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/Forums/tabid/53/aff/5/aft/8008/afv/topic/Default.aspx"&gt;Time-based iRules - DevCentral - F5 DevCentral &amp;gt; Community &amp;gt; Group ...&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/weblogs/jason/archive/2009/05/05/when-optimization-techniques-fail----why-testing-is-so-important.aspx"&gt;When Optimization Techniques Fail -- Why Testing is so Important&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/Community/GroupDetails/tabid/1082223/aff/40/aft/33360/afv/topic/asg/45/Default.aspx"&gt;Perfomance gain of using HTTP Classes over iRules - DevCentral ...&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/Forums/tabid/53/afv/topic/aff/5/aft/20351/Default.aspx"&gt;iRule causing ever-increasing TMM CPU utilization - DevCentral ...&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/132/iRules-101--06--When.aspx"&gt;iRules 101 - #06 - When &amp;gt; DevCentral &amp;gt; F5 DevCentral &amp;gt; Tech Tips&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="d_itc_f" style="clear: both; height: 11px;"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/91JZcDvw6TE" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Thu, 03 Mar 2011 20:53:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1086438</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086438/2x5-Minute-iRules--Timing.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086436/BIG-IP-CPU-Visualization-with-the-Google-Visualization-API.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=1086436</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1086436&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>BIG-IP CPU Visualization with the Google Visualization API</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/4yjzSNpAT0Y/BIG-IP-CPU-Visualization-with-the-Google-Visualization-API.aspx</link> 
    <description>&lt;script type="text/javascript" src="/DesktopModules/itcMetaPost/js/ca0c21fbdc85f6a1597417732d450607.ashx?hs=1"&gt;&lt;/script&gt;
&lt;p&gt;In previous articles, we have explored using the &lt;a href="http://code.google.com/apis/chart/"&gt;Google Chart APIs&lt;/a&gt; to integrate static charts and graphs with iControl and iRules to build monitoring applications.&lt;/p&gt;
&lt;ul class="ArrowList"&gt;
    &lt;li&gt;&lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/284/Creating-An-iControl-PowerShell-Monitoring-Dashboard-With-Google-Charts.aspx"&gt;Creating An iControl PowerShell Monitoring Dashboard with Google Charts&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086429/Scatter-Plotting-Response-Times-With-iRules-And-Google-Charts.aspx"&gt;Scatter Plotting Response Times With iRules and Google Charts&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086420/Fun-with-Hash-Performance-and-Google-Charts.aspx"&gt;Fun with Hash Performance and Google Charts&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086417/Monitor-Your-iRule-Performance-with-iControl-and-Google-O-Meter-Charts.aspx"&gt;Monitor Your iRules Performance with iControl and Google-O-Meter&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086424/Comparing-iRule-Control-Statements.aspx"&gt;Comparing iRule Control Statements&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086391/Referral-Tracking-With-iRules.aspx"&gt;Referral Tracking with iRules&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;Heatmaps, iRules Style Part &lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084382/Heatmaps-iRules-Style-Part-1.aspx"&gt;1&lt;/a&gt;, &lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086353/Heatmaps-iRules-Style-Part2.aspx"&gt;2&lt;/a&gt;, &lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086368/Heatmaps-iRules-Style-Part-3-ampndash-URL-Filtering.aspx"&gt;3&lt;/a&gt;, &amp;amp; &lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086384/Heatmaps-iRules-Style-Part-4-Meaningful-numbers.aspx"&gt;4&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this article, I’m going to move beyond the static charting APIs and take a look at the more complex &lt;a href="http://code.google.com/apis/visualization/documentation/index.html"&gt;Google Visualization API&lt;/a&gt;.&amp;#160; It is a JavaScript library that allows you to embed interactive charts, graphs, or other graphics onto a webpage.&lt;/p&gt;
&lt;p&gt;For this application, I will take a look at the CPU metrics on a BIG-IP and build a dynamic gauge based dashboard.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;The Application&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'597d331a'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Joe/2011/Feb/Windows-Live-Writer-BIG-IP-CPU-Visualization-with-the-Google_98ED-CPUVisualization_2_2.jpg"&gt;&lt;img height="99" width="136" border="0" align="left" src="/Portals/0/images/metapost/News-Articles/Joe/2011/Feb/Windows-Live-Writer-BIG-IP-CPU-Visualization-with-the-Google_98ED-CPUVisualization_2_thumb_2.jpg" title="CPUVisualization_2" alt="CPUVisualization_2" style="background-image: none; border: 0px none; margin: 0px 10px 10px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are several approaches to building a dashboard and for this example, I've build a Windows Form application in C#.&amp;#160; The core of the app is the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.aspx"&gt;WebBrowser&lt;/a&gt; control which essentially wraps the Internet Explorer COM control up in a nice little package.&amp;#160; I then use the &lt;a href="/Community/GroupDetails/tabid/1082223/asg/2/Default.aspx"&gt;iControl Assembly&lt;/a&gt; to get the metrics from the BIG-IP, and then dynamically execute JavaScript functions from the C# code to manipulate the gauges.&lt;/p&gt;
&lt;p&gt;The main components to the application are described in the following sections.&lt;/p&gt;
&lt;h3&gt;&lt;font style="font-weight: bold;"&gt;Connecting to the BIG-IP&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'597d331a'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Joe/2011/Feb/Windows-Live-Writer-BIG-IP-CPU-Visualization-with-the-Google_98ED-CPUVisualization_1_1.jpg"&gt;&lt;img height="76" width="99" border="0" align="right" src="/Portals/0/images/metapost/News-Articles/Joe/2011/Feb/Windows-Live-Writer-BIG-IP-CPU-Visualization-with-the-Google_98ED-CPUVisualization_1_thumb_1.jpg" title="CPUVisualization_1" alt="CPUVisualization_1" style="background-image: none; border-width: 0px; margin: 0px 0px 10px 10px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px;" /&gt;&lt;/a&gt;I use a &lt;strong&gt;iControl.Dialogs.ConnectionDialog&lt;/strong&gt;, available from the iControl Assembly, to connect to the BIG-IP.&amp;#160; If you use the iRule Editor, this may look familiar…&amp;#160; The &lt;strong&gt;DoConnect()&lt;/strong&gt; method will attempt to connect to the BIG-IP with the ConnectionDialog and, if it succeeds, then build the initial browser content for the WebBrowser control.&amp;#160; It then updates the charts with the latest data and then triggers the timer to start a update cycle.&amp;#160; Each time the timer triggers, another data collection is made and the charts are updated with the &lt;strong&gt;updateCharts()&lt;/strong&gt; method.&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div id="codeSnippet" style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum1" style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; DoConnect()&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum2" style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum3" style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (timer1.Enabled)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum4" style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum5" style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;         timer1.Enabled = &lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum6" style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum7" style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum8" style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum9" style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;         DialogResult dr = _cd.ShowDialog();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum10" style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (dr == DialogResult.OK)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum11" style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum12" style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;             loadBrowserContents(buildHTMLContent());&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum13" style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;             updateCharts();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum14" style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt;             timer1.Enabled = &lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum15" style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum16" style="color: rgb(96, 96, 96);"&gt;  16:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum17" style="color: rgb(96, 96, 96);"&gt;  17:&lt;/span&gt;     updateMenus();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum18" style="color: rgb(96, 96, 96);"&gt;  18:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;&lt;font style="font-weight: bold;"&gt;Creating HTML Page&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;The first time a connection is made to the LTM, the &lt;strong&gt;buildHTMLContent()&lt;/strong&gt; method is called which makes a call to the &lt;strong&gt;&lt;a href="/wiki/default.aspx/iControl/System__SystemInfo__get_cpu_usage_extended_information.html"&gt;get_cpu_usage_extended_information()&lt;/a&gt;&lt;/strong&gt; iControl method to extract the CPU metrics for the given BIG-IP.&amp;#160; In this example, I’m only using the first host.&amp;#160; With future versions of BIG-IP, you will be able to manage multiple “hosts” within a single BIG-IP system.&lt;/p&gt;
&lt;p&gt;An HTML page is created with DIV elements created and named for each CPU.&amp;#160; A row in the output table is created for each CPU with 3 gauges for &lt;em&gt;Usage&lt;/em&gt;, &lt;em&gt;Speed&lt;/em&gt;, and &lt;em&gt;Temperature&lt;/em&gt;.&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div id="codeSnippet" style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum1" style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; String buildHTMLContent()&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum2" style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum3" style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;     String page_data = &lt;span style="color: rgb(0, 96, 128);"&gt;""&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum4" style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum5" style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (_cd.m_interfaces.initialized)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum6" style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum7" style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;         iControl.SystemCPUUsageExtendedInformation cpu_info =&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum8" style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;             _cd.m_interfaces.SystemSystemInfo.get_cpu_usage_extended_information(&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; String[] { &lt;span style="color: rgb(0, 96, 128);"&gt;"0"&lt;/span&gt; });&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum9" style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum10" style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;         iControl.SystemCPUUsageExtended host_info = cpu_info.hosts[0];&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum11" style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;         String host_id = host_info.host_id;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum12" style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;         iControl.CommonStatistic[][] statisticAofA = host_info.statistics;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum13" style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum14" style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt;         String table_rows = &lt;span style="color: rgb(0, 96, 128);"&gt;""&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum15" style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum16" style="color: rgb(96, 96, 96);"&gt;  16:&lt;/span&gt;         &lt;span style="color: rgb(0, 128, 0);"&gt;// Loop over CPUs&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum17" style="color: rgb(96, 96, 96);"&gt;  17:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt; (&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; i = 0; i &amp;lt; statisticAofA.Length; i++)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum18" style="color: rgb(96, 96, 96);"&gt;  18:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum19" style="color: rgb(96, 96, 96);"&gt;  19:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;long&lt;/span&gt; cpu_id = extractStatistic(statisticAofA[i], iControl.CommonStatisticType.STATISTIC_CPU_INFO_CPU_ID);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum20" style="color: rgb(96, 96, 96);"&gt;  20:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum21" style="color: rgb(96, 96, 96);"&gt;  21:&lt;/span&gt;             table_rows += &lt;span style="color: rgb(0, 96, 128);"&gt;"&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;C&amp;lt;br/&amp;gt;P&amp;lt;br/&amp;gt;U&amp;lt;br/&amp;gt;"&lt;/span&gt; + cpu_id + &lt;span style="color: rgb(0, 96, 128);"&gt;"&amp;lt;/td&amp;gt;"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum22" style="color: rgb(96, 96, 96);"&gt;  22:&lt;/span&gt;             table_rows += &lt;span style="color: rgb(0, 96, 128);"&gt;"&amp;lt;td class='gauge'&amp;gt;&amp;lt;div id='gauge_"&lt;/span&gt; + cpu_id + &lt;span style="color: rgb(0, 96, 128);"&gt;"_0'&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum23" style="color: rgb(96, 96, 96);"&gt;  23:&lt;/span&gt;             table_rows += &lt;span style="color: rgb(0, 96, 128);"&gt;"&amp;lt;td class='gauge'&amp;gt;&amp;lt;div id='gauge_"&lt;/span&gt; + cpu_id + &lt;span style="color: rgb(0, 96, 128);"&gt;"_1'&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum24" style="color: rgb(96, 96, 96);"&gt;  24:&lt;/span&gt;             table_rows += &lt;span style="color: rgb(0, 96, 128);"&gt;"&amp;lt;td class='gauge'&amp;gt;&amp;lt;div id='gauge_"&lt;/span&gt; + cpu_id + &lt;span style="color: rgb(0, 96, 128);"&gt;"_2'&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum25" style="color: rgb(96, 96, 96);"&gt;  25:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum26" style="color: rgb(96, 96, 96);"&gt;  26:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum27" style="color: rgb(96, 96, 96);"&gt;  27:&lt;/span&gt;         updateTimestamp(&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum28" style="color: rgb(96, 96, 96);"&gt;  28:&lt;/span&gt;         page_data = &lt;span style="color: rgb(0, 96, 128);"&gt;@"&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;iControl CPU Gauges&amp;lt;/title&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum29" style="color: rgb(96, 96, 96);"&gt;  29:&lt;/span&gt;             &amp;lt;style type='text/css'&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum30" style="color: rgb(96, 96, 96);"&gt;  30:&lt;/span&gt;             body,td,th { font-family: Tahoma; font-size: 10pt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum31" style="color: rgb(96, 96, 96);"&gt;  31:&lt;/span&gt;             .gaugex { width:200px;height:200px; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum32" style="color: rgb(96, 96, 96);"&gt;  32:&lt;/span&gt;             &amp;lt;/style&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum33" style="color: rgb(96, 96, 96);"&gt;  33:&lt;/span&gt;             &amp;lt;script type='text/javascript' src='https://www.google.com/jsapi'&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum34" style="color: rgb(96, 96, 96);"&gt;  34:&lt;/span&gt;             &amp;lt;script type='text/javascript'&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum35" style="color: rgb(96, 96, 96);"&gt;  35:&lt;/span&gt;             google.load('visualization', '1', {packages:['gauge']});&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum36" style="color: rgb(96, 96, 96);"&gt;  36:&lt;/span&gt;             &amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum37" style="color: rgb(96, 96, 96);"&gt;  37:&lt;/span&gt;             &amp;lt;/head&amp;gt;";&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum38" style="color: rgb(96, 96, 96);"&gt;  38:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum39" style="color: rgb(96, 96, 96);"&gt;  39:&lt;/span&gt;         page_data += &lt;span style="color: rgb(0, 96, 128);"&gt;"&amp;lt;body&amp;gt;&amp;lt;center&amp;gt;&amp;lt;table border='0'&amp;gt;"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum40" style="color: rgb(96, 96, 96);"&gt;  40:&lt;/span&gt;         page_data += table_rows;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum41" style="color: rgb(96, 96, 96);"&gt;  41:&lt;/span&gt;         page_data += &lt;span style="color: rgb(0, 96, 128);"&gt;"&amp;lt;/table&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/body&amp;gt;"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum42" style="color: rgb(96, 96, 96);"&gt;  42:&lt;/span&gt;         page_data += &lt;span style="color: rgb(0, 96, 128);"&gt;@"&amp;lt;script type='text/javascript'&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum43" style="color: rgb(96, 96, 96);"&gt;  43:&lt;/span&gt;             var chartWidth = 200;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum44" style="color: rgb(96, 96, 96);"&gt;  44:&lt;/span&gt;             var chartHeight = 200;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum45" style="color: rgb(96, 96, 96);"&gt;  45:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum46" style="color: rgb(96, 96, 96);"&gt;  46:&lt;/span&gt;             function setChartSize(w, h) {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum47" style="color: rgb(96, 96, 96);"&gt;  47:&lt;/span&gt;                 chartWidth=w;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum48" style="color: rgb(96, 96, 96);"&gt;  48:&lt;/span&gt;                 chartHeight=h;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum49" style="color: rgb(96, 96, 96);"&gt;  49:&lt;/span&gt;             }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum50" style="color: rgb(96, 96, 96);"&gt;  50:&lt;/span&gt;             function drawChart(id, chart_num, label, value) {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum51" style="color: rgb(96, 96, 96);"&gt;  51:&lt;/span&gt;                 var data = new google.visualization.DataTable();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum52" style="color: rgb(96, 96, 96);"&gt;  52:&lt;/span&gt;                 data.addColumn('string', 'Label');&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum53" style="color: rgb(96, 96, 96);"&gt;  53:&lt;/span&gt;                 data.addColumn('number', 'Value');&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum54" style="color: rgb(96, 96, 96);"&gt;  54:&lt;/span&gt;                 data.addRows(1);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum55" style="color: rgb(96, 96, 96);"&gt;  55:&lt;/span&gt;                 data.setValue(0, 0, label);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum56" style="color: rgb(96, 96, 96);"&gt;  56:&lt;/span&gt;                 data.setValue(0, 1, parseInt(value));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum57" style="color: rgb(96, 96, 96);"&gt;  57:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum58" style="color: rgb(96, 96, 96);"&gt;  58:&lt;/span&gt;                 var elem = document.getElementById(id);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum59" style="color: rgb(96, 96, 96);"&gt;  59:&lt;/span&gt;                 var chart = new google.visualization.Gauge(elem);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum60" style="color: rgb(96, 96, 96);"&gt;  60:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum61" style="color: rgb(96, 96, 96);"&gt;  61:&lt;/span&gt;                 var usage_options = {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum62" style="color: rgb(96, 96, 96);"&gt;  62:&lt;/span&gt;                     width:chartWidth,height:chartHeight,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum63" style="color: rgb(96, 96, 96);"&gt;  63:&lt;/span&gt;                     min:0,max:100,greenFrom:70,greenTo:75,yellowFrom:75,yellowTo:90,redFrom:90,redTo:100,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum64" style="color: rgb(96, 96, 96);"&gt;  64:&lt;/span&gt;                     minorTicks:5,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum65" style="color: rgb(96, 96, 96);"&gt;  65:&lt;/span&gt;                     majorTicks:['0','10','20','30','40','50','60','70','80','90','100']&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum66" style="color: rgb(96, 96, 96);"&gt;  66:&lt;/span&gt;                     };&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum67" style="color: rgb(96, 96, 96);"&gt;  67:&lt;/span&gt;                 var fanspeed_options = {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum68" style="color: rgb(96, 96, 96);"&gt;  68:&lt;/span&gt;                     width:chartWidth,height:chartHeight,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum69" style="color: rgb(96, 96, 96);"&gt;  69:&lt;/span&gt;                     min:0,max:6000,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum70" style="color: rgb(96, 96, 96);"&gt;  70:&lt;/span&gt;                     greenFrom:4000,greenTo:4500,yellowFrom:4500,yellowTo:5500,redFrom:5500,redTo:6000,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum71" style="color: rgb(96, 96, 96);"&gt;  71:&lt;/span&gt;                     minorTicks:5,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum72" style="color: rgb(96, 96, 96);"&gt;  72:&lt;/span&gt;                     majorTicks:['0','1000','2000','3000','4000','5000','6000']&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum73" style="color: rgb(96, 96, 96);"&gt;  73:&lt;/span&gt;                    };&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum74" style="color: rgb(96, 96, 96);"&gt;  74:&lt;/span&gt;                 var temp_options = {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum75" style="color: rgb(96, 96, 96);"&gt;  75:&lt;/span&gt;                     width:chartWidth,height:chartHeight,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum76" style="color: rgb(96, 96, 96);"&gt;  76:&lt;/span&gt;                     min:0,max:100,greenFrom:70,greenTo:75,yellowFrom:75,yellowTo:90,redFrom:90,redTo:100,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum77" style="color: rgb(96, 96, 96);"&gt;  77:&lt;/span&gt;                     minorTicks:5,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum78" style="color: rgb(96, 96, 96);"&gt;  78:&lt;/span&gt;                     majorTicks:['0','10','20','30','40','50','60','70','80','90','100']&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum79" style="color: rgb(96, 96, 96);"&gt;  79:&lt;/span&gt;                     };&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum80" style="color: rgb(96, 96, 96);"&gt;  80:&lt;/span&gt;                 var options = '';&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum81" style="color: rgb(96, 96, 96);"&gt;  81:&lt;/span&gt;                 if ( chart_num == 0 ) { options = usage_options; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum82" style="color: rgb(96, 96, 96);"&gt;  82:&lt;/span&gt;                 else if ( chart_num == 1 ) { options = fanspeed_options; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum83" style="color: rgb(96, 96, 96);"&gt;  83:&lt;/span&gt;                 else if ( chart_num == 2 ) { options = temp_options; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum84" style="color: rgb(96, 96, 96);"&gt;  84:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum85" style="color: rgb(96, 96, 96);"&gt;  85:&lt;/span&gt;                 chart.draw(data, options);  &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum86" style="color: rgb(96, 96, 96);"&gt;  86:&lt;/span&gt;             }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum87" style="color: rgb(96, 96, 96);"&gt;  87:&lt;/span&gt;             &amp;lt;/script&amp;gt;&amp;lt;/html&amp;gt;";&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum88" style="color: rgb(96, 96, 96);"&gt;  88:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum89" style="color: rgb(96, 96, 96);"&gt;  89:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum90" style="color: rgb(96, 96, 96);"&gt;  90:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; page_data;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum91" style="color: rgb(96, 96, 96);"&gt;  91:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;&lt;font style="font-weight: bold;"&gt;Inserting HTML Page in Browser Control&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;Injecting the HTML contents into the WebBrowser control is as simple as assigning it’s &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.documenttext.aspx"&gt;DocumentText&lt;/a&gt; property with the HTML contents.&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div id="codeSnippet" style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum1" style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; loadBrowserContents(String s)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum2" style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum3" style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; ( &lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt; != s )&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum4" style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum5" style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;         webBrowser1.DocumentText = s;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum6" style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum7" style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;&lt;font style="font-weight: bold;"&gt;Refreshing Charts&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;Once the WebBrowser control contains the contents of the page with the embedded functions to update the gauges, the &lt;strong&gt;updateCharts()&lt;/strong&gt; method in this example will query the cpu metrics and make calls into the embedded JavaScript on the page with the WebBrowser’s &lt;a href="http://msdn.microsoft.com/en-us/library/4b1a88bz.aspx"&gt;Document.InvokeScript()&lt;/a&gt; method.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;updateChart()&lt;/strong&gt; method takes as input the id, cpu id, title, and value for the chart.&amp;#160; These values are then bundled up into an Object array and passed to the drawChart() JavaScript function with the parameters.&amp;#160; The &lt;strong&gt;drawChart()&lt;/strong&gt; JavaScript function then calls the Google Visualization chart object’s draw() method with the supplied options and the chart is then refreshed.&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div id="codeSnippet" style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum1" style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; updateCharts()&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum2" style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum3" style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (_cd.m_interfaces.initialized)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum4" style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum5" style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;         DoResize();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum6" style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum7" style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;         iControl.SystemCPUUsageExtendedInformation cpu_info =&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum8" style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;             _cd.m_interfaces.SystemSystemInfo.get_cpu_usage_extended_information(&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; String[] { &lt;span style="color: rgb(0, 96, 128);"&gt;"0"&lt;/span&gt; });&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum9" style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum10" style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;         iControl.SystemCPUUsageExtended host_info = cpu_info.hosts[0];&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum11" style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;         String host_id = host_info.host_id;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum12" style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;         iControl.CommonStatistic[][] statisticAofA = host_info.statistics;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum13" style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum14" style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt;         iControl.SystemPlatformCPUs PlatformCPUs =&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum15" style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt;             _cd.m_interfaces.SystemSystemInfo.get_cpu_metrics();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum16" style="color: rgb(96, 96, 96);"&gt;  16:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum17" style="color: rgb(96, 96, 96);"&gt;  17:&lt;/span&gt;         &lt;span style="color: rgb(0, 128, 0);"&gt;// Loop over CPUs&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum18" style="color: rgb(96, 96, 96);"&gt;  18:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt; (&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; i = 0; i &amp;lt; statisticAofA.Length; i++)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum19" style="color: rgb(96, 96, 96);"&gt;  19:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum20" style="color: rgb(96, 96, 96);"&gt;  20:&lt;/span&gt;             iControl.SystemCPUMetric[] CPUMetricA = PlatformCPUs.cpus[i];&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum21" style="color: rgb(96, 96, 96);"&gt;  21:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum22" style="color: rgb(96, 96, 96);"&gt;  22:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;long&lt;/span&gt; cpu_index = extractMetric(CPUMetricA, iControl.SystemCPUMetricType.CPU_INDEX);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum23" style="color: rgb(96, 96, 96);"&gt;  23:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;long&lt;/span&gt; cpu_temp = extractMetric(CPUMetricA, iControl.SystemCPUMetricType.CPU_TEMPERATURE);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum24" style="color: rgb(96, 96, 96);"&gt;  24:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;long&lt;/span&gt; cpu_fan_speed = extractMetric(CPUMetricA, iControl.SystemCPUMetricType.CPU_FAN_SPEED);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum25" style="color: rgb(96, 96, 96);"&gt;  25:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum26" style="color: rgb(96, 96, 96);"&gt;  26:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;long&lt;/span&gt; cpu_id = extractStatistic(statisticAofA[i], iControl.CommonStatisticType.STATISTIC_CPU_INFO_CPU_ID);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum27" style="color: rgb(96, 96, 96);"&gt;  27:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;long&lt;/span&gt; cpu_usage_ratio = extractStatistic(statisticAofA[i], iControl.CommonStatisticType.STATISTIC_CPU_INFO_USAGE_RATIO);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum28" style="color: rgb(96, 96, 96);"&gt;  28:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum29" style="color: rgb(96, 96, 96);"&gt;  29:&lt;/span&gt;             updateChart(&lt;span style="color: rgb(0, 96, 128);"&gt;"gauge_"&lt;/span&gt; + cpu_id + &lt;span style="color: rgb(0, 96, 128);"&gt;"_0"&lt;/span&gt;, 0, &lt;span style="color: rgb(0, 96, 128);"&gt;"Usage"&lt;/span&gt;, cpu_usage_ratio);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum30" style="color: rgb(96, 96, 96);"&gt;  30:&lt;/span&gt;             updateChart(&lt;span style="color: rgb(0, 96, 128);"&gt;"gauge_"&lt;/span&gt; + cpu_id + &lt;span style="color: rgb(0, 96, 128);"&gt;"_1"&lt;/span&gt;, 1, &lt;span style="color: rgb(0, 96, 128);"&gt;"Speed"&lt;/span&gt;, cpu_fan_speed);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum31" style="color: rgb(96, 96, 96);"&gt;  31:&lt;/span&gt;             updateChart(&lt;span style="color: rgb(0, 96, 128);"&gt;"gauge_"&lt;/span&gt; + cpu_id + &lt;span style="color: rgb(0, 96, 128);"&gt;"_2"&lt;/span&gt;, 2, &lt;span style="color: rgb(0, 96, 128);"&gt;"Temp"&lt;/span&gt;, cpu_temp);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum32" style="color: rgb(96, 96, 96);"&gt;  32:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum33" style="color: rgb(96, 96, 96);"&gt;  33:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum34" style="color: rgb(96, 96, 96);"&gt;  34:&lt;/span&gt;         updateTimestamp(&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum35" style="color: rgb(96, 96, 96);"&gt;  35:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum36" style="color: rgb(96, 96, 96);"&gt;  36:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum37" style="color: rgb(96, 96, 96);"&gt;  37:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum38" style="color: rgb(96, 96, 96);"&gt;  38:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; updateChart(String id, &lt;span style="color: rgb(0, 0, 255);"&gt;long&lt;/span&gt; cpuid, String title, &lt;span style="color: rgb(0, 0, 255);"&gt;long&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;value&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum39" style="color: rgb(96, 96, 96);"&gt;  39:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum40" style="color: rgb(96, 96, 96);"&gt;  40:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt; != webBrowser1.Document)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum41" style="color: rgb(96, 96, 96);"&gt;  41:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum42" style="color: rgb(96, 96, 96);"&gt;  42:&lt;/span&gt;         String[] args = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; String[] { id, cpuid.ToString(), title, &lt;span style="color: rgb(0, 0, 255);"&gt;value&lt;/span&gt;.ToString() };&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum43" style="color: rgb(96, 96, 96);"&gt;  43:&lt;/span&gt;         webBrowser1.Document.InvokeScript(&lt;span style="color: rgb(0, 96, 128);"&gt;"drawChart"&lt;/span&gt;, args);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum44" style="color: rgb(96, 96, 96);"&gt;  44:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum45" style="color: rgb(96, 96, 96);"&gt;  45:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;&lt;font style="font-weight: bold;"&gt;Resizing Charts&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;Resizing the charts in the page was rather trivial.&amp;#160; I created another embedded JavaScript function &lt;strong&gt;setChartSize()&lt;/strong&gt; which takes as parameters the chart’s width and height.&amp;#160; The next time the &lt;strong&gt;drawChart()&lt;/strong&gt; method is called, it uses these values for the creation of the charts.&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div id="codeSnippet" style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum1" style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; DoResize()&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum2" style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum3" style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (timer1.Enabled)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum4" style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum5" style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;         &lt;span style="color: rgb(0, 128, 0);"&gt;// Calculate the new chart sizes;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum6" style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;long&lt;/span&gt; width = webBrowser1.Width;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum7" style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;long&lt;/span&gt; height = webBrowser1.Height;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum8" style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum9" style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;long&lt;/span&gt; newWidth = ((width) / 3) - 50;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum10" style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;long&lt;/span&gt; newHeight = ((height) / 2) - 20;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum11" style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum12" style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (newHeight &amp;gt; newWidth) { newHeight = newWidth; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum13" style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (newWidth &amp;gt; newHeight) { newWidth = newHeight; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum14" style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum15" style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt;         resizeCharts(newWidth, newHeight);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum16" style="color: rgb(96, 96, 96);"&gt;  16:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum17" style="color: rgb(96, 96, 96);"&gt;  17:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum18" style="color: rgb(96, 96, 96);"&gt;  18:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; resizeCharts(&lt;span style="color: rgb(0, 0, 255);"&gt;long&lt;/span&gt; width, &lt;span style="color: rgb(0, 0, 255);"&gt;long&lt;/span&gt; height)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum19" style="color: rgb(96, 96, 96);"&gt;  19:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum20" style="color: rgb(96, 96, 96);"&gt;  20:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt; != webBrowser1.Document)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum21" style="color: rgb(96, 96, 96);"&gt;  21:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum22" style="color: rgb(96, 96, 96);"&gt;  22:&lt;/span&gt;         String [] args = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; String[] { width.ToString(), height.ToString() };&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum23" style="color: rgb(96, 96, 96);"&gt;  23:&lt;/span&gt;         webBrowser1.Document.InvokeScript(&lt;span style="color: rgb(0, 96, 128);"&gt;"setChartSize"&lt;/span&gt;, args);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum24" style="color: rgb(96, 96, 96);"&gt;  24:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum25" style="color: rgb(96, 96, 96);"&gt;  25:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;&lt;font style="font-weight: bold;"&gt;Video Walkthrough&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;center&gt;
&lt;div class="techTipPlayer"&gt;&lt;a alt="youtube" id="youtube" href="http://www.youtube.com/watch?v=BHz-kSmogrU"&gt;CPU Monitoring witht the Google Visualization APIs&lt;/a&gt;&lt;/div&gt;
&lt;/center&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;h3&gt;&lt;font style="font-weight: bold;"&gt;Get The Source&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;The source code for this application can be downloaded from the following link: &lt;a href="/downloads/techtips/CPUVisualization.zip"&gt;CPUVisualization.zip&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&lt;font style="font-weight: bold;"&gt;Related Articles on DevCentral&lt;/font&gt;&lt;/h3&gt;
&lt;center&gt;
&lt;table width="100%" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td align="left"&gt;
            &lt;ul class="ArrowList"&gt;
                &lt;li&gt;&lt;a href="http://links.f5.com/emtLtO"&gt;How to determine Memory and CPU Utilization?&amp;#160; ...&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://links.f5.com/eJAvIr"&gt;Ruby and iControl: Understanding Complex Type Syntax ...&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://links.f5.com/gMaR5r"&gt;BIG-IP Configuration Visualizer - iControl Style...&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://links.f5.com/cZ3cct"&gt;Microsoft PowerShell with iControl - F5 DevCentral&lt;/a&gt;&amp;#160;&lt;/li&gt;
            &lt;/ul&gt;
            &lt;/td&gt;
            &lt;td align="left"&gt;
            &lt;ul class="ArrowList"&gt;
                &lt;li&gt;&lt;a href="http://links.f5.com/i68zDH"&gt;DevCentral Wiki: BIG_ IP Configuration Visualizer&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://links.f5.com/b4WmXW"&gt;F5 DevCentral &amp;gt; Community &amp;gt; Group Details - iControl Assembly&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://links.f5.com/fuNtIJ"&gt;Exporting LTM Configuration Into XML ...&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://links.f5.com/dmevy0"&gt;Creating An iControl PowerShell Monitoring Dashboard With Google ...&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;div&gt;&amp;#160;&lt;/div&gt;
&lt;div&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/iControl"&gt;iControl&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Visualization"&gt;Visualization&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Reporting"&gt;Reporting&lt;/a&gt;, &lt;a href="http://technorati.com/tags/CPU"&gt;CPU&lt;/a&gt;, &lt;a href="http://technorati.com/tags/C%23"&gt;C#&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Visual+Studio"&gt;Visual Studio&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Joe+Pruitt"&gt;Joe Pruitt&lt;/a&gt;&lt;/div&gt;
&lt;div style="clear: both; height: 11px;" class="d_itc_f"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/4yjzSNpAT0Y" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Wed, 23 Feb 2011 22:21:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1086436</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086436/BIG-IP-CPU-Visualization-with-the-Google-Visualization-API.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086380/Getting-Started-With-iControl-And-Java-Setting-Up-Eclipse.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=1086380</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1086380&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>Getting Started With iControl And Java – Setting Up Eclipse</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/Bnb-e8xJBK0/Getting-Started-With-iControl-And-Java-Setting-Up-Eclipse.aspx</link> 
    <description>&lt;script type="text/javascript" src="/DesktopModules/itcMetaPost/js/ca0c21fbdc85f6a1597417732d450607.ashx?hs=1"&gt;&lt;/script&gt; &lt;p&gt;This is the first article in a series focused on developing iControl applications with the Java language.&amp;#160; I’ve picked Eclipse
 development platform for this set of platforms.&amp;#160; The goal here is to give you the directions and tools you need to make the most out of iControl when you are involved with Java development.&amp;#160;&lt;/p&gt; &lt;p&gt;For this article, I’m going to assume that you are
 starting off of a clean system.&amp;#160; In most cases, you will already have one or more of the prerequisites installed so you can feel free to ignore that section.&amp;#160; This article was developed with all the components on a Windows 7 System, but everything
 should work similarly on other platforms.&lt;/p&gt; &lt;h3&gt;&lt;strong&gt;The Pieces To The Puzzle&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;&lt;u&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/Joe/2010/Sep/WLW-GettingStartedWithiControlAndJavaSetting_8C5F-Java_2.jpg"&gt;&lt;strong&gt;&lt;img style="border-right-width:
 0px; margin: 0px 0px 10px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Java" border="0" alt="Java" align="right" width="60" height="60" src="/Portals/0/images/metapost/News-Articles/Joe/2010/Sep/WLW-GettingStartedWithiControlAndJavaSetting_8C5F-Java_thumb.jpg"
 /&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;&lt;a href="http://www.oracle.com/technetwork/java/index.html"&gt;&lt;strong&gt;Java&lt;/strong&gt;&lt;/a&gt;&lt;/u&gt;&lt;/p&gt; &lt;p&gt;The first item you will need to install is Java itself.&amp;#160; This can be downloaded from the &lt;a href="http://www.oracle.com/technetwork/java/index.html"&gt;Java
 Website At Oracle.com&lt;/a&gt;.&amp;#160; There are a lot of different versions of Java but I always stick to the bare bones “Java SE” JDK distribution.&amp;#160;&lt;/p&gt; &lt;p&gt;I’m not going to walk through the installation of Java as I assume you can figure that one out for
 yourself.&amp;#160; If you are really stuck, do a Google Search for “&lt;a href="http://www.google.com/search?q=How+To+Install+Java"&gt;How To Install Java&lt;/a&gt;” and that should point you in the right direction.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;a class="itcexpando" onclick="return
 mp.expand(this,{slideshowGroup:'23d5bbdf'})" href="/Portals/0/images/metapost/News-Articles/Joe/2010/Sep/WLW-GettingStartedWithiControlAndJavaSetting_8C5F-eclipse_2.png"&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 10px 10px; display: inline; border-top-width:
 0px; border-bottom-width: 0px; border-left-width: 0px" title="eclipse" border="0" alt="eclipse" align="right" width="60" height="60" src="/Portals/0/images/metapost/News-Articles/Joe/2010/Sep/WLW-GettingStartedWithiControlAndJavaSetting_8C5F-eclipse_thumb.png"
 /&gt;&lt;/a&gt; &lt;a href="http://www.eclipse.org/downloads/"&gt;&lt;strong&gt;Eclipse&lt;/strong&gt;&lt;/a&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.eclipse.org"&gt;Eclipse&lt;/a&gt; is an open source development platform build with extensible frameworks, tools and runtimes for many different
 languages – Java being one of them.&amp;#160; The &lt;a href="http://www.eclipse.org/projects/project_summary.php?projectid=eclipse.jdt"&gt;JDT (Java Development Tools) project&lt;/a&gt;&amp;#160; provides the tool plug-ins that implement a Java IDE supporting the development
 of any Java application.&amp;#160;&lt;/p&gt; &lt;p&gt;To install Eclipse for Java, visit the downloads page at &lt;a title="http://www.eclipse.org/downloads/" href="http://www.eclipse.org/downloads/"&gt;http://www.eclipse.org/downloads/&lt;/a&gt; and select the appropriate “Eclipse IDE
 for Java Developers distribution.&amp;#160; Even though I am running 64-bit windows, I had an issue getting the 64-bit build of Eclipse to work.&amp;#160; This was possibly due to the version of Java I had installed.&amp;#160; So, I picked the “Windows 32 Bit” download
 and it worked out find.&amp;#160;&lt;/p&gt; &lt;p&gt;The download is just a .zip file containing the product directory.&amp;#160; Just unzip this to a location of your choosing.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;a class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'23d5bbdf'})"
 href="/Portals/0/images/metapost/News-Articles/Joe/2010/Sep/WLW-GettingStartedWithiControlAndJavaSetting_8C5F-iControlAssembly_2.jpg"&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 10px 10px; display: inline; border-top-width: 0px; border-bottom-width:
 0px; border-left-width: 0px" title="iControlAssembly" border="0" alt="iControlAssembly" align="right" width="60" height="60" src="/Portals/0/images/metapost/News-Articles/Joe/2010/Sep/WLW-GettingStartedWithiControlAndJavaSetting_8C5F-iControlAssembly_thumb.jpg"
 /&gt;&lt;/a&gt; &lt;a href="/Community/GroupDetails/tabid/1082223/asg/2/Default.aspx"&gt;&lt;strong&gt;iControl Library For Java&lt;/strong&gt;&lt;/a&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;At this point you should have a development environment setup for building Java applications.&amp;#160; The last piece
 of the puzzle is the iControl libraries for Java.&amp;#160; iControl is a set of Web Services and we have taken the Web Service Description Language (WSDL) files, built client proxy code for them, and packaged them within a nice wrapper class and packed them into
 a Java library to make it as easy as possible for you to integrate iControl into a new or existing Java application.&lt;/p&gt; &lt;p&gt;To get the libraries, you’ll need to visit the &lt;a href="/Community/GroupDetails/tabid/1082223/asg/2/Default.aspx"&gt;iControl Assembly&lt;/a&gt;
 (we have a .Net version as well) Labs project on DevCentral and click on the “Discussions and Downloads” link.&amp;#160; From there Click into the latest release in the “Downloads” section (as of now it is at iControl v10.2) and download the “Java Binary Distribution”
 release.&amp;#160; The “Java Source Distribution” is available if you want to see how I built the library.&lt;/p&gt; &lt;p&gt;The binary download will include two directories: Lib and 3rdparty.&amp;#160; The client proxy code was built with Apache Axis so we’ve included those
 libraries to include in your projects as well so that you don’t have to go hunting elsewhere for all the other dependent libraries.&amp;#160; Unzip this directory somewhere on your disk (ie \iControl\javalib).&lt;/p&gt; &lt;h3&gt;&lt;strong&gt;Building Your First Project&lt;/strong&gt;&lt;/h3&gt;
 &lt;p&gt;I figured that a video would be easier to follow than me describing the steps it takes to create a project and import the iControl libraries in it so I make this walkthrough where I:&lt;/p&gt; &lt;ul class="ArrowList"&gt; &lt;li&gt;Created a new Java project in Eclipse.&lt;/li&gt;
 &lt;li&gt;Imported the iControl Library for Java and associated 3rd party libraries.&lt;/li&gt; &lt;li&gt;Created a class with a Main method to be used as a console application.&lt;/li&gt; &lt;li&gt;Created an instance of the iControl.Interfaces object.&lt;/li&gt; &lt;li&gt;Initialized the iControl.Interfaces
 object with the credentials for my BIG-IP.&lt;/li&gt; &lt;li&gt;Added logic to query the System information and output that to the console.&lt;/li&gt; &lt;li&gt;Debug and demonstrate the application.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;I did all that in 5 minutes! …with a little help from cut-and-paste
 B-).&lt;/p&gt; &lt;center&gt;&lt;script language="JavaScript"&gt; &lt;!-- HDMediaPlayer("20100909-GettingStartedWithJava-Eclipse"); //--&gt; &lt;/script&gt; &lt;div class="techTipPlayer"&gt;&lt;a href="/media/videos/20100909-GettingStartedWithJava-Eclipse.flv" alt="HDMediaPlayer,20100909-GettingStartedWithJava-Eclipse"&gt;20100909-GettingStartedWithJava-Eclipse&lt;/a&gt;&lt;/div&gt;
 &lt;/center&gt; &lt;h3&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;You should now be able to build a Java application to make use of the automation features of your BIG-IP.&amp;#160; In future articles, I will illustrate other aspects of the iControl API with Java.&lt;/p&gt; &lt;h3&gt;&lt;strong&gt;Download&lt;/strong&gt;&lt;/h3&gt;
 &lt;p&gt;The Java class for this example can be downloaded from the &lt;a href="/wiki/default.aspx/iControl.CodeShare"&gt;iControl CodeShare&lt;/a&gt; under &lt;a href="/wiki/default.aspx/iControl/JavaSystemInfo.html"&gt;JavaSystemInfo&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;i&gt;Related Articles on &lt;a href=""&gt;DevCentral&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;
 &lt;ul class="ArrowList"&gt; &lt;li&gt;&lt;a href="/weblogs/Joe/archive/2007/05/22/2841.aspx"&gt;More caffeine please...&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/77/Simple-Ways-to-Make-iControl-Development-Easier-with-Java-Tools.aspx"&gt;Simple
 Ways to Make iControl Development Easier with Java Tools ...&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="/iControlTechTipsArchive/tabid/94/nfpg577/10/Default.aspx"&gt;iControl Tech Tips Archive&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="/Forums/tabid/53/aff/1/aft/25478/afv/topic/Default.aspx"&gt;Java assembly
 version - DevCentral - F5 DevCentral &amp;gt; Community ...&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/60/iControl-Quickstart-for-Java.aspx"&gt;iControl Quickstart for Java &amp;gt; DevCentral &amp;gt; F5 DevCentral &amp;gt; Tech Tips&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="/Forums/tabid/53/aff/1/aft/1172031/afv/topic/Default.aspx"&gt;Updating domain info using iControl - DevCentral - F5 DevCentral ...&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;div&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/iControl"&gt;iControl&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Java"&gt;Java&lt;/a&gt;,
 &lt;a href="http://technorati.com/tags/Eclipse"&gt;Eclipse&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Joe+Pruitt"&gt;Joe Pruitt&lt;/a&gt;&lt;/div&gt; &lt;div class="d_itc_f" style="clear:both;height:11px;"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/Bnb-e8xJBK0" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Wed, 15 Sep 2010 17:00:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1086380</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086380/Getting-Started-With-iControl-And-Java-Setting-Up-Eclipse.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2386/iRule-Editor--System-Config-Editing.aspx#Comments</comments> 
    <slash:comments>6</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=2386</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=2386&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>iRule Editor - System Config Editing</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/1ywG3NzEvdA/iRule-Editor--System-Config-Editing.aspx</link> 
    <description>&lt;p&gt;In the latest release of the iRule Editor v 0.10.1, I added several new features.&amp;#160; This tutorial will walk through System Level Configuration editing allowing you to work with your bigip.conf and bigip_base.conf files without having to open a terminal session to the BIG-IP.&lt;a href="http://devcentral.f5.com/media/videos/20100114-iRuleEditorConfigEditing.mp4"&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/1ywG3NzEvdA" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Fri, 15 Jan 2010 17:17:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:2386</guid> 
    
<media:content url="http://feedproxy.google.com/~r/DevCentralVideoTutorials/~5/TK29w3tZgwk/20100114-iRuleEditorConfigEditing.mp4" fileSize="7600120" type="video/mp4" /><itunes:explicit>no</itunes:explicit><itunes:subtitle> In the latest release of the iRule Editor v 0.10.1, I added several new features.&amp;#160; This tutorial will walk through System Level Configuration editing allowing you to work with your bigip.conf and bigip_base.conf files without having to open a termin</itunes:subtitle><itunes:author>F5 DevCentral Team</itunes:author><itunes:summary> In the latest release of the iRule Editor v 0.10.1, I added several new features.&amp;#160; This tutorial will walk through System Level Configuration editing allowing you to work with your bigip.conf and bigip_base.conf files without having to open a terminal session to the BIG-IP.&amp;#160;</itunes:summary><itunes:keywords>F5,BIG,IP,iControl,iRules,Video,Tutorials</itunes:keywords><feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2386/iRule-Editor--System-Config-Editing.aspx</feedburner:origLink><enclosure url="http://feedproxy.google.com/~r/DevCentralVideoTutorials/~5/TK29w3tZgwk/20100114-iRuleEditorConfigEditing.mp4" length="7600120" type="video/mp4" /><feedburner:origEnclosureLink>http://devcentral.f5.com/media/videos/20100114-iRuleEditorConfigEditing.mp4</feedburner:origEnclosureLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2385/iRule-Editor--Offline-Editing.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=2385</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=2385&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>iRule Editor - Offline Editing</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/GpYhiA3z3Cc/iRule-Editor--Offline-Editing.aspx</link> 
    <description>&lt;p&gt;In the latest release of the iRule Editor v 0.10.1, I&amp;#160;added several new features.&amp;#160; This tutorial will walk through the Offline Editing features I've added that allow you to write your iRules when not connected to the BIG-IP. &amp;#160;It will also show you how to take your online iRules and move them offline in preparation for a long plane flight or time without network connectivity.&lt;a href="http://devcentral.f5.com/media/videos/20100114-iRuleEditorOfflineEditing.mp4"&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/GpYhiA3z3Cc" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Fri, 15 Jan 2010 17:13:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:2385</guid> 
    
<media:content url="http://feedproxy.google.com/~r/DevCentralVideoTutorials/~5/zrENVd0vIvQ/20100114-iRuleEditorOfflineEditing.mp4" fileSize="7876220" type="video/mp4" /><itunes:explicit>no</itunes:explicit><itunes:subtitle> In the latest release of the iRule Editor v 0.10.1, I&amp;#160;added several new features.&amp;#160; This tutorial will walk through the Offline Editing features I've added that allow you to write your iRules when not connected to the BIG-IP. &amp;#160;It will also </itunes:subtitle><itunes:author>F5 DevCentral Team</itunes:author><itunes:summary> In the latest release of the iRule Editor v 0.10.1, I&amp;#160;added several new features.&amp;#160; This tutorial will walk through the Offline Editing features I've added that allow you to write your iRules when not connected to the BIG-IP. &amp;#160;It will also show you how to take your online iRules and move them offline in preparation for a long plane flight or time without network connectivity.&amp;#160;</itunes:summary><itunes:keywords>F5,BIG,IP,iControl,iRules,Video,Tutorials</itunes:keywords><feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2385/iRule-Editor--Offline-Editing.aspx</feedburner:origLink><enclosure url="http://feedproxy.google.com/~r/DevCentralVideoTutorials/~5/zrENVd0vIvQ/20100114-iRuleEditorOfflineEditing.mp4" length="7876220" type="video/mp4" /><feedburner:origEnclosureLink>http://devcentral.f5.com/media/videos/20100114-iRuleEditorOfflineEditing.mp4</feedburner:origEnclosureLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2384/iRule-Editor--Auto-Connection.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=2384</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=2384&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>iRule Editor - Auto Connection</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/5x8h5Xa00BU/iRule-Editor--Auto-Connection.aspx</link> 
    <description>&lt;p&gt;In the latest release of the iRule Editor v 0.10.1, I&amp;#160;added several new features.&amp;#160; This tutorial will walk through the Auto Connection features I've added that allow you to supply command line arguments to have the iRule editor automatically connect to your specified BIG-IP.&lt;a href="http://devcentral.f5.com/media/videos/20100113-iRuleEditorAutoConnect.mp4"&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/5x8h5Xa00BU" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Thu, 14 Jan 2010 16:46:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:2384</guid> 
    
<media:content url="http://feedproxy.google.com/~r/DevCentralVideoTutorials/~5/8Jlphy8jn0o/20100113-iRuleEditorAutoConnect.mp4" fileSize="4715149" type="video/mp4" /><itunes:explicit>no</itunes:explicit><itunes:subtitle> In the latest release of the iRule Editor v 0.10.1, I&amp;#160;added several new features.&amp;#160; This tutorial will walk through the Auto Connection features I've added that allow you to supply command line arguments to have the iRule editor automatically co</itunes:subtitle><itunes:author>F5 DevCentral Team</itunes:author><itunes:summary> In the latest release of the iRule Editor v 0.10.1, I&amp;#160;added several new features.&amp;#160; This tutorial will walk through the Auto Connection features I've added that allow you to supply command line arguments to have the iRule editor automatically connect to your specified BIG-IP.&amp;#160;</itunes:summary><itunes:keywords>F5,BIG,IP,iControl,iRules,Video,Tutorials</itunes:keywords><feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2384/iRule-Editor--Auto-Connection.aspx</feedburner:origLink><enclosure url="http://feedproxy.google.com/~r/DevCentralVideoTutorials/~5/8Jlphy8jn0o/20100113-iRuleEditorAutoConnect.mp4" length="4715149" type="video/mp4" /><feedburner:origEnclosureLink>http://devcentral.f5.com/media/videos/20100113-iRuleEditorAutoConnect.mp4</feedburner:origEnclosureLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2363/Getting-Started-with-pyControl-v2-Understanding-the-TypeFactory.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=2363</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=2363&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>Getting Started with pyControl v2: Understanding the TypeFactory</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/-HFjkukOSw8/Getting-Started-with-pyControl-v2-Understanding-the-TypeFactory.aspx</link> 
    <description>&lt;p&gt;In this video, Matt Cauthorn dives into the importance of the typefactory in pyControl v2.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/-HFjkukOSw8" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Mon, 14 Dec 2009 22:41:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:2363</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2363/Getting-Started-with-pyControl-v2-Understanding-the-TypeFactory.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2362/Getting-Started-with-pyControl-v2-Working-with-Types.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=2362</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=2362&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>Getting Started with pyControl v2: Working with Types</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/wgT0jn4MvV0/Getting-Started-with-pyControl-v2-Working-with-Types.aspx</link> 
    <description>&lt;p&gt;In this video, Matt Cauthorn introduces type usage in pyControl v2.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/wgT0jn4MvV0" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Mon, 14 Dec 2009 22:39:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:2362</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2362/Getting-Started-with-pyControl-v2-Working-with-Types.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2358/Getting-Started-with-pyControl-v2-Installing-on-Windows.aspx#Comments</comments> 
    <slash:comments>2</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=2358</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=2358&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>Getting Started with pyControl v2: Installing on Windows</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/9M_2-I9fhSQ/Getting-Started-with-pyControl-v2-Installing-on-Windows.aspx</link> 
    <description>&lt;p&gt;It's true--pyControl v2 is officially out the door!&amp;#160; Here are the installation instructions for Windows (captured below on XP Pro but work equally as well on 7 Ultimate.)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/9M_2-I9fhSQ" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Mon, 14 Dec 2009 18:15:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:2358</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2358/Getting-Started-with-pyControl-v2-Installing-on-Windows.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2360/Getting-Started-with-pyControl-v2-Constructor-Changes.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=2360</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=2360&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>Getting Started with pyControl v2: Constructor Changes</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/oNsEx9Xi0fI/Getting-Started-with-pyControl-v2-Constructor-Changes.aspx</link> 
    <description>&lt;p&gt;Matt Cauthorn walks through the pyControl v2 constructor changes in this video.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/oNsEx9Xi0fI" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Mon, 14 Dec 2009 18:15:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:2360</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2360/Getting-Started-with-pyControl-v2-Constructor-Changes.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2361/Getting-Started-with-pyControl-v2-Method-Hints-via-Attributes.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=2361</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=2361&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>Getting Started with pyControl v2: Method Hints via Attributes</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/9YAdzv8aVlw/Getting-Started-with-pyControl-v2-Method-Hints-via-Attributes.aspx</link> 
    <description>&lt;p&gt;In this video, Matt Cauthorn walks through the method hints available via attributes in pyControl v2.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/9YAdzv8aVlw" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Mon, 14 Dec 2009 18:15:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:2361</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2361/Getting-Started-with-pyControl-v2-Method-Hints-via-Attributes.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/365/Configuring-BIG-IP-and-Cacti-for-SNMPv3.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=365</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=365&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>Configuring BIG-IP and Cacti for SNMPv3</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/MCwJsQisIIk/Configuring-BIG-IP-and-Cacti-for-SNMPv3.aspx</link> 
    <description>&lt;p&gt;In this video tech tip, I'll walk through the configuration steps necessary to enable SNMP version 3 on the BIG-IP and Cacti.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/MCwJsQisIIk" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Tue, 07 Jul 2009 12:57:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:365</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/365/Configuring-BIG-IP-and-Cacti-for-SNMPv3.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/362/iControl-Apps--19--Pool-Membership-Reverse-Lookup.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=362</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=362&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>iControl Apps - #19 - Pool Membership Reverse Lookup</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/GFHIUj12Q6I/iControl-Apps--19--Pool-Membership-Reverse-Lookup.aspx</link> 
    <description>&lt;p&gt;Pool's are collections of pool members which are IP address and ports for a specific back end application server.&amp;#160; Currently through the iControl API there is no direct way to do a reverse lookup of which pools a specified application server is a member of.&amp;#160; This application will, given a pool member specification, do a reverse lookup and list all the associated pools that member is included in.&lt;a href="http://devcentral.f5.com/media/videos/20090617-TTPoolLookup.mp4"&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/GFHIUj12Q6I" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Wed, 17 Jun 2009 20:08:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:362</guid> 
    
<media:content url="http://feedproxy.google.com/~r/DevCentralVideoTutorials/~5/Tc-JEcB4HyQ/20090617-TTPoolLookup.mp4" fileSize="14430321" type="video/mp4" /><itunes:explicit>no</itunes:explicit><itunes:subtitle> Pool's are collections of pool members which are IP address and ports for a specific back end application server.&amp;#160; Currently through the iControl API there is no direct way to do a reverse lookup of which pools a specified application server is a me</itunes:subtitle><itunes:author>F5 DevCentral Team</itunes:author><itunes:summary> Pool's are collections of pool members which are IP address and ports for a specific back end application server.&amp;#160; Currently through the iControl API there is no direct way to do a reverse lookup of which pools a specified application server is a member of.&amp;#160; This application will, given a pool member specification, do a reverse lookup and list all the associated pools that member is included in.&amp;#160;</itunes:summary><itunes:keywords>F5,BIG,IP,iControl,iRules,Video,Tutorials</itunes:keywords><feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/362/iControl-Apps--19--Pool-Membership-Reverse-Lookup.aspx</feedburner:origLink><enclosure url="http://feedproxy.google.com/~r/DevCentralVideoTutorials/~5/Tc-JEcB4HyQ/20090617-TTPoolLookup.mp4" length="14430321" type="video/mp4" /><feedburner:origEnclosureLink>http://devcentral.f5.com/media/videos/20090617-TTPoolLookup.mp4</feedburner:origEnclosureLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2314/Cacti-Creating-Templates-for-Indexed-SNMP-Data.aspx#Comments</comments> 
    <slash:comments>2</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=2314</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=2314&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>Cacti: Creating Templates for Indexed SNMP Data</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/Y3mXQXS_uP8/Cacti-Creating-Templates-for-Indexed-SNMP-Data.aspx</link> 
    <description>&lt;p&gt;In the last Cacti article, we walked through creating a graph template off individual static oids.&amp;#160; This time out, we're going to look at how to build a template with a data query based on indexed SNMP mibs.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/Y3mXQXS_uP8" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Tue, 16 Jun 2009 21:05:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:2314</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2314/Cacti-Creating-Templates-for-Indexed-SNMP-Data.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2316/v10--Remote-Authorization-via-TACACS43.aspx#Comments</comments> 
    <slash:comments>34</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=2316</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=2316&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>v.10 - Remote Authorization via TACACS&amp;#43;</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/q8HkGmWbq1I/v10--Remote-Authorization-via-TACACS43.aspx</link> 
    <description>&lt;p&gt;Remote authorization for ldap was first introduced in version 9.4.&amp;#160; Now, however, in v10, the feature has been expanded to include radius and tacacs+.&amp;#160; In this article, I'll walk through the tacacs+ server configuration and the remoterole configuration on the BIG-IP required to get remote authorization working.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/media/audio/20090602-v10_RemoteAuthorization.mp3"&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/q8HkGmWbq1I" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Tue, 02 Jun 2009 20:30:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:2316</guid> 
    
<media:content url="http://feedproxy.google.com/~r/DevCentralVideoTutorials/~5/_xuQ8ihJdhc/20090602-v10_RemoteAuthorization.mp3" fileSize="6080643" type="audio/mpeg" /><itunes:explicit>no</itunes:explicit><itunes:subtitle> Remote authorization for ldap was first introduced in version 9.4.&amp;#160; Now, however, in v10, the feature has been expanded to include radius and tacacs+.&amp;#160; In this article, I'll walk through the tacacs+ server configuration and the remoterole confi</itunes:subtitle><itunes:author>F5 DevCentral Team</itunes:author><itunes:summary> Remote authorization for ldap was first introduced in version 9.4.&amp;#160; Now, however, in v10, the feature has been expanded to include radius and tacacs+.&amp;#160; In this article, I'll walk through the tacacs+ server configuration and the remoterole configuration on the BIG-IP required to get remote authorization working. &amp;#160;</itunes:summary><itunes:keywords>F5,BIG,IP,iControl,iRules,Video,Tutorials</itunes:keywords><feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2316/v10--Remote-Authorization-via-TACACS43.aspx</feedburner:origLink><enclosure url="http://feedproxy.google.com/~r/DevCentralVideoTutorials/~5/_xuQ8ihJdhc/20090602-v10_RemoteAuthorization.mp3" length="6080643" type="audio/mpeg" /><feedburner:origEnclosureLink>http://devcentral.f5.com/media/audio/20090602-v10_RemoteAuthorization.mp3</feedburner:origEnclosureLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/357/v10--BIG-IP-Dashboard.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=357</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=357&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>v.10 - BIG-IP Dashboard</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/rbVL32C7aGM/v10--BIG-IP-Dashboard.aspx</link> 
    <description>&lt;p&gt;In this video walkthrough, I'll give a rundown on the new BIG-IP administrative dashboard that allows dynamic real-time monitoring of system resources and usage.&lt;a href="http://devcentral.f5.com/media/videos/20090423-BIGIPv10-Dashboard.mp4"&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/rbVL32C7aGM" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Thu, 23 Apr 2009 16:46:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:357</guid> 
    
<media:content url="http://feedproxy.google.com/~r/DevCentralVideoTutorials/~5/AB0dum8V5UI/20090423-BIGIPv10-Dashboard.mp4" fileSize="6390366" type="video/mp4" /><itunes:explicit>no</itunes:explicit><itunes:subtitle> In this video walkthrough, I'll give a rundown on the new BIG-IP administrative dashboard that allows dynamic real-time monitoring of system resources and usage.&amp;#160;</itunes:subtitle><itunes:author>F5 DevCentral Team</itunes:author><itunes:summary> In this video walkthrough, I'll give a rundown on the new BIG-IP administrative dashboard that allows dynamic real-time monitoring of system resources and usage.&amp;#160;</itunes:summary><itunes:keywords>F5,BIG,IP,iControl,iRules,Video,Tutorials</itunes:keywords><feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/357/v10--BIG-IP-Dashboard.aspx</feedburner:origLink><enclosure url="http://feedproxy.google.com/~r/DevCentralVideoTutorials/~5/AB0dum8V5UI/20090423-BIGIPv10-Dashboard.mp4" length="6390366" type="video/mp4" /><feedburner:origEnclosureLink>http://devcentral.f5.com/media/videos/20090423-BIGIPv10-Dashboard.mp4</feedburner:origEnclosureLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/352/v10--BIG-IP-UI-Walkthrough.aspx#Comments</comments> 
    <slash:comments>14</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=352</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=352&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>v.10 - BIG-IP UI Walkthrough</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/5nGe-DOXEVg/v10--BIG-IP-UI-Walkthrough.aspx</link> 
    <description>&lt;p&gt;In this video walkthrough, I'll give a rundown on the new BIG-IP User Interface (UI) and highlight some of the cool new features that you may not be aware of.&lt;a href="http://devcentral.f5.com/media/videos/20090416-BIGIPv10-xUI.mp4"&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/5nGe-DOXEVg" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Thu, 16 Apr 2009 20:24:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:352</guid> 
    
<media:content url="http://feedproxy.google.com/~r/DevCentralVideoTutorials/~5/8EqKBUeO8fo/20090416-BIGIPv10-xUI.mp4" fileSize="18413375" type="video/mp4" /><itunes:explicit>no</itunes:explicit><itunes:subtitle> In this video walkthrough, I'll give a rundown on the new BIG-IP User Interface (UI) and highlight some of the cool new features that you may not be aware of.&amp;#160;</itunes:subtitle><itunes:author>F5 DevCentral Team</itunes:author><itunes:summary> In this video walkthrough, I'll give a rundown on the new BIG-IP User Interface (UI) and highlight some of the cool new features that you may not be aware of.&amp;#160;</itunes:summary><itunes:keywords>F5,BIG,IP,iControl,iRules,Video,Tutorials</itunes:keywords><feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/352/v10--BIG-IP-UI-Walkthrough.aspx</feedburner:origLink><enclosure url="http://feedproxy.google.com/~r/DevCentralVideoTutorials/~5/8EqKBUeO8fo/20090416-BIGIPv10-xUI.mp4" length="18413375" type="video/mp4" /><feedburner:origEnclosureLink>http://devcentral.f5.com/media/videos/20090416-BIGIPv10-xUI.mp4</feedburner:origEnclosureLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/346/Cacti-Creating-a-Graph-Template.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=346</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=346&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>Cacti: Creating a Graph Template</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/-Gx2-JzbV7I/Cacti-Creating-a-Graph-Template.aspx</link> 
    <description>&lt;p&gt;A while back I wrote an article on &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=63&amp;amp;articleType=ArticleView&amp;amp;articleId=136"&gt;Graphing the LTM with Cacti&lt;/a&gt;.&amp;#160; The article was mostly pointed towards installation and configuring a graph from a pre-configured host template.&amp;#160; In this video, I'll show you how to create a graph template to track the WebAccelerator memory and disk hit counts.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/-Gx2-JzbV7I" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Thu, 02 Apr 2009 15:23:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:346</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/346/Cacti-Creating-a-Graph-Template.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/238/pyControl--Installation.aspx#Comments</comments> 
    <slash:comments>2</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=238</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=238&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>pyControl - Installation</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/SkV2FW5SJlQ/pyControl--Installation.aspx</link> 
    <description>&lt;p&gt;In this video tutorial, F5's Matt Cauthorn goes over the installation process required to start using pyControl, the python libraries for iControl DevCentral Labs project.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/media/videos/20080211-pyControlInstall.mp4"&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/SkV2FW5SJlQ" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Thu, 12 Jun 2008 15:17:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:238</guid> 
    
<media:content url="http://feedproxy.google.com/~r/DevCentralVideoTutorials/~5/-oQNIUqsiN0/20080211-pyControlInstall.mp4" fileSize="23941336" type="video/mp4" /><itunes:explicit>no</itunes:explicit><itunes:subtitle> In this video tutorial, F5's Matt Cauthorn goes over the installation process required to start using pyControl, the python libraries for iControl DevCentral Labs project. &amp;#160;</itunes:subtitle><itunes:author>F5 DevCentral Team</itunes:author><itunes:summary> In this video tutorial, F5's Matt Cauthorn goes over the installation process required to start using pyControl, the python libraries for iControl DevCentral Labs project. &amp;#160;</itunes:summary><itunes:keywords>F5,BIG,IP,iControl,iRules,Video,Tutorials</itunes:keywords><feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/238/pyControl--Installation.aspx</feedburner:origLink><enclosure url="http://feedproxy.google.com/~r/DevCentralVideoTutorials/~5/-oQNIUqsiN0/20080211-pyControlInstall.mp4" length="23941336" type="video/mp4" /><feedburner:origEnclosureLink>http://devcentral.f5.com/media/videos/20080211-pyControlInstall.mp4</feedburner:origEnclosureLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/168/DevCentral-101--05--CodeShare.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=168</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=168&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>DevCentral 101 - #05 - CodeShare</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/nnvgOg9gKuo/DevCentral-101--05--CodeShare.aspx</link> 
    <description>&lt;p&gt;In this installment of DevCentral 101, Joe goes over how to post a sample to the CodeShare section of the DevCentral wiki.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/nnvgOg9gKuo" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Thu, 13 Mar 2008 07:01:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:168</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/168/DevCentral-101--05--CodeShare.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/159/DevCentral-101--04--Docs.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=159</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=159&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>DevCentral 101 - #04 - Docs</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/L9yBqplcCmw/DevCentral-101--04--Docs.aspx</link> 
    <description>&lt;p&gt;In this installment of DevCentral 101, Joe goes over the Docs and Tips section on DevCentral.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/L9yBqplcCmw" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Wed, 13 Feb 2008 16:35:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:159</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/159/DevCentral-101--04--Docs.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/157/DevCentral-101--03--Homepage.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=157</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=157&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>DevCentral 101 - #03 - Homepage</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/58X4qD2bS5c/DevCentral-101--03--Homepage.aspx</link> 
    <description>&lt;p&gt;In this installment of DevCentral 101, Joe highlights all the goodies that can be found on the DevCentral Homepage.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/58X4qD2bS5c" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Tue, 12 Feb 2008 00:28:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:157</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/157/DevCentral-101--03--Homepage.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/150/DevCentral-101--01--Registration.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=150</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=150&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>DevCentral 101 - #01 - Registration</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/ke7bGCD10X8/DevCentral-101--01--Registration.aspx</link> 
    <description>&lt;p&gt;In the first installment of this series, Joe goes over the first step in becoming a member of the DevCentral Community - User Registration.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/ke7bGCD10X8" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Thu, 24 Jan 2008 08:01:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:150</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/150/DevCentral-101--01--Registration.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/100/iRule-Editor--Admin-Partitions.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=100</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=100&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>iRule Editor - Admin Partitions</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/04mK86x8sjU/iRule-Editor--Admin-Partitions.aspx</link> 
    <description>&lt;p&gt;This tutorial illustrates how to use the latest release of the iRules Editor to create, save, and modify iRules stored in multiple. Administrative Partitions.&amp;#160; For those who don't know about the partition support added in BIG-IP v9.4, it's basically a way to create "buckets" for configuration objects, each with their own access controls.&amp;#160; Partitions make it very easy to segment virtual servers and it's applications to certain business or network groups.&amp;#160; This tutorial shows how to use the iRule Editor to create iRules in any partition the logged in user has access to.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/04mK86x8sjU" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Tue, 11 Sep 2007 21:30:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:100</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/100/iRule-Editor--Admin-Partitions.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/96/Video-Java-with-the-iControl-API-in-Eclipse.aspx#Comments</comments> 
    <slash:comments>2</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=96</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=96&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>Video: Java with the iControl API in Eclipse</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/-PB8cX7rQ4o/Video-Java-with-the-iControl-API-in-Eclipse.aspx</link> 
    <description>&lt;p&gt;Don walks through using iControl in Eclipse. This video assumes that you have already built the iControl JAR file per the instructions in the API documentation, and then shows you the basic steps needed to call routines on the BIG-IP from your Java code.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/-PB8cX7rQ4o" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Wed, 15 Aug 2007 19:40:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:96</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/96/Video-Java-with-the-iControl-API-in-Eclipse.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/88/iRule-Editor--Generating-Traffic.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=88</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=88&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>iRule Editor - Generating Traffic</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/Oq4jdeNgRh4/iRule-Editor--Generating-Traffic.aspx</link> 
    <description>&lt;p&gt;This tutoral illustrates how to use the Traffic Generation Dialog in the iRule Editor to assist in debugging and testing your iRules.&amp;#160; Didn't know that the iRule Editor was a full blown HTTP client?&amp;#160;&amp;#160; Well, after watching this, you'll be "in the know".&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/Oq4jdeNgRh4" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Wed, 25 Jul 2007 22:41:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:88</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/88/iRule-Editor--Generating-Traffic.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/87/Getting-Started-with-iControl-v9-and-Visual-Studio.aspx#Comments</comments> 
    <slash:comments>6</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=87</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=87&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>Getting Started with iControl v9 and Visual Studio</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/bXQ9vPooVNQ/Getting-Started-with-iControl-v9-and-Visual-Studio.aspx</link> 
    <description>&lt;p&gt;Just embarking on your iControl/Visual Studio development project? Then this is the video for you! Joe walks you through the steps to get your iControl application up and running fast using .NET and Web Services.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/bXQ9vPooVNQ" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Wed, 25 Jul 2007 20:08:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:87</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/87/Getting-Started-with-iControl-v9-and-Visual-Studio.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/86/iControl-SDK-Walkthrough.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=86</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=86&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>iControl SDK Walkthrough</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/byrYa1aeUjU/iControl-SDK-Walkthrough.aspx</link> 
    <description>&lt;p&gt;The iControl SDK is the definitive guide to building applications to remotely manage your F5 devices.&amp;#160; In this video feature, Joe walks through the iControl SDK in it's various forms and gives some insights into how to make sense of it all.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/byrYa1aeUjU" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Fri, 20 Jul 2007 17:31:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:86</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/86/iControl-SDK-Walkthrough.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/85/DevCentral-101--02--Labs-Intro.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=85</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=85&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>DevCentral 101 - #02 - Labs Intro</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/dQQbJVmDsOc/DevCentral-101--02--Labs-Intro.aspx</link> 
    <description>&lt;p&gt;In this tutorial, Joe gives a video walkthrough of DevCentral Labs.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/dQQbJVmDsOc" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Fri, 20 Jul 2007 17:18:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:85</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/85/DevCentral-101--02--Labs-Intro.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/83/PowerShell--Getting-Started.aspx#Comments</comments> 
    <slash:comments>14</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=83</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=83&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>PowerShell - Getting Started</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/uFEut0W28QE/PowerShell--Getting-Started.aspx</link> 
    <description>&lt;p&gt;In this tutorial, Joe walks through downloading, installing, configuring, and using the iControl PowerShell Snapin.&amp;#160; He walks through and demonstrates several of the available CmdLets.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/uFEut0W28QE" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Fri, 22 Jun 2007 19:31:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:83</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/83/PowerShell--Getting-Started.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/76/iRule-Editor--Sharing-iRules.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=76</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=76&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>iRule Editor - Sharing iRules</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/fJZ28-LaBjw/iRule-Editor--Sharing-iRules.aspx</link> 
    <description>&lt;p&gt;This tutorial walks you through the sharing features built into the iRule Editor.&amp;#160; Ever wanted to share your iRule with the world?&amp;#160; This is your chance.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/fJZ28-LaBjw" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Thu, 19 Apr 2007 07:01:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:76</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/76/iRule-Editor--Sharing-iRules.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/75/iRule-Editor--Editing-iRules.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=75</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=75&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>iRule Editor - Editing iRules</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/kUR2-ddIXyQ/iRule-Editor--Editing-iRules.aspx</link> 
    <description>&lt;p&gt;This tutorial guides you through the editing features of the iRule Editor.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/kUR2-ddIXyQ" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Tue, 17 Apr 2007 07:01:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:75</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/75/iRule-Editor--Editing-iRules.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/74/iRule-Editor--Deploying-iRules.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=74</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=74&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>iRule Editor - Deploying iRules</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/aNuD1ag_NHU/iRule-Editor--Deploying-iRules.aspx</link> 
    <description>&lt;p&gt;In this tutorial, you will be guided in the process of deploying your iRules.&amp;#160; This involves updating them on the server and assigning them as a resource to a virtual server.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/aNuD1ag_NHU" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Mon, 16 Apr 2007 07:01:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:74</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/74/iRule-Editor--Deploying-iRules.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/73/iRule-Editor--Data-Groups.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=73</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=73&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>iRule Editor - Data Groups</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/lRaZTCAPX5I/iRule-Editor--Data-Groups.aspx</link> 
    <description>&lt;p&gt;In this tutorial, you will be guided through creating and managing Data Groups from within the iRules Editor.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/lRaZTCAPX5I" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Sun, 15 Apr 2007 07:01:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:73</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/73/iRule-Editor--Data-Groups.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/72/iRule-Editor--Creating-iRules.aspx#Comments</comments> 
    <slash:comments>4</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=72</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=72&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>iRule Editor - Creating iRules</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/xm61vgzbH_0/iRule-Editor--Creating-iRules.aspx</link> 
    <description>&lt;p&gt;In this tutorial, you will be guided through the process of creating iRules with the iRule Editor.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/xm61vgzbH_0" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Sat, 14 Apr 2007 07:01:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:72</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/72/iRule-Editor--Creating-iRules.aspx</feedburner:origLink></item>
<item>
    <comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/71/iRule-Editor--Archiving-iRules.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=63&amp;ModuleID=413&amp;ArticleID=71</wfw:commentRss> 
    <trackback:ping>http://devcentral.f5.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=71&amp;PortalID=0&amp;TabID=63</trackback:ping> 
    <title>iRule Editor - Archiving iRules</title> 
    <link>http://feedproxy.google.com/~r/DevCentralVideoTutorials/~3/jfjRBBxxSGM/iRule-Editor--Archiving-iRules.aspx</link> 
    <description>&lt;p&gt;Everything you wanted to know about Archiving iRules but were afraid to ask...&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DevCentralVideoTutorials/~4/jfjRBBxxSGM" height="1" width="1"/&gt;</description> 
    <dc:creator>devcentralteam@f5.com (F5 DevCentral Team)</dc:creator> 
    <pubDate>Fri, 13 Apr 2007 21:43:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:71</guid> 
    
<feedburner:origLink>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/71/iRule-Editor--Archiving-iRules.aspx</feedburner:origLink></item>

    <language>en-us</language><copyright>Copyright 2007, F5 Networks Inc.</copyright><media:credit role="author">F5 DevCentral Team</media:credit><media:rating>nonadult</media:rating><media:description type="plain">DevCentral Docs and Tips | Video Tutorials</media:description></channel>
</rss>

