<?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"
	>

<channel>
	<title>screen-scrapeable</title>
	<atom:link href="http://blog.screen-scraper.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.screen-scraper.com</link>
	<description>Thoughts, tips, and updates on screen-scraping</description>
	<pubDate>Wed, 14 Jul 2010 15:50:44 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Update recommended for 5.0 users</title>
		<link>http://blog.screen-scraper.com/2010/07/14/update-recommended-for-50-users/</link>
		<comments>http://blog.screen-scraper.com/2010/07/14/update-recommended-for-50-users/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 15:50:44 +0000</pubDate>
		<dc:creator>Todd Wilson</dc:creator>
		
		<category><![CDATA[Updates]]></category>

		<guid isPermaLink="false">http://blog.screen-scraper.com/?p=102</guid>
		<description><![CDATA[Well, we tested and tested, but it looks like a little bug slipped by us in 5.0 that&#8217;s probably worth an upgrade.  We&#8217;ve just released 5.0.1a that contains a fix for it, and we recommend that 5.0 users upgrade.  To do that you&#8217;ll need to allow upgrading to unstable versions.  Here&#8217;s a FAQ on how [...]]]></description>
			<content:encoded><![CDATA[<p>Well, we tested and tested, but it looks like a little bug slipped by us in 5.0 that&#8217;s probably worth an upgrade.  We&#8217;ve just released 5.0.1a that contains a fix for it, and we recommend that 5.0 users upgrade.  To do that you&#8217;ll need to allow upgrading to unstable versions.  <a href="http://community.screen-scraper.com/FAQ/NoUpdates">Here&#8217;s a FAQ</a> on how to go about that and upgrade.  Not to worry about the stability of 5.0.1a&#8211;it contains this bug fix as well as a few other minor ones.  It should be completely safe to upgrade.  Anyone who installs 5.0 fresh will get the bug fix.</p>
<p>For those interested, the bug fix addresses an issue where line numbers reported in error messages will be offset by two lines.  That is, if your script has an error on line 100, the error message will report line 102 instead.  The bug fix simply corrects this so that the correct line number of the error is reported.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.screen-scraper.com/2010/07/14/update-recommended-for-50-users/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Version 5.0 of screen-scraper released!  And it&#8217;s on sale!!!</title>
		<link>http://blog.screen-scraper.com/2010/07/06/version-50-of-screen-scraper-released-and-its-on-sale/</link>
		<comments>http://blog.screen-scraper.com/2010/07/06/version-50-of-screen-scraper-released-and-its-on-sale/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 19:54:31 +0000</pubDate>
		<dc:creator>Todd Wilson</dc:creator>
		
		<category><![CDATA[Miscellaneous]]></category>

		<category><![CDATA[Updates]]></category>

		<guid isPermaLink="false">http://blog.screen-scraper.com/?p=101</guid>
		<description><![CDATA[Okay, that was probably too many exclamation points in the title.  It&#8217;s with good reason, though.  Version 5.0 represents a major upgrade in screen-scraper&#8217;s functionality (take a glance at the release notes to see what I mean).  Not only have we made all kinds of bug fixes, but there are lots of enhancements to the [...]]]></description>
			<content:encoded><![CDATA[<p>Okay, that was probably too many exclamation points in the title.  It&#8217;s with good reason, though.  Version 5.0 represents a major upgrade in screen-scraper&#8217;s functionality (take a glance at the <a href="http://screen-scraper.com/release_notes/screen-scraper_release_notes.php#pr5.0">release notes</a> to see what I mean).  Not only have we made all kinds of bug fixes, but there are lots of enhancements to the user interface as well as completely new functionality.</p>
<p>Along with this release we&#8217;ve also done some significant revamping of our docs, which we&#8217;ll continue to do.  We want to make sure screen-scraper is easier to learn for the beginner and quicker to use for the seasoned veteran.</p>
<p>And on top of all of that it&#8217;s on sale!  Until August 15 of this year you can get the Enterprise Edition for $800 off and the Professional Edition for $150 off.  We&#8217;ll be raising prices back up after that date, so get it while it&#8217;s hot.  Interested in purchasing?  <a href="http://www.screen-scraper.com/registration/register.php">Click here</a> to be taken to our registration page.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.screen-scraper.com/2010/07/06/version-50-of-screen-scraper-released-and-its-on-sale/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Comparison of Web-scraping software</title>
		<link>http://blog.screen-scraper.com/2010/06/28/comparison-of-web-scraping-software/</link>
		<comments>http://blog.screen-scraper.com/2010/06/28/comparison-of-web-scraping-software/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 21:55:25 +0000</pubDate>
		<dc:creator>scottw</dc:creator>
		
		<category><![CDATA[Miscellaneous]]></category>

		<category><![CDATA[comparison]]></category>

		<category><![CDATA[competition]]></category>

		<category><![CDATA[data extraction]]></category>

		<category><![CDATA[screen-scraping]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[web harvesting]]></category>

		<guid isPermaLink="false">http://blog.screen-scraper.com/?p=100</guid>
		<description><![CDATA[

View full-size
]]></description>
			<content:encoded><![CDATA[<p><iframe width='475' height='500' frameborder='0' scrolling='auto' src='https://spreadsheets.google.com/pub?key=0AsaY3Pb1lTh1dERtbWtTN0U3REgtYlNld0stV0NCV1E&#038;hl=en&#038;output=html&#038;widget=true'></iframe></p>
<p>
<a href="http://spreadsheets.google.com/ccc?key=0AsaY3Pb1lTh1dERtbWtTN0U3REgtYlNld0stV0NCV1E&#038;hl=en&#038;authkey=CIXvmagC">View full-size</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.screen-scraper.com/2010/06/28/comparison-of-web-scraping-software/feed/</wfw:commentRss>
		</item>
		<item>
		<title>To Iterate is Human, to Recurse, Divine</title>
		<link>http://blog.screen-scraper.com/2010/04/15/to-iterate-is-human-to-recurse-divine/</link>
		<comments>http://blog.screen-scraper.com/2010/04/15/to-iterate-is-human-to-recurse-divine/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 16:08:26 +0000</pubDate>
		<dc:creator>Todd Wilson</dc:creator>
		
		<category><![CDATA[Tips]]></category>

		<category><![CDATA[Updates]]></category>

		<guid isPermaLink="false">http://blog.screen-scraper.com/?p=99</guid>
		<description><![CDATA[Well, that&#8217;s actually not always true.  Take a quick look at this blog posting here.  The fundamental issue described by that posting is one of recursion vs. iteration.  When recursion is used (a page calls a page which calls a page&#8230;) objects tend to get stacked up, and subsequently fill up memory.  When iteration is [...]]]></description>
			<content:encoded><![CDATA[<p>Well, that&#8217;s actually not always true.  Take a quick look at <a href="http://blog.screen-scraper.com/2008/07/07/large-data/">this blog posting here</a>.  The fundamental issue described by that posting is one of recursion vs. iteration.  When recursion is used (a page calls a page which calls a page&#8230;) objects tend to get stacked up, and subsequently fill up memory.  When iteration is used objects are properly cleaned up so memory doesn&#8217;t become a problem.  The trouble is, this condition is often hard to detect, and unless you&#8217;re thinking about it when you&#8217;re building your scraping session, you may cause it without realizing it.</p>
<p>An astute screen-scraper user yesterday suggested a solution to this that is both simple and effective.  In the case described in the <a href="http://blog.screen-scraper.com/2008/07/07/large-data/">blog posting</a> you end up with a big stack of scripts, all of which have references to objects, which causes the OutOfMemoryError.  The number of scripts on the stack can be viewed in the breakpoint window, and in version 4.5.45a we added a method that will allow you to see how many scripts are on the stack from within a script:</p>
<p>session.getNumScriptsOnStack()</p>
<p>You can check this number as often as you&#8217;d like.  As it grows it could mean trouble, so you can respond appropriately in your scraping session.  We&#8217;ve also added a failsafe mechanism inside of screen-scraper that will hopefully save you from an OutOfMemoryError.  If too many scripts are pushed on the stack your scraping session will be stopped and the following message will be output to the log:</p>
<p>ERROR&#8211;halting the scraping session because the maximum number of scripts allowed on the stack was reached.</p>
<p>You can control the maximum number of scripts allowed on the stack by invoking this method at any time:</p>
<p>session.setMaxScriptsOnStack( 50 )</p>
<p>Set that number to whatever you&#8217;d like.</p>
<p>By design screen-scraper provides a lot of flexibility and power in the data extraction process, but this same power can also result in our shooting ourselves in the foot on occasion.  The inclusion of this new mechanism will hopefully help some to avoid this problem down the road.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.screen-scraper.com/2010/04/15/to-iterate-is-human-to-recurse-divine/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Resume points</title>
		<link>http://blog.screen-scraper.com/2010/04/15/resume-points/</link>
		<comments>http://blog.screen-scraper.com/2010/04/15/resume-points/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 13:00:22 +0000</pubDate>
		<dc:creator>jason</dc:creator>
		
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://blog.screen-scraper.com/?p=98</guid>
		<description><![CDATA[Sometimes a long scrape will be stopped mid-run by a system crash, power surge, or bad mojo.  Many times there is nothing to do but to restart, but sometimes there is a way to pick up (pretty close to) where you left off.  You need to include some extra logic, but it is often worthwhile.
Let&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes a long scrape will be stopped mid-run by a system crash, power surge, or bad mojo.  Many times there is nothing to do but to restart, but sometimes there is a way to pick up (pretty close to) where you left off.  You need to include some extra logic, but it is often worthwhile.<br />
Let&#8217;s say where looking a site that lists hundred of LOCATIONS, and inside each there is a listing of COMPANIES, and the data we&#8217;re after is listed in each COMPANY.</p>
<p>I&#8217;m going to make a script that runs at the beginning of the scrape to check for a file that contains the last scraping state.<span id="more-98"></span><br />
<code><br />
inputFile = "resume_" + session.getName() + ".txt";<br />
File file = new File(inputFile);<br />
if (file.exists())<br />
{<br />
session.loadVariables(inputFile); // This may set several variables, but we'll pay no attention to most<br />
session.log("==============================================================");<br />
session.log("Scrape is set to resume at " + session.getVariable("RESUME_AT_LOCATION") + " and " + session.getVariable("RESUME_AT_COMPANY");<br />
session.log("==============================================================");<br />
}<br />
</code><br />
If the file isn&#8217;t there, that&#8217;s good.  I&#8217;ll just scrape the list of LOCATIONS, and go through all of them.</p>
<p>If the file is there, then I change a couple of variable names so I can throw them away when I&#8217;m done with them.</p>
<p>Now I get to the list of companies, and I run this script on each pattern application:<br />
<code><br />
// Function to write the restore point and scrape<br />
scrapeLocation(location)<br />
{<br />
// Set RESUME_AT_LOCATION to write out<br />
session.setVariable("RESUME_AT_LOCATION", location);<br />
session.saveVariables("resume_" + session.getName() + ".txt");<br />
session.setVariable("RESUME_AT_LOCATION", null); // We don't want this set next time the loop is run<br />
session.scrapeFile("Single location");<br />
}<br />
if (session.getVariable("RESUME_AT_LOCATION")==null)<br />
{<br />
// No resume at location set, so scraping<br />
scrapeLocation(dataRecord.get("LOCATION"));<br />
}<br />
else<br />
{<br />
// There is a resume at location set, so compare<br />
if (dataRecord.get("LOCATION").equals(session.getVariable("RESUME_AT_LOCATION")))<br />
{<br />
// Matches, so scrape<br />
scrapeLocation(dataRecord.get("LOCATION"));<br />
}<br />
else<br />
{<br />
session.log("---Skipping this location: " + dataRecord.get("LOCATION"));<br />
session.log("-----Looking to resume at: " + session.getVariable("RESUME_AT_LOCATION"));<br />
}<br />
}<br />
</code><br />
Now when the &#8220;RESUME_AT_LOCATION&#8221; is set at the beginning of a scrape, it will skip all locations until it finds a match.  It will then scrape that location, and clear the variable so it will get the rest of the locations.</p>
<p>You could copy this same logic into the COMPANIES.</p>
<p>Finally, when the scrape completes naturally, we should delete the file with the resume point since 1) you&#8217;re now at the last location, and 2) you&#8217;re done &#8230; nothing to resume.  Without that file, the scrape will start fresh next time.<br />
<code><br />
// Delete the file with the resume point<br />
outputFile = "resume_" + session.getName() + ".txt";<br />
File file = new File(outputFile);<br />
file.delete();<br />
session.log("Resume point deleted");<br />
</code><br />
You can see more on the loadVariables and saveVariable on the <a href="http://community.screen-scraper.com/API">API Page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.screen-scraper.com/2010/04/15/resume-points/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tidy Time</title>
		<link>http://blog.screen-scraper.com/2010/04/09/tidy-time/</link>
		<comments>http://blog.screen-scraper.com/2010/04/09/tidy-time/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 23:04:31 +0000</pubDate>
		<dc:creator>Todd Wilson</dc:creator>
		
		<category><![CDATA[Updates]]></category>

		<guid isPermaLink="false">http://blog.screen-scraper.com/?p=97</guid>
		<description><![CDATA[So lately we&#8217;ve been experimenting with different tidiers in the latest alpha versions of screen-scraper.  This is the little utility that will clean up malformed HTML, making extraction easier.  For some time we&#8217;ve used a library called JTidy to handle this, which has worked quite well, but does have a couple of problems.  First, at [...]]]></description>
			<content:encoded><![CDATA[<p>So lately we&#8217;ve been experimenting with different tidiers in the latest alpha versions of screen-scraper.  This is the little utility that will clean up malformed HTML, making extraction easier.  For some time we&#8217;ve used a library called JTidy to handle this, which has worked quite well, but does have a couple of problems.  First, at times it simply fails to tidy the HTML.  If you&#8217;ve been using screen-scraper for a while you&#8217;ve likely seen a message indicating this in the log.  This isn&#8217;t too big of a deal, but can be a bit of a hassle.  Second, in very rare instances we&#8217;ve actually found that it will omit portions of an HTML page which are especially malformed.  This is definitely a problem and can make debugging difficult.</p>
<p>In order to address the issues above we&#8217;ve been trying out a few other tidiers&#8211;NekoHTML and Jericho.  We&#8217;ve actually already found issues with NekoHTML, so Jericho looks to be the favorite as of right now.  Both will still require some experimentation, though, so please use them at your own risk for now.  Once we&#8217;ve put them both through the paces we&#8217;ll likely settle on one as the recommended default.  And not to worry about any scrapeable files that are already using JTidy&#8211;they&#8217;ll stay just as they are.  At some point, though, for any new scrapeable files, you might notice a different tidier as the default.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.screen-scraper.com/2010/04/09/tidy-time/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Exporting &#038; importing scraping sessions in 4.5.42a</title>
		<link>http://blog.screen-scraper.com/2010/04/06/exporting-importing-scraping-sessions-in-4542a/</link>
		<comments>http://blog.screen-scraper.com/2010/04/06/exporting-importing-scraping-sessions-in-4542a/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 23:12:14 +0000</pubDate>
		<dc:creator>Todd Wilson</dc:creator>
		
		<category><![CDATA[Miscellaneous]]></category>

		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://blog.screen-scraper.com/?p=96</guid>
		<description><![CDATA[We try hard to maintain backward compatibility as much as possible, but unfortunately it can&#8217;t always be done.  If you recently upgraded to 4.5.42a you may have noticed that scraping sessions that are exported from that version don&#8217;t import correctly into an alpha version prior to it.  This was a result of the alterations to [...]]]></description>
			<content:encoded><![CDATA[<p>We try hard to maintain backward compatibility as much as possible, but unfortunately it can&#8217;t always be done.  If you recently upgraded to 4.5.42a you may have noticed that scraping sessions that are exported from that version don&#8217;t import correctly into an alpha version prior to it.  This was a result of the alterations to the &#8220;tidy HTML&#8221; functionality that were implemented in that version.  As such, this is one case of backward-compatibility where you&#8217;re going to have to be careful.  As of this version (and later versions) if you export scraping sessions from screen-scraper you should only import them into instances of screen-scraper also running version 4.5.42a or later.  Unfortunately, this is one case where it was impossible to maintain the compatibility with older versions, so please take note.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.screen-scraper.com/2010/04/06/exporting-importing-scraping-sessions-in-4542a/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Capping response length</title>
		<link>http://blog.screen-scraper.com/2010/03/12/capping-response-length/</link>
		<comments>http://blog.screen-scraper.com/2010/03/12/capping-response-length/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 23:42:46 +0000</pubDate>
		<dc:creator>Todd Wilson</dc:creator>
		
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://blog.screen-scraper.com/?p=95</guid>
		<description><![CDATA[Once in a while when you&#8217;re scraping you may request a file that ends up being really large, but you actually only need to pull data from the top portion of the file.  If it&#8217;s a big file it can end up slowing down the scraping process quite a bit.  Not too long ago (somewhere [...]]]></description>
			<content:encoded><![CDATA[<p>Once in a while when you&#8217;re scraping you may request a file that ends up being really large, but you actually only need to pull data from the top portion of the file.  If it&#8217;s a big file it can end up slowing down the scraping process quite a bit.  Not too long ago (somewhere around version 4.5.20a, I think) we added a method to deal with just such cases:</p>
<p>scrapeableFile.setMaxResponseLength( int maxKBytes )</p>
<p>This tells screen-scraper to only download a given number of kilobytes at the beginning of the file.  You would want to run this method in a script that gets invoked before a file is scraped.  For example, if your script contained this line:</p>
<p>scrapeableFile.setMaxResponseLength( 50 );</p>
<p>screen-scraper would download the first 50K of the file, cut it off, then continue on.</p>
<p>If the speed of a scraping session is especially critical this can also be a great way to trim off quite a bit of download time.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.screen-scraper.com/2010/03/12/capping-response-length/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Using OCR with screen-scraper</title>
		<link>http://blog.screen-scraper.com/2010/03/11/using-ocr-with-screen-scraper/</link>
		<comments>http://blog.screen-scraper.com/2010/03/11/using-ocr-with-screen-scraper/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 18:47:45 +0000</pubDate>
		<dc:creator>scottw</dc:creator>
		
		<category><![CDATA[Tips]]></category>

		<category><![CDATA[exec]]></category>

		<category><![CDATA[external]]></category>

		<category><![CDATA[imagemagick]]></category>

		<category><![CDATA[java.io]]></category>

		<category><![CDATA[ocr]]></category>

		<category><![CDATA[programs]]></category>

		<category><![CDATA[runtime]]></category>

		<category><![CDATA[tesseract]]></category>

		<guid isPermaLink="false">http://blog.screen-scraper.com/?p=94</guid>
		<description><![CDATA[Within screen-scraper you have the ability to call outside programs directly from your scripts.  The following is an example scraping session that makes use of Tesseract OCR and Imagemagick in order to take an image from the internet and attempt to read the text of the image.
As is, the scraping session is intended to run [...]]]></description>
			<content:encoded><![CDATA[<p>Within screen-scraper you have the ability to call outside programs directly from your scripts.  The following is an example scraping session that makes use of <a href="http://code.google.com/p/tesseract-ocr/wiki/ReadMe">Tesseract OCR</a> and <a href="http://www.imagemagick.org/script/binary-releases.php">Imagemagick</a> in order to take an image from the internet and attempt to read the text of the image.</p>
<p>As is, the scraping session is intended to run on Linux.  However, it is possible to run both dependent programs under Windows either directly or using <a href="http://www.cygwin.com/">Cygwin</a>.</p>
<p><strong>To use:</strong></p>
<p>Download and import the following scraping session.</p>
<p><a href="http://community.screen-scraper.com/samples/ocr">http://community.screen-scraper.com/samples/ocr</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.screen-scraper.com/2010/03/11/using-ocr-with-screen-scraper/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How we use version control</title>
		<link>http://blog.screen-scraper.com/2010/02/04/how-we-use-version-control/</link>
		<comments>http://blog.screen-scraper.com/2010/02/04/how-we-use-version-control/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 17:20:22 +0000</pubDate>
		<dc:creator>Todd Wilson</dc:creator>
		
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://blog.screen-scraper.com/?p=90</guid>
		<description><![CDATA[Any reasonably-sized software development project benefits greatly from some type of version control system, such as CVS, Subversion, or Git.  Internally we use Subversion, and I thought it might be helpful to share a bit how we go about it.  What I describe here is primarily applicable to a project where you have many scrapes [...]]]></description>
			<content:encoded><![CDATA[<p>Any reasonably-sized software development project benefits greatly from some type of version control system, such as CVS, Subversion, or Git.  Internally we use Subversion, and I thought it might be helpful to share a bit how we go about it.  What I describe here is primarily applicable to a project where you have many scrapes being developed by multiple developers, but we even use Subversion for small projects handled by a single developer.</p>
<p>Each developer on a project will have his own instance of screen-scraper, but may be using some scraping sessions and scripts that are also used by other developers.  Generally speaking, though, a given developer is in charge of a certain set of scraping sessions, and we have a series of general scripts that might be used by all developers.  These general scripts can be edited by anyone, but when edits are made everyone needs to be notified so that they can update their own instances of screen-scraper with the latest scripts.  Each time a new scraping session is created or an existing scraping session is modified, it gets exported then committed to the repository.  This isn&#8217;t quite as automated as some IDE&#8217;s allow, so developers need to be conscientious of their work so that the export and commit at the appropriate times.</p>
<p>We often also make use of debug scripts, which each developer will generally cater to his own work.  It&#8217;s likely that he won&#8217;t want these scripts overwritten by  those of other developers, so for each of these scripts he need only un-check the &#8220;Overwrite this script on import&#8221; box in the workbench to protect a such a script.</p>
<p>We also typically keep a separate folder in our version control repository for the scripts that are general to a series of scraping sessions.  It&#8217;s possible that a particular developer has a slightly out-dated script, and when he exports that script may go with the scraping session.  To keep it from getting imported into a production environment we&#8217;ll copy all of the general scripts (which are always kept current) into screen-scraper&#8217;s &#8220;import&#8221; folder along with the scraping session(s) to be deployed.  screen-scraper will always import scraping sessions first, then scripts.  That way you can guarantee that the current scripts don&#8217;t get overwritten.</p>
<p>Because screen-scraper doesn&#8217;t use a purely file-based approach to persist its objects, version control can require another step or two beyond what you&#8217;d normally find in a modern-day IDE.  Our experience has been, though, that once developers get accustomed to it it&#8217;s not too burdensome.  That said, we have plans in the near future to add features that will make working with version control systems even easier with screen-scraper.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.screen-scraper.com/2010/02/04/how-we-use-version-control/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
