<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>Renegade Internet</title> <atom:link href="http://www.renegadeinternet.com/feed/" rel="self" type="application/rss+xml" /><link>http://www.renegadeinternet.com</link> <description>We provide publishers and advertisers with excellent ad serving software.</description> <lastBuildDate>Thu, 03 May 2012 21:46:12 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.1.4</generator> <item><title>Flash 10 + AS3 clickTAG</title><link>http://www.renegadeinternet.com/2012/05/flash-10-as3-clicktag/</link> <comments>http://www.renegadeinternet.com/2012/05/flash-10-as3-clicktag/#comments</comments> <pubDate>Thu, 03 May 2012 21:46:12 +0000</pubDate> <dc:creator>Mike Cherichetti</dc:creator> <category><![CDATA[AdvertPro]]></category> <category><![CDATA[AdvertServe]]></category> <category><![CDATA[actionscript]]></category> <category><![CDATA[clicktag]]></category> <category><![CDATA[flash]]></category><guid
isPermaLink="false">http://www.renegadeinternet.com/?p=410</guid> <description><![CDATA[Enter ActionScript 3.0 Flash 10 has been out for a while now, however, up until now there have not been any good tutorials showing you how to use ActionScript 3.0 to create a clickTAG. All of the tutorials still use ActionScript 2.0 and you might as well stick with Flash 9 if you&#8217;re going to ...]]></description> <content:encoded><![CDATA[<h1>Enter ActionScript 3.0</h1><p>Flash 10 has been out for a while now, however, up until now there have not been any good tutorials showing you how to use ActionScript 3.0 to create a clickTAG.  All of the tutorials still use ActionScript 2.0 and you might as well stick with Flash 9 if you&#8217;re going to use that.  Today, we are happy to announce that we have updated our Flash clickTAG tutorial to instruct you how to create a Flash 10 banner with ActionScript 3.0 using Flash CS5.5 Professional!</p><h1>The Tutorial</h1><p>To read the detailed step-by-step tutorial, please click here to visit: <a
href="http://www.flashclicktag.com/">http://www.flashclicktag.com/</a></p><h1>Flash 9 / ActionScript 2.0</h1><p>We realize that some of you might not be ready to move to Flash 10 and ActionScript 3.0 yet, so we have archived the previous version of the tutorial for Flash 9 with ActionScript 2.0 using Flash CS3 Professional here: <a
href="http://www.flashclicktag.com/flash9.html">http://www.flashclicktag.com/flash9.html</a></p><h1>Tired of clickTAG Coding?</h1><p>Remember that with AdvertServe you have the option of verifying that the clickTAG works when uploading Flash .swf files.  This feature already works with Flash 10 and ActionScript 3.0.  In fact, it is not even necessary for you to code a clickTAG into your banners any more.  If the verification detects that your banner contains no clickTAG it will automatically insert a working clickTAG into your banner for you!  The amount of time this can save you far outweighs the $0.99 it costs to run the verification on your files.</p> ]]></content:encoded> <wfw:commentRss>http://www.renegadeinternet.com/2012/05/flash-10-as3-clicktag/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>AdvertPro Version 2.5 Updated</title><link>http://www.renegadeinternet.com/2012/04/advertpro-version-2-5-updated/</link> <comments>http://www.renegadeinternet.com/2012/04/advertpro-version-2-5-updated/#comments</comments> <pubDate>Tue, 03 Apr 2012 05:25:21 +0000</pubDate> <dc:creator>Mike Cherichetti</dc:creator> <category><![CDATA[AdvertPro]]></category> <category><![CDATA[AdvertServe]]></category> <category><![CDATA[updates]]></category><guid
isPermaLink="false">http://www.renegadeinternet.com/?p=398</guid> <description><![CDATA[We are pleased to announce that AdvertPro version 2.5 has been updated! Read on to find out more about new features, improvements and bug fixes. To obtain the update: visit our download site if you plan to install it yourself or request an update installation if you prefer to have us install it for you. ...]]></description> <content:encoded><![CDATA[<table
border="0" cellpadding="0" cellspacing="0" width="100%"><tr
valign="middle"><td
width="100%"><h2>We are pleased to announce that AdvertPro version 2.5 has been updated!</h2><p>Read on to find out more about new features, improvements and bug fixes. To obtain the update: <a
href="https://services.renegadeinternet.com/download/" target="_blank">visit our download site</a> if you plan to install it yourself or <a
href="https://services.renegadeinternet.com/upgrade/" target="_blank">request an update installation</a> if you prefer to have us install it for you. Remember, you&#8217;ll need to have an up to date support contract to receive this update, so <a
href="https://services.renegadeinternet.com/license-renew/" target="_blank">renew today</a>!</p></td></tr></table><h1>New Features</h1><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="1%" nowrap="nowrap"><img
src="http://services.renegadeinternet.com/announce/2.5.1156/images/snapshot.jpg" border="0" alt="" style="float: left; padding-right: 16px" /></td><td
width="99%"><p><b>Campaign Snapshot</b><br
/> We have added a new snapshot version of the campaign listing that provides a bird&#8217;s eye view of which campaigns are currently running and allows you to quickly see how they are progressing.  It also shows their schedule, frequency caps and targeting settings as well as which media they are running and the zones that they are running in.</p></td></tr><tr
valign="middle"><td
colspan="2"><p>The snapshot can be searched by many types of targets (such as country) and can also be filtered by advertiser, type/size, date range, media or zone.  It really is a wonderful new tool that makes keeping on top of things easier than ever!  If that wasn&#8217;t enough, we have also made it possible to export the snapshot to CSV, Excel, JSON and XML formats with a single click.</p></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="100%"><p><b>Contextual Analysis Exclusions</b><br
/> Now you can specify that certain sections of your pages should be excluded from contextual analysis. This is a great way to prevent non-content sections such as your header, navigation or footer from being contextually analyzed.  To do this, simply wrap those sections of your pages in <tt
style="background-color: #FFFFCC; white-space: nowrap">&lt;!-- BEGIN_EXCLUDE_CONTEXTUAL --&gt;</tt> and <tt
style="background-color: #FFFFCC; white-space: nowrap">&lt;!-- END_EXCLUDE_CONTEXTUAL --&gt;</tt> comments.  In some cases it may actually be easier to specify which sections of the page should be contextually analyzed.  In that case you can use the complementary <tt
style="background-color: #FFFFCC; white-space: nowrap">&lt;!-- BEGIN_INCLUDE_CONTEXTUAL --&gt;</tt> and <tt
style="background-color: #FFFFCC; white-space: nowrap">&lt;!-- END_INCLUDE_CONTEXTUAL --&gt;</tt> comments instead. Note that it is also supported to have an excluded section within an included section!  This could be useful for something like a forum web site where you want to contextually analyze the content of posts but you need to exclude users signature content within them.</p></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="99%"><p><b>Contextual Stop Words</b><br
/> AdvertPro already filters more than 700 stops words such as <i>this</i>, <i>that</i> or the <i>other</i> from showing up in your keyword reports.  These are, however, only English variations of those words.  Now you can add your own stop words to the list to support other UTF-8 compatible languages. Speaking of UTF-8, the contextual analyzer now supports reading UTF-8 encoded pages in addition to the previously supported ISO-8859-1 encoding.</p></td><td
width="1%" nowrap="nowrap"><img
src="http://services.renegadeinternet.com/announce/2.5/images/keywords.jpg" border="0" alt="" style="float: right; padding-left: 16px" /></td></tr></table><h1>Improvements</h1><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="100%"><p><b>Campaign Management</b><br
/> We didn&#8217;t just implement improved search and filtering into the campaign snapshot.  The same great improvements have been added to the campaign listing as well!  In addition, the campaign listing now sports an eCPM field which shows the lifetime eCPM of your campaigns.</p></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="99%"><p><b>MySQL Master Failback</b><br
/> If you are using a MySQL slave database and it goes down for any reason, AdvertPro will automatically fail back to using the master database until the slave is available again which allows you to perform offline backups or maintenance on the slave.</p></td><td
width="1%" nowrap="nowrap"><img
src="http://services.renegadeinternet.com/announce/2.5/images/mysql.png" border="0" alt="" style="float: right; padding-left: 16px" /></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="1%" nowrap="nowrap"><img
src="http://services.renegadeinternet.com/announce/2.5/images/html5.png" border="0" alt="" style="float: left; padding-right: 16px" /></td><td
width="99%"><p><b>HTML Parsing Speed</b><br
/> Our HTML parser now parses large snippets of HTML up to 100x faster!</p></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="100%"><p><b>Smarter MySQL Monitoring</b><br
/> The monitor servlet is now smarter about how it reports the condition of the MySQL database being down.  Instead of being shown in a <i>FAILED</i> state, the ConnectionPool and optionally the SlaveConnectionPool are now shown in a <i>WARNING</i> state. Every other monitor that depends on the MySQL database is now shown in an <i>IGNORE</i> state to indicate they were skipped due to the failed dependency.  This allows you to immediately see the root cause of the problem is the MySQL database.  For those of you using scripts to watch the monitor page and restart AdvertPro this also means that it will no longer restart when MySQL goes down briefly (i.e. for maintenance).  The ad server is actually designed to continue working normally (as long as it&#8217;s not restarted) while MySQL is down so it can keep serving ads while buffering statistics updates in memory until MySQL is back up and this allows that to happen by not triggering the restart script.</p></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="100%"><p><b>Flash clickTAG Repair</b><br
/> Some of you may have experienced problems trying check and repair clickTAG&#8217;s in your Flash SWF files in the last month or so. We are happy to report that these problems have been solved.  The third-party service we rely on for this feature has migrated to a more stable Linux server environment to provide us with more reliable service.</p></td></tr></table><h1>Bug Fixes</h1><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="100%"><p><b>Even Distribution</b><br
/> Fixed a bug that was causing even distribution plans not be replaced with a completely new plan when decreasing the value of the max views field for an in-progress campaign.</p></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="100%"><p><b>Campaign Copying</b><br
/> When copying a campaign the original chain and priority settings are now preserved for any media or zones that were already assigned to the campaign that was copied.</p></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="100%"><p><b>eCPM Correctness</b><br
/> Calculations for the accounting reports are now done with up to 65 digits of precision, which will provide more accurate eCPM calculations through the elimination of rounding while rolling up data.  The total eCPM values shown in the accounting reports are now correct for campaigns that have CPC, CPA and flat rate income in addition to CPM income.  These were previously wrong for campaigns that combined more than one type of income rate as it only took the CPM income into consideration.</p></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="100%"><p><b>API Reports</b><br
/> Due to a bug it was required for you to be logged in to the control panel in order to generate HTML formatted reports with the API, however, this has now been fixed and works correctly.</p></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="100%"><p><b>Campaign Alerts</b><br
/> When you reset a campaign or change its start date, stop date or max views/clicks/actions limits the register of alerts based on those conditions are now reset so that those alerts can be sent again when the new conditions are met.</p></td></tr></table><h1>Questions?</h1><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="100%"><p>Please don&#8217;t hesitate to <a
href="http://www.renegadeinternet.com/contact-us" target="_blank">contact support</a> if you have questions about any of the new features and improvements.</p></td></tr></table> ]]></content:encoded> <wfw:commentRss>http://www.renegadeinternet.com/2012/04/advertpro-version-2-5-updated/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Behavioral Retargeting</title><link>http://www.renegadeinternet.com/2012/02/behavioral-retargeting/</link> <comments>http://www.renegadeinternet.com/2012/02/behavioral-retargeting/#comments</comments> <pubDate>Wed, 29 Feb 2012 19:43:55 +0000</pubDate> <dc:creator>Mike Cherichetti</dc:creator> <category><![CDATA[AdvertPro]]></category> <category><![CDATA[AdvertServe]]></category> <category><![CDATA[behavioural]]></category> <category><![CDATA[retargeting]]></category> <category><![CDATA[targeting]]></category><guid
isPermaLink="false">http://www.renegadeinternet.com/?p=382</guid> <description><![CDATA[What is Retargeting? Behavioral retargeting, which is also known as behavioral remarketing or simply as retargeting, is a form of online advertising by which ads are targeted to consumers based on their previous Internet actions. In its most basic form, retargeting serves ads to people more frequently after they have left an advertiser&#8217;s website. This ...]]></description> <content:encoded><![CDATA[<h1>What is Retargeting?</h1><p>Behavioral retargeting, which is also known as behavioral remarketing or simply as retargeting, is a form of online advertising by which ads are targeted to consumers based on their previous Internet actions.  In its most basic form, retargeting serves ads to people more frequently after they have left an advertiser&#8217;s website.  This is great because it allows advertisers to reconnect with potential customers who left their website without completing the desired conversion.  Studies have shown that a company needs to have seven different contacts with a customer (on average) before they make a purchase, which makes retargeting highly effective.</p><h1>Sounds Complicated?</h1><p>Both you and your advertisers already know that not every click you send their way is going to result in a conversion.  By using retargeting, you now have an effective way to bring those strongly interested visitors back to the advertiser&#8217;s website for another conversion attempt.  This is best done with a separate campaign that uses a stronger pitch or perhaps even one that offers a discounted price after some period of time.  The possibilities are endless, but the important thing to note is that these visitors are <strong>very valuable</strong> to your advertisers.  They will be willing to pay a much higher CPM rate to bring them back to their web site and this is something that you could be doing quite easily with all of your advertisers to increase profits!</p><h1>Usage Example</h1><p>First, we need to have a clear picture of what the advertiser does.  They are a manufacturing company that creates custom office furniture.  Every month they are running campaigns for their office desks, file cabinets, boardroom tables and more on your web site which is a treasure trove of information for business owners.  This tells us something very important: the advertiser has multiple distinct categories of products that should be broken into multiple segments for retargeting.</p><ol><li>Log in to your AdvertPro or AdvertServe account</li><li>Go to the <strong>Code Wizard</strong></li><li>Click on the <strong>Retargeting Code</strong> option in the navigation menu on the left and then click on the <strong>HTML</strong> link beneath it.</li><li>Select that you want to <strong>Create a Segment</strong></li><li>Enter a <strong>name</strong> for your segment.  In this case we would probably name our segments <em>ACME: Office Desks</em>, <em>ACME: File Cabinents</em>, and so on.</li><li>In most cases you can keep the randomly generate <strong>alias</strong>, but sometimes it can be helpful to use category or product codes from the advertiser.</li><li>Next you might want to adjust the <strong>timeout</strong>, which defines how long after a visitor has been to an advertisers web site (without having revisited) that they will remain tagged for retargeting</li><li>Finally you can press the <strong>Generate Code</strong> button</li></ol><p>Repeat this process for each segment you need to create and provide the codes to your advertiser for them to place on the appropriate pages of their web sites.</p><p>But wait, we forgot something very important!  You also want to create two more segments for their shopping cart and for their order confirmation page.  This will allow you to retarget visitors that put something in their shopping cart but did not follow through and actually complete a purchase.</p><p>Once the retargeting code has been placed on your advertisers web site you can set up campaigns to target them.  When creating a new campaign, click on the <strong>Visitor Retargeting</strong> section to expand it.</p><p><img
src="http://www.renegadeinternet.com/wp-content/uploads/2012/01/retargethowto.png" alt="Visitor Retargeting Options" /></p><p>There are several things that you see here.  First you can define a range of time that you want to retarget visitors based on how long ago it was that they visited the advertiser&#8217;s web site.  Next you can both target and block segments that they might have been tagged with.  For example, we might want to retarget visitors that put something in their shopping cart but did not complete a purchase.  How would we do that?  Obviously we need to target the shopping cart segment, but we also need to block the order confirmation segment because we do not want to continue retargeting visitors that already completed a purchase.</p><h1>Final Thoughts</h1><p>As you have learned, retargeting is a wonderful tool that will help you provide better ROI to your advertisers and increase your profits at the same time.  It is so easy and practical to do that there is no excuse for not implementing it with all of your advertisers.  Have questions or more ideas about how you can use retargeting effectively?  Please post a comment and let us know.</p> ]]></content:encoded> <wfw:commentRss>http://www.renegadeinternet.com/2012/02/behavioral-retargeting/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Mobile Targeting</title><link>http://www.renegadeinternet.com/2012/02/mobile-targeting/</link> <comments>http://www.renegadeinternet.com/2012/02/mobile-targeting/#comments</comments> <pubDate>Wed, 29 Feb 2012 19:43:43 +0000</pubDate> <dc:creator>Mike Cherichetti</dc:creator> <category><![CDATA[AdvertPro]]></category> <category><![CDATA[AdvertServe]]></category> <category><![CDATA[mobile]]></category> <category><![CDATA[targeting]]></category><guid
isPermaLink="false">http://www.renegadeinternet.com/?p=368</guid> <description><![CDATA[Mobile Everywhere You already know how popular mobile devices such as smartphones and tablets are these days. I do not need to tell you that over 250 million iOS devices, including the iPad, iPhone and iPod alone have been sold worldwide. Unless you have been in a cave for the last few years you have ...]]></description> <content:encoded><![CDATA[<h1>Mobile Everywhere</h1><p>You already know how popular mobile devices such as smartphones and tablets are these days.  I do not need to tell you that over 250 million iOS devices, including the iPad, iPhone and iPod alone have been sold worldwide.  Unless you have been in a cave for the last few years you have probably heard that there are over 500,000 apps on the Apple App Store as well as more than 360,000 apps in the Android marketplace.  You cannot go anywhere on the grid without seeing someone using one of these devices and you are probably toting around one or two yourself.</p><h1>Advertising Apps</h1><p>Given the huge number of both mobile app developers and mobile users there is a huge opportunity and money to be made for connecting them with each other.  This is where mobile targeting comes in.  Now you can target campaigns to visitors that are browsing your site using Android, BlackBerry, iOS, Java/J2ME, PalmOS, SymbianOS and Windows Mobile powered devices.</p><p><img
src="http://www.renegadeinternet.com/wp-content/uploads/2012/01/softwaretarget.png" alt="Software Targeting Options" style="display: block; margin-left: auto; margin-right: auto" /></p><p>How can you take advantage of this?  Start by going to the Android marketplace or the Apple App Store and search for apps that might be relevant to visitors of your web site.  Once you have a good size list you can begin reaching out to the app developers.  Write them each a personal e-mail explaining why your visitors would be interested in their app.  You can pull data from the General &gt; Software reports to let them know how much potential traffic you have on average for each type of device they are developing for as well.</p><h1>Local Possibilities</h1><p>Did you know that the same geographic targeting that works with desktop and laptop computers also works with mobile devices?  Immediately you should be thinking about all of the possibilities for local advertising that creates.  Running a digital camera review web site?  Your mobile visitors in Pittsburgh might be interested in knowing that Joe&#8217;s Camera Shack is having a 48-hour sale this weekend.  Who knows, they might just be sitting across the street sipping a latte and researching the best cameras on their iPad.  These campaigns might not get many impressions, but you can compensate for that by charging a higher CPM rate because they will generate a much higher response rate.</p><h1>Other Ideas?</h1><p>How are you planning to use mobile targeting on your web site?  Feel free to post a comment and let us all know!</p> ]]></content:encoded> <wfw:commentRss>http://www.renegadeinternet.com/2012/02/mobile-targeting/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Share of Voice Reports</title><link>http://www.renegadeinternet.com/2012/01/share-of-voice-reports/</link> <comments>http://www.renegadeinternet.com/2012/01/share-of-voice-reports/#comments</comments> <pubDate>Tue, 24 Jan 2012 21:57:48 +0000</pubDate> <dc:creator>Mike Cherichetti</dc:creator> <category><![CDATA[AdvertPro]]></category> <category><![CDATA[AdvertServe]]></category> <category><![CDATA[reports]]></category><guid
isPermaLink="false">http://www.renegadeinternet.com/?p=352</guid> <description><![CDATA[Share of Voice You might have noticed that we added a share column to most of the reports with our version 2.5 update. What is that all about? In the online advertising industry, share of voice is used to represent the relative portion of ad inventory available to a single advertiser within a defined market ...]]></description> <content:encoded><![CDATA[<h1>Share of Voice</h1><p>You might have noticed that we added a <strong>share </strong>column to most of the reports with our version 2.5 update.  What is that all about?  In the online advertising industry, <strong>share of voice</strong> is used to represent the relative portion of ad inventory available to a single advertiser within a defined market over a specified time period.  So, basically, the <strong>share</strong> column shows you what percentage of impressions each of your advertisers received during a period of time.</p><h1>Example Report</h1><p>We have gone a step further by making share of voice available for more than just advertiser reports.  For example, what if you wanted to know what percentage of impressions were from Firefox users today?  Sure, you could always get out your calculator and figure it out, but now you don&#8217;t have to!</p><p><img
src="http://www.renegadeinternet.com/wp-content/uploads/2012/01/share_report.png" alt="Browser Share of Voice" /></p><p>Right away you can see that about 36.63% of visitors today were using Firefox without even thinking about reaching for your calculator.  You&#8217;re welcome!  Remember, the share column is available for almost all other report types as well (such as geography or custom fields), so you can now very easily compare impression distribution between many different elements and dimensions.</p> ]]></content:encoded> <wfw:commentRss>http://www.renegadeinternet.com/2012/01/share-of-voice-reports/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>API: JSON vs XML</title><link>http://www.renegadeinternet.com/2012/01/api-json-vs-xml/</link> <comments>http://www.renegadeinternet.com/2012/01/api-json-vs-xml/#comments</comments> <pubDate>Tue, 24 Jan 2012 21:33:36 +0000</pubDate> <dc:creator>Mike Cherichetti</dc:creator> <category><![CDATA[AdvertPro]]></category> <category><![CDATA[AdvertServe]]></category> <category><![CDATA[api]]></category> <category><![CDATA[json]]></category><guid
isPermaLink="false">http://www.renegadeinternet.com/?p=333</guid> <description><![CDATA[What is JSON? JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. Based on a subset of the JavaScript Programming Language, JSON is a text format that is completely language independent but uses conventions that are familiar ...]]></description> <content:encoded><![CDATA[<h1>What is JSON?</h1><p><strong>JSON </strong>(JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. Based on a subset of the JavaScript Programming Language, <strong>JSON </strong>is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make <strong>JSON </strong>an ideal data-interchange language.</p><h1>JSON vs XML</h1><p>You might already be using our API with XML so why might you want to switch to JSON?  In most cases there really is no reason to switch aside from personal preferences.  Many people find XML very verbose and clumsy to work with while JSON is very compact and easier to read and write.  If you are more comfortable and productive with XML, then you should use XML.  Otherwise you can choose to use JSON instead if you feel like it is a better fit for you.</p><h1>Comparison</h1><p>So, you might be wondering, just how much more compact and readable is JSON compared to XML?  Here&#8217;s an example of the data returned when retrieving the information for a zone in both JSON and XML.</p><p><strong>JSON</strong></p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>
  <span style="color: #3366CC;">&quot;id&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">&quot;name&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Top of Page / 728x90&quot;</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">&quot;group&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">2</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">&quot;type&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">&quot;size&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">19</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">&quot;targeting&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>
    <span style="color: #CC0000;">4</span><span style="color: #339933;">,</span>
    <span style="color: #CC0000;">8</span>
  <span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">&quot;status&quot;</span><span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">&quot;recycle&quot;</span><span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">&quot;notes&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">&quot;campaigns&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>
    <span style="color: #009900;">&#123;</span>
      <span style="color: #3366CC;">&quot;id&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">3</span><span style="color: #339933;">,</span>
      <span style="color: #3366CC;">&quot;default&quot;</span><span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
      <span style="color: #3366CC;">&quot;chain&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
      <span style="color: #3366CC;">&quot;priority&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span>
      <span style="color: #3366CC;">&quot;status&quot;</span><span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    <span style="color: #009900;">&#123;</span>
      <span style="color: #3366CC;">&quot;id&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">4</span><span style="color: #339933;">,</span>
      <span style="color: #3366CC;">&quot;default&quot;</span><span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
      <span style="color: #3366CC;">&quot;chain&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
      <span style="color: #3366CC;">&quot;priority&quot;</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span>
      <span style="color: #3366CC;">&quot;status&quot;</span><span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">&quot;publishers&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>
    <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span>
    <span style="color: #CC0000;">2</span>
  <span style="color: #009900;">&#93;</span>
<span style="color: #009900;">&#125;</span></pre></div></div><p><strong>XML</strong></p><div
class="wp_syntax"><div
class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;zone</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Top of Page / 728x90&quot;</span> <span style="color: #000066;">group</span>=<span style="color: #ff0000;">&quot;2&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000066;">size</span>=<span style="color: #ff0000;">&quot;19&quot;</span> <span style="color: #000066;">targeting</span>=<span style="color: #ff0000;">&quot;000010001&quot;</span> <span style="color: #000066;">status</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000066;">recycle</span>=<span style="color: #ff0000;">&quot;false&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;notes</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;campaigns<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;campaign</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;3&quot;</span> <span style="color: #000066;">default</span>=<span style="color: #ff0000;">&quot;false&quot;</span> <span style="color: #000066;">chain</span>=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #000066;">priority</span>=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000066;">status</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;campaign</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;4&quot;</span> <span style="color: #000066;">default</span>=<span style="color: #ff0000;">&quot;false&quot;</span> <span style="color: #000066;">chain</span>=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #000066;">priority</span>=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000066;">status</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/campaigns<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;publishers<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;publisher</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;1&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;publisher</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;2&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/publishers<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/zone<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div><p>As you can see the JSON is actually slightly larger than the JSON in this case.  This is not typical, however, it is pretty clear that the JSON is much easier to read and understand.  Why does that matter?  You are writing programs to read the JSON right?  Well, if you find yourself tracing HTTP requests to view the data going back and forth between the API, trust me, I can tell you that JSON is much easier on the eyes!  It is also much nicer for those folks that like to dig and explore the API without reading the documentation <img
src='http://www.renegadeinternet.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><h1>The Verdict</h1><p>Having the option to choose between using JSON and XML is a good thing.  It gives you the flexibility to pick the right tool for the job.  Interested in learning more about JSON?  Head on over the official JSON web site at <a
href="http://www.json.org/" target="_blank">http://www.json.org/</a></p> ]]></content:encoded> <wfw:commentRss>http://www.renegadeinternet.com/2012/01/api-json-vs-xml/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>AdvertPro Version 2.5</title><link>http://www.renegadeinternet.com/2012/01/advertpro-version-2-5/</link> <comments>http://www.renegadeinternet.com/2012/01/advertpro-version-2-5/#comments</comments> <pubDate>Mon, 16 Jan 2012 20:58:09 +0000</pubDate> <dc:creator>Mike Cherichetti</dc:creator> <category><![CDATA[AdvertPro]]></category> <category><![CDATA[AdvertServe]]></category> <category><![CDATA[updates]]></category><guid
isPermaLink="false">http://www.renegadeinternet.com/?p=321</guid> <description><![CDATA[We are pleased to announce that AdvertPro version 2.5 has been released! Read on to find out more about new features and improvements. To obtain the update: visit our download site if you plan to install it yourself or request an update installation if you prefer to have us install it for you. Remember, you&#8217;ll ...]]></description> <content:encoded><![CDATA[<table
border="0" cellpadding="0" cellspacing="0" width="100%"><tr
valign="middle"><td
width="100%"><p><b>We are pleased to announce that AdvertPro version 2.5 has been released!</b></p><p> Read on to find out more about new features and improvements. To obtain the update: <a
href="https://services.renegadeinternet.com/download/" target="_blank">visit our download site</a> if you plan to install it yourself or <a
href="https://services.renegadeinternet.com/upgrade/" target="_blank">request an update installation</a> if you prefer to have us install it for you. Remember, you&#8217;ll need to have an up to date support contract to receive this update, so <a
href="https://services.renegadeinternet.com/license-renew/" target="_blank">renew today</a>!</p></td></tr></table><h1>Ad Server</h1><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="1%" nowrap="nowrap"><img
src="http://services.renegadeinternet.com/announce/2.5/images/Smartphones.jpg" border="0" alt="" style="float: left; padding-right: 16px" /></td><td
width="99%"><p><b>Mobile Targeting</b><br
/> We have added all of the most popular mobile operating systems and web browsers to our software targeting and reporting so if you&#8217;ve been waiting to start advertising apps to Android and iOS visitors on your web sites the wait is now over!</p></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="99%"><p><b>Retargeting</b><br
/> Now you can retarget visitors who have previously viewed pages that have been tagged with segment pixels codes. For example, you might create segments for your advertisers home page, landing page, shopping cart and order confirmation pages. This creates a lot of exciting targeting possibilities, such as being able to target visitors that abandoned their shopping cart for a premium CPM.</p></td><td
width="1%" nowrap="nowrap"><img
src="http://services.renegadeinternet.com/announce/2.5/images/retargeting.jpg" border="0" alt="" style="float: right; padding-left: 16px" /></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="100%"><p><b>Custom Targeting</b><br
/> When you have more than one custom field using exclusion you can now enter a special target value of {null_all} in any field to prevent campaigns from being shown when all fields combined have no value. You may also use {null} to only apply to individual fields. This can be useful when passing %%CUSTOM[1-10]%% values to third-party ad servers and you want to make sure their ads are only shown when you actually have custom field values to pass to them.</p></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="99%"><p><b>Keyword Targeting</b><br
/> Now you can block or target campaigns when no keywords have been passed to the ad server by entering the special keyword {null} as a blocked or targeted keyword value, which can be useful when passing %%KEYWORDS%% values to third-party ad servers and you want to make sure their ads are only shown when you actually have keywords to pass.</p></td><td
width="1%" nowrap="nowrap"><img
src="http://services.renegadeinternet.com/announce/2.5/images/keywords.jpg" border="0" alt="" style="float: right; padding-left: 16px" /></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="100%"><p><b>Frequency Capping</b><br
/> Previously the click and action frequency capping would still allow campaigns to be viewed by visitors after reaching the cap. The ad server would just not count repeat clicks or actions if they were capped like that. However, this is generally a waste of impressions, so we&#8217;ve decided to change it so that once the click or action cap is reached it won&#8217;t show the visitor the campaign again until those caps have expired. Basically the click and action capping work just like view capping does now.</p></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="1%" nowrap="nowrap"><img
src="http://services.renegadeinternet.com/announce/2.5/images/html5.png" border="0" alt="" style="float: left; padding-right: 16px" /></td><td
width="99%"><p><b>HTML5</b><br
/> The ad server now fully supports the new HTML5 doctype and tags.</p></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="1%" nowrap="nowrap"><img
src="http://services.renegadeinternet.com/announce/2.5/images/windows8.png" border="0" alt="" style="float: left; padding-right: 16px" /></td><td
width="99%"><p><b>Windows 8</b><br
/> We have added support for targeting and reporting of Windows 8 users.</p></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="100%"><p><b>Popup Blocking</b><br
/> When using the anti-popup blocker or the onclick method of opening popups/popunders we are now detecting clicks on the entire page instead of just links, which for some users has increased the number of delivered popups by as much as 60%</p></td></tr></table><h1>API</h1><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="99%"><p><b>JSON</b><br
/> Not a big fan of XML? You will be happy to hear that our API can now output data in JSON format. To get JSON output instead of XML (which is still the default), simply add an &amp;output=json parameter to your API requests. Our API documentation has also been updated with JSON examples.</p></td><td
width="1%" nowrap="nowrap"><img
src="http://services.renegadeinternet.com/announce/2.5/images/json.gif" border="0" alt="" style="float: right; padding-left: 16px" /></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="100%"><p><b>CSV Parameters</b><br
/> All parameter inputs for API requests that were previously specified to support multiple values will now also accept a single CSV parameter value. For example, before you had to use &amp;geography_country=us&amp;geography_country=ca and so on. Now you can simply use &amp;geography_country=us,ca,&#8230; to reduce the amount of code you need to write to include those values.</p></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="100%"><p><b>Campaign Querying</b><br
/> You can now query campaigns by a date range with the API. You can specify a starting date, ending date or both for a range. Campaigns with flights overlapping the specified date range will be returned.</p></td></tr></table><h1>Code Wizard</h1><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="99%"><p><b>Action Code</b><br
/> The action tracking pixel code output by the code wizard is now using an asynchronous JavaScript call to load the pixel, which means the pixel is longer visibly displayed in the page and it also should be able to resolve a greater percentage of referrers.</p></td><td
width="1%" nowrap="nowrap"><img
src="http://services.renegadeinternet.com/announce/2.5/images/htmlcode.png" border="0" alt="" style="float: right; padding-left: 16px" /></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="100%"><p><b>UTF-8 Support</b><br
/> All of the codes generated by the code wizard now use the JavaScript encodeURIComponent() function to force UTF-8 hex notation (i.e. EN DASH becomes %E2%80%93 instead of %u2013), which provides better UTF-8 support for custom fields, keywords and also capturing of I18N page URLs with document.location.</p></td></tr></table><h1>Deployment</h1><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="99%"><p><b>MySQL Slave</b><br
/> It is now possible to increase salability and reliability by configuring a replicated MySQL slave database server. In fact you can configure a pool of slaves and they will be load-balanced automatically! Due to slaves being read-only their use is limited to loading user session data and generating statistics reports.</p></td><td
width="1%" nowrap="nowrap"><img
src="http://services.renegadeinternet.com/announce/2.5/images/mysql.png" border="0" alt="" style="float: right; padding-left: 16px" /></td></tr><tr
valign="middle"><td
colspan="2"><p>With the upcoming clustering support it will be very important to have a few slaves for loading user session data if you use frequency capping or post view tracking. Customers with huge statistics databases know that generating reports can sometimes delay the real-time statistics batch updates, which increases the risk of data loss in the event of a power failure or system crash. By offloading report generation to the slave(s) this risk is completely eliminated because it removes all of the potential for read/write contention from the master.</p></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="1%" nowrap="nowrap"><img
src="http://services.renegadeinternet.com/announce/2.5/images/tomcat.png" border="0" alt="" style="float: left; padding-right: 16px" /></td><td
width="99%"><p><b>JDK 7 &amp; Tomcat 7</b><br
/> Deployment with JDK 7 (1.7.0) and Tomcat 7 (7.0.x) is now officially supported.</p></td></tr></table><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="100%"><p><b>MySQL 5.5</b><br
/> Deployment with MySQL 5.5 and MySQL Connector/J 5.1 is now officially supported.</p></td></tr></table><h1>Performance</h1><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="1%" nowrap="nowrap"><img
src="http://services.renegadeinternet.com/announce/2.5/images/chains.jpg" border="0" alt="" style="float: left; padding-right: 16px" /></td><td
width="99%"><p><b>Multiple Chains</b><br
/> Performance has been improved with zones containing many levels of chains. The ad server now walks down the campaign list in descending order by chain. This allows it to skip scanning campaigns in lower chains once campaigns in higher chains have already been found!</p></td></tr></table><h1>Reports</h1><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="100%"><p><b>Drill Down Links</b><br
/> With so many reports a better and faster method of navigating them was needed, so we added drill down links that make navigating the reports a real pleasure! Looking at a general summary report and want to see a report for just one of the advertisers in that report? No problem! Just click on the advertisers name in the report and their report comes up instantly.</p></td></tr><tr
valign="middle"><td
width="100%"><p><b>Share of Voice</b><br
/> Ever wondered what percentage of impressions each of your advertisers or campaigns is actually receiving? We have added a new share field to the reports, which stands for share of voice. This new field shows exactly the percentage of impressions each advertiser received and is available for most other reports as well.</p></td></tr><tr
valign="middle"><td
width="100%"><p><b>Row Highlighting</b><br
/> When comparing different rows in the reports it can be quite easy to lose your place. Now you can click on a row to highlight it, making it easy to come back to. Any number of rows can be highlighted and clicking on them again will unhighlight them.</p></td></tr></table><h1>User Interface</h1><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="100%"><p><b>Date Selection</b><br
/> When creating a campaign the stop date picker is now advanced to the start date of the campaign making it easier to pick a stop date in the future from the start date.</p></td></tr><tr
valign="middle"><td
width="100%"><p><b>File Renaming</b><br
/> When you try to upload a file with the same name as a file that already exists in the current folder, the new file will now be renamed by appending _1, _2, _3, etc&#8230; to its name instead of making the upload fail!</p></td></tr><tr
valign="middle"><td
width="100%"><p><b>Locating Files</b><br
/> When modifying the file for a media or size the popup file browser window now lets you find the currently selected file much more easily. If the list of files in the folder is very long the window will scroll down to the file. You will also notice that the file has a different icon and is shown in bold to indicate it is the selected file. The last uploaded file can also be selected from the top of the file browser window immediately after uploading it as well.</p></td></tr></table><h1>Questions?</h1><table
border="0" cellpadding="0" cellspacing="16" width="100%"><tr
valign="middle"><td
width="100%"><p>Please don&#8217;t hesitate to <a
href="http://www.renegadeinternet.com/contact-us" target="_blank">contact support</a> if you have questions about any of the new features and improvements.</p></td></tr></table> ]]></content:encoded> <wfw:commentRss>http://www.renegadeinternet.com/2012/01/advertpro-version-2-5/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Contextual Targeting</title><link>http://www.renegadeinternet.com/2011/10/contextual-targeting/</link> <comments>http://www.renegadeinternet.com/2011/10/contextual-targeting/#comments</comments> <pubDate>Wed, 19 Oct 2011 02:29:45 +0000</pubDate> <dc:creator>Mike Cherichetti</dc:creator> <category><![CDATA[AdvertPro]]></category> <category><![CDATA[AdvertServe]]></category> <category><![CDATA[contextual]]></category> <category><![CDATA[keywords]]></category><guid
isPermaLink="false">http://www.renegadeinternet.com/?p=312</guid> <description><![CDATA[Greater Relevancy = Increased Profits Contextual targeting enables you to more effectively target campaigns to relevant pages by matching keywords and phrases within the full text content of those pages. Advertisers are willing to spend more money for their ads to be placed on pages that contain relevant keywords or phrases. Why allow content advertising ...]]></description> <content:encoded><![CDATA[<h2>Greater Relevancy = Increased Profits</h2><p>Contextual targeting enables you to more effectively target campaigns to relevant pages by matching keywords and phrases within the full text content of those pages. <strong>Advertisers are willing to spend more money for their ads to be placed on pages that contain relevant keywords or phrases.</strong> Why allow content advertising networks to collect the lions share of that money?  With  contextual targeting, you will be able to sell those advertisers directly and increase profits by completely cutting out the middle man.</p><p>You can also stretch your inventory to increase profits even further with contextual targeting.  Say that you have an advertiser who  buys 250,000 impressions every month at $10.00 CPM and you deliver those impressions run of site.  Maybe their ads aren&#8217;t quite relevant to every page on your site though?  Why not sell them 100,000 impressions only on relevant pages at $25.00 CPM instead?  You still make the same amount of money ($2,500/month), your advertiser will be happier because their CTR will appear higher from having fewer impressions and you have 150,000 extra impressions that can be sold to another advertiser for an increased profit of $1,500/month.</p><h2>How Contextual Targeting Works</h2><ol><li>Generate a zone code with the <strong>Code Wizard</strong> and check the <strong>Contextual</strong> option to enable indexing of pages where you will place the zone.</li><li>Place the generated zone code in your page(s). Secure pages are supported too!</li><li>The zone code triggers the web crawler component of the contextual targeting module to create a full text index of those pages as they are visited.  This on-demand process happens in less than half a second the first time a new page is discovered.  The ad server will then cache the page index for 1-24 hours (configurable) so there is very little impact on the performance of your site and the loading speed of your ads.</li><li>Campaigns can then be targeted to keywords and phrases in your pages.  Exact and fuzzy matches of keywords are supported.  Boolean operators (+/-) are also supported to require combinations of words, so you can actually require multiple keywords or phrases to be present in a page together.  You can even require certain keywords or phrases to occur a minimum number of times to guarantee greater contextual relevancy.</li><li>The most relevant keywords from your pages can later be reviewed by generating a keyword report, which is a great sales tool that helps you estimate how many impressions certain keywords generate on average.</li></ol><h2>Where Contextual Targeting Excels</h2><p>Lets say that you operate a web site that covers home theater equipment.  The big attraction to your web site is a forum where enthusiasts can discuss all of the latest home theater audio and video gear.  Over the years the forum grows to be home to several hundred thousands posts.  How could you possibly target ads to all of those post pages?  You use keyword targeting!  The contextual targeting module uses a web crawler to full text index your forum post pages on-demand and it caches pages for a short time (4 hours by default) so it won&#8217;t overload your server.</p><p>Another great example would be a blog.  Maybe you have popular blog about food and you like to post your favorite recipes regularly, but your tastes are all over the map.  Even so, you have advertisers interested in advertising on posts featuring recipes that include ingredients they sell.  Here&#8217;s where your problem comes in: all of your blog posts share the same page template so you are stuck with using the same zones for all of your posts.  To pull this off you absolutely need contextual targeting so that you can target campaigns only to posts that mention key ingredients.</p><p>How about advertising networks?  Even if you run a niche network there can still be a lot of potential for increasing relevancy and optimizing inventory usage with contextual targeting.</p><h2>The Important Part: Associated Costs</h2><p>We&#8217;ve set the price for contextual targeting very low to make it affordable for everyone.  AdvertServe users can <a
href="http://www.advertserve.com/contact.html">add contextual targeting</a> to any plan for only $49 per month.  There is no setup fee and there are no usage restrictions.  AdvertPro users can <a
href="https://secure.advertpro.com/order.html">buy the contextual targeting module</a> for a low $449.00 one-time fee.  Updates to the module are free as long as you have a current AdvertPro support contract.</p> ]]></content:encoded> <wfw:commentRss>http://www.renegadeinternet.com/2011/10/contextual-targeting/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>API: Making Bulk Changes</title><link>http://www.renegadeinternet.com/2011/10/api-making-bulk-changes/</link> <comments>http://www.renegadeinternet.com/2011/10/api-making-bulk-changes/#comments</comments> <pubDate>Wed, 05 Oct 2011 02:44:04 +0000</pubDate> <dc:creator>Mike Cherichetti</dc:creator> <category><![CDATA[AdvertPro]]></category> <category><![CDATA[AdvertServe]]></category> <category><![CDATA[api]]></category><guid
isPermaLink="false">http://www.renegadeinternet.com/?p=302</guid> <description><![CDATA[The Problem Your advertiser has just e-mailed to inform you that they have acquired a shorter domain name. They would like you to change all of their ads to redirect to the new, shorter domain name. So, you log in to AdvertPro, go the media listing, filter it by their advertiser account and as you ...]]></description> <content:encoded><![CDATA[<h2>The Problem</h2><p>Your advertiser has just e-mailed to inform you that they have acquired a shorter domain name.  They would like you to change all of their ads to redirect to the new, shorter domain name.  So, you log in to AdvertPro, go the media listing, filter it by their advertiser account and as you were fearing they have around a hundred Flash banners in total.  Editing each of those media to change the redirect is not only going to be time consuming, it&#8217;s going to be error-prone because you could easily miss one of them in the process.</p><h2>API to the Rescue!</h2><p>Why not use the API to make all of the changes for you?  It can take care of them in a matter of seconds.  You just have to create a quick script that does the following:</p><ol><li>Query the API for a list of Flash banner media owned by the advertiser</li><li>Do a search/replace for the domain name on the clickTAG of each Flash banner media</li><li>Use the API to update the media with the new clickTAG value</li></ol><h2>The Solution</h2><p>Here we have a Perl script that will do a search/replace to change <i>www.xyzcorporation.com</i> to <i>www.xyz.com</i> in the <b>ClickTAG URL</b> for all Flash banners owned by the advertiser.</p><div
class="wp_syntax"><div
class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/perl -w</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Load Required Modules</span>
<span style="color: #666666; font-style: italic;">#</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> strict<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> LWP<span style="color: #339933;">::</span><span style="color: #006600;">UserAgent</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> XML<span style="color: #339933;">::</span><span style="color: #006600;">Simple</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># API Configuration -- Edit This Part</span>
<span style="color: #666666; font-style: italic;">#</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$API_BASE_URL</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;http://www.example.com&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$API_SECRET_KEY</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;5eb63bbbe01eeed093cb22bb8f5acdc3&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Advertiser Information -- Edit This Part</span>
<span style="color: #666666; font-style: italic;">#</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$ADVERTISER_ID</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$OLD_DOMAIN</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;www.xyzcorporation.com&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$NEW_DOMAIN</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;www.xyz.com&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$FLASH_TYPE_ID</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">11</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Here we set up an HTTP POST requests to query for the list</span>
<span style="color: #666666; font-style: italic;"># of Flash banner media owned by the advertiser.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># The media type for Flash banners is 11, which you will find</span>
<span style="color: #666666; font-style: italic;"># in the media API documentation.</span>
<span style="color: #666666; font-style: italic;">#</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">%query_params</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>
  <span style="color: #ff0000;">&quot;secret&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">&quot;$API_SECRET_KEY&quot;</span><span style="color: #339933;">,</span>
  <span style="color: #ff0000;">&quot;advertiser&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$ADVERTISER_ID</span><span style="color: #339933;">,</span>
  <span style="color: #ff0000;">&quot;type&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$FLASH_TYPE_ID</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$query_ua</span> <span style="color: #339933;">=</span> LWP<span style="color: #339933;">::</span><span style="color: #006600;">UserAgent</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$query_response</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$query_ua</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">post</span><span style="color: #009900;">&#40;</span>
  <span style="color: #ff0000;">&quot;$API_BASE_URL/servlet/control/api/media/query&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">\%query_params</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># If the API request was successful, parse the returned XML</span>
<span style="color: #666666; font-style: italic;"># and loop through each media.</span>
<span style="color: #666666; font-style: italic;">#</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$query_response</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">is_success</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$xml</span> <span style="color: #339933;">=</span> XMLin<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$query_response</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">decoded_content</span><span style="color: #339933;">,</span> KeyAttr <span style="color: #339933;">=&gt;</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$xml</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #0000ff;">$xml</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'media'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$media</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">@</span><span style="color: #009900;">&#123;</span> <span style="color: #0000ff;">$xml</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'media'</span><span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
      <span style="color: #666666; font-style: italic;">#</span>
      <span style="color: #666666; font-style: italic;"># Test to see if the clickTAG contains a reference to the</span>
      <span style="color: #666666; font-style: italic;"># old domain name. If it does we can replace it with the</span>
      <span style="color: #666666; font-style: italic;"># new domain name.  Then we can make another API request</span>
      <span style="color: #666666; font-style: italic;"># to update the media on the ad server with the change.</span>
      <span style="color: #666666; font-style: italic;">#</span>
&nbsp;
      <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$clicktag</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$media</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'creative'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'flash'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'clicktag'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$clicktag</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">/$OLD_DOMAIN/i</span><span style="color: #009900;">&#41;</span>
      <span style="color: #009900;">&#123;</span>
        <span style="color: #0000ff;">$clicktag</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">s/$OLD_DOMAIN/$NEW_DOMAIN/ig</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$update_ua</span> <span style="color: #339933;">=</span> LWP<span style="color: #339933;">::</span><span style="color: #006600;">UserAgent</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">%update_params</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>
          <span style="color: #ff0000;">&quot;secret&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">&quot;$API_SECRET_KEY&quot;</span><span style="color: #339933;">,</span>
          <span style="color: #ff0000;">&quot;id&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$media</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'id'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
          <span style="color: #ff0000;">&quot;flash_clicktag&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$clicktag</span>
        <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$update_response</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$update_ua</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">post</span><span style="color: #009900;">&#40;</span>
          <span style="color: #ff0000;">&quot;$API_BASE_URL/servlet/control/api/media/update&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">\%update_params</span>
        <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$update_response</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">is_success</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
          <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Updated successfully: &quot;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$media</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'name'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">.</span>
                <span style="color: #ff0000;">&quot; (ID# &quot;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$media</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'id'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">.</span> <span style="color: #ff0000;">&quot;)<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #b1b100;">else</span>
        <span style="color: #009900;">&#123;</span>
          <span style="color: #000066;">die</span> <span style="color: #0000ff;">$update_response</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">status_line</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">else</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #000066;">die</span> <span style="color: #0000ff;">$query_response</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">status_line</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div><p>Some changes are necessary at the beginning of the script to change your API base URL and your secret API key as well as the advertiser ID# and old/new domain names.</p><h2>More Solutions</h2><p>This is just a simple example of how the API can save you time by performing a repetitive task for you.  To learn more, continue reading the API chapter in the user manual: <a
href="http://www.advertpro.com/docs/2.0/html/manual/api.html" target="_top">http://www.advertpro.com/docs/2.0/html/manual/api.html</a> Remember, the API can work with any programming language!  I personally just like Perl.  Feel free to use Java, PHP, Ruby or whatever you&#8217;re most comfortable coding in.</p> ]]></content:encoded> <wfw:commentRss>http://www.renegadeinternet.com/2011/10/api-making-bulk-changes/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>API Security Best Practices</title><link>http://www.renegadeinternet.com/2011/09/api-security-best-practices/</link> <comments>http://www.renegadeinternet.com/2011/09/api-security-best-practices/#comments</comments> <pubDate>Thu, 22 Sep 2011 15:53:36 +0000</pubDate> <dc:creator>Mike Cherichetti</dc:creator> <category><![CDATA[AdvertPro]]></category> <category><![CDATA[AdvertServe]]></category> <category><![CDATA[api]]></category> <category><![CDATA[security]]></category><guid
isPermaLink="false">http://www.renegadeinternet.com/?p=296</guid> <description><![CDATA[Wait&#8230; There&#8217;s an API? For those of you that missed the announcement back in April, both AdvertPro and AdvertServe now have a complete data management, code generation and reporting API. What can you do with the API? Just about anything that you can do with the control panel. In fact, our control panel is running ...]]></description> <content:encoded><![CDATA[<h2>Wait&#8230; There&#8217;s an API?</h2><p>For those of you that missed the announcement back in April, both AdvertPro and AdvertServe now have a complete data management, code generation and reporting API.  What can you do with the API?  Just about anything that you can do with the control panel.  In fact, our control panel is running on top of the API, which means you could even go so far as to build your own.  More commonly the API can be used for integration with other systems and automation of bulk operations.</p><p>For more information, please visit our <a
href="http://www.renegadeinternet.com/developers/" target="_blank">developers</a> page to access the API documentation.</p><h2>Protect Your Secret Key</h2><p>While it may be tempting to use JavaScript to interface directly with the API from a web page it&#8217;s not a safe practice.  Especially if the page is located on a publicly accessible web site.  All someone needs to do is view the source code of the page and they can easily steal your secret API key and start wreaking havoc on your data!</p><p>We&#8217;re not saying to avoid using JavaScript.  By all means use it.  Just make sure you&#8217;re doing it in a safe way.</p><ol><li>Create a script using your language of choice (Java, Perl, PHP, Ruby, etc&#8230;) on your server that makes the request to the API and outputs its response.</li><li>Your secret API key should be stored in the script or in a file or environment variable that it can read.</li><li>Restrict file system access to your script or other file(s) where your secret API key is stored to only the necessary system users.</li><li>Make your JavaScript interface with your script rather than using the API directly.</li></ol><p>This accomplishes the goal of keeping your API key a secret because it does not need to be transmitted to the client.</p><h2>Restricting API Access</h2><p>The API settings allow you to restrict access by IP address.  This should be used to permit only the systems that need to use the API to connect to it.  Like the IP address targeting in AdvertPro it supports range matching.  For example, if you enter <strong>192.168.1.</strong> it will allow access from <em>192.168.1.0</em> through <em>192.168.1.255</em> or if you need to target a smaller group of IP addresses entering <strong>192.168.1.[8-16]</strong> would only allow access from <em>192.168.1.8</em> through <em>192.168.1.16</em>.  Just make sure to only put one IP address or range per line in the box when entering them.</p><h2>Preventing Eavesdropping</h2><p>Even though you are restricting access by IP address and not exposing your secret API key to the client, it is still a concern that data is being transmitted to and from the AdvertPro or AdvertServe servers over the public Internet.  It might hop over 20+ servers before it gets there.  If any one of those servers along the way is compromised an attacker could capture your secret API key and more importantly all of the data that you&#8217;re transmitting back and forth.</p><p>What can you do to stop that?  The same thing you do to protect financial transactions: use HTTPS with an SSL certificate.  This encrypts the data going back and forth between the API so that it can&#8217;t be read by anyone who might be attempting to listen in.</p><p>With AdvertServe getting an SSL certificate is easy.  Just <a
href="http://www.renegadeinternet.com/contact-us/">contact support</a> and ask them to set up SSL for your account.  It only takes a few hours to set up and it&#8217;s only $10/month!  This will also secure your control panel and enable you to serve ads to secure pages as a bonus.</p><p>AdvertPro users will need to purchase and install an SSL certificate with Tomcat or Apache if they&#8217;re using mod_proxy_ajp.  Our recommendation is the <a
href="http://www.godaddy.com/ssl/ssl-certificates.aspx?ci=8979" target="_blank">Standard SSL</a> certificate from GoDaddy.  It&#8217;s only $69.99/year and it&#8217;s guaranteed compatible with Tomcat, which is something I can&#8217;t say for many other SSL vendors.  Many of them claim their SSL certificates will work with Java applications but they don&#8217;t and SSL certificates are generally non-refundable.  Don&#8217;t say you weren&#8217;t warned!</p><h2>Stay Tuned!</h2><p>In the coming weeks I will be writing several articles about using the API for various purposes.  Security comes first though.  Some of the things that I plan on writing about will include creating advertiser and publisher signup forms, bulk zone creation, bulk changes to campaigns and media and how to create a script to e-mail PDF reports to you.  If you have anything else that you&#8217;d like to see an example of, please comment!</p> ]]></content:encoded> <wfw:commentRss>http://www.renegadeinternet.com/2011/09/api-security-best-practices/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using apc
Page Caching using apc
Database Caching using apc
Object Caching 605/739 objects using apc

Served from: www.renegadeinternet.com @ 2012-05-17 20:15:06 -->
