<?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>You Give Love a Bad (Dot) Name &#187; Web Stats</title>
	<atom:link href="http://yougiveloveabad.name/archives/category/web-stats/feed/" rel="self" type="application/rss+xml" />
	<link>http://yougiveloveabad.name</link>
	<description>Not quite shot through the heart</description>
	<lastBuildDate>Mon, 06 Jun 2011 17:57:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Funnel Web Disappearing/Crashing Fix</title>
		<link>http://yougiveloveabad.name/archives/2008/07/14/funnel-web-disappearingcrashing-fix/</link>
		<comments>http://yougiveloveabad.name/archives/2008/07/14/funnel-web-disappearingcrashing-fix/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 21:55:05 +0000</pubDate>
		<dc:creator>JC</dc:creator>
				<category><![CDATA[Web Stats]]></category>

		<guid isPermaLink="false">http://yougiveloveabad.name/?p=19</guid>
		<description><![CDATA[Funnel Web Analyzer is an excellent web log analyzer by Quest that we've been using since before Quest bought it. It used to be fairly expensive, but they decided to stop development on it, and at that point released it for free. It runs on Windows, OSX, Linux, and Solaris. It hasn't been updated in [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.quest.com/funnel-web-analyzer/">Funnel Web Analyzer</a> is an excellent web log analyzer by Quest that we've been using since before Quest bought it. It used to be fairly expensive, but they decided to stop development on it, and at that point released it for free. It runs on Windows, OSX, Linux, and Solaris. It hasn't been updated in a while, officially, but you can pick up an <a href="http://yougiveloveabad.name/wp-content/uploads/2008/07/fwasettings.txt">updated settings file</a> that will support more recent browsers and search engines (and modify it yourself for anything you want to track that's missing).</p>
<p>As I said, we've been using it in my office for  years, but in the last couple of months it started failing on me in a weird way. It would just silently crash. No message. Nada. Just one minute it's there, the next it's gone. Part of that I tracked down to some settings in Windows system preferences.. but there was no good indication of *why* it crashed. I knew it wasn't because of the volume of data passing through it because it handled years at a time previously without complaint. Very odd.</p>
<p>Long story short, back in late January I switched our sites from having log files that roll at X megs (50 in some places, 500 in others), to log files that roll once per hour. That was the problem &#8212; either funnel web itself or the process that unzips .gz files cannot handle more than a few thousand log files at once.</p>
<p>So, how to fix it? Not sure if I picked the best possible way, but it seems to have done the trick. Here's what I did:</p>
<ol>
<li>Changed all the servers to log by day instead of hour, so I don't have to deal with this again in a few months</li>
<li>uncompressed the files into a subfolder</li>
<li>combined the log files into a monthly file using DOS &#8212; copy 2008-www1-ex0801*.log 2008-www1-ex08.log</li>
<li>If the resultant log files are over 1.2 gigs (the max <a href="http://www.textpad.com">TextPad</a> will open), run the freeware <a href="http://www.systemwidgets.com/Downloads/FreeDownloads/TextFileSplitter/tabid/78/Default.aspx">TextSplitter</a> tool to split them into chunks of  around 900 megs each</li>
<li>Open the first file in TextPad, copy the log file header lines to another document.</li>
<li>regular expression replacement to strip out all the header lines: <strong>^\#.*\n</strong></li>
<li>Tools &gt; Sort &gt; From 1 Length 20 Ascending Case Insensitive (in case the merge put some of the files in in the wrong order)</li>
<li>Check for any lines from the wrong month, drag those out into a new document if they exist</li>
<li>Paste in the header at the beginning, update the date/time stamp there to match the first record if needed</li>
<li>Save and move to the next file. Rinse. Repeat. Be sure to drag/paste any extra hours of data you might have excised from earlier months.</li>
</ol>
<p>At the end of this, instead of having around 7000 files for one 2-server cluster, I had around 20-30 depending on the site. Going forward of course, this number will be larger since I have it set to 1 file per day. But at any rate, I was then able to easily run my reports and can remain confident that the scheduler will begin to do its job properly again.</p>
<p>Hope that helps someone out there. <img src='http://yougiveloveabad.name/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://yougiveloveabad.name/archives/2008/07/14/funnel-web-disappearingcrashing-fix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Assorted Coldfusion stuff I need occasionally and always forget.</title>
		<link>http://yougiveloveabad.name/archives/2008/06/04/assorted-coldfusion-stuff-i-need-occasionally-and-always-forget/</link>
		<comments>http://yougiveloveabad.name/archives/2008/06/04/assorted-coldfusion-stuff-i-need-occasionally-and-always-forget/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 22:48:51 +0000</pubDate>
		<dc:creator>JC</dc:creator>
				<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Web Stats]]></category>

		<guid isPermaLink="false">http://yougiveloveabad.name/?p=9</guid>
		<description><![CDATA[I keep this in a file on my desktop.. may as well put it here, too&#8230; maybe it'll help someone someday. CRLF: cfset crlf = #chr(13)#&#38;#chr(10)# Variable Variables: cfset varvar = "MyVarName" cfset "#varvar#" = "whatever" #evaluate(varvar)# outputs "whatever", #varvar# outputs "MyVarName" Existence/Type Test: StructKeyExists() IsDefined() (isDefined fails on complex vars with[], use dot notation) [...]]]></description>
			<content:encoded><![CDATA[<p>I keep this in a file on my desktop.. may as well put it here, too&#8230; maybe it'll help someone someday.</p>
<p><strong>CRLF:</strong><br />
cfset crlf = #chr(13)#&amp;#chr(10)#</p>
<p><strong>Variable Variables:</strong><br />
cfset varvar = "MyVarName"<br />
cfset "#varvar#" = "whatever"<br />
#evaluate(varvar)# outputs "whatever", #varvar# outputs "MyVarName"</p>
<p><strong>Existence/Type Test:</strong><br />
StructKeyExists() IsDefined() (isDefined fails on complex vars with[], use dot notation) IsArray() IsStruct() IsQuery() IsSimpleValue() IsNumeric() IsDate() IsBinary() IsBinary()</p>
<p><strong>CFHTTP Connection Failure</strong><br />
Gzip bug &#8212; add this:<br />
cfhttpparam type="Header" name="Accept-Encoding" value="deflate;q=0"<br />
cfhttpparam type="Header" name="TE" value="deflate;q=0"<br />
Also check for redirect="yes|no" &#8212; sometimes redirect needs to be set to no</p>
<p><strong>Query Variables:</strong><br />
query_name.currentRow, query_name.columnList, query_name.RecordCount, result_name.sql</p>
<p><strong>Query of Queries:</strong><br />
cfquery dbtype="query" name="foo" &#8212; select * from query_name</p>
<p><strong>CFDirectory Performance:</strong><br />
listinfo="name" significantly improves performance, if you don't need other columns</p>
<p><strong>CFQueryParam:</strong><br />
Null="#YesNoFormat(NOT LEN(MyVar))#" will make the value NULL instead of empty<br />
List="yes" will internally CFParam all list values so you can do WHERE ID IN (cfqueryparam&#8230; list="yes") and get a valid list format. Add separator = '|' instead of delimiter='|' &#8212; for some reason this tag is different than all the other ones.<br />
CF_SQL_TIMESTAMP &#8212; datetime, smalldatetime (use CreateODBCDateTime() for this)<br />
CF_SQL_CHAR &#8212; char, nchar, unique identifier<br />
CF_SQL_VARCHAR &#8212; varchar, nvarchar, sysname<br />
CF_SQL_LONGVARCHAR &#8212; text, ntext<br />
CF_SQL_NUMERIC &#8212; numeric (scale='2' for 2 decimal places)<br />
CF_SQL_INTEGER &#8212; int<br />
CF_SQL_SMALLINT &#8212; smallint<br />
CF_SQL_TINYINT &#8212; tinyint<br />
CF_SQL_BIT &#8212; bit<br />
CF_SQL_FLOAT &#8212; float<br />
CF_SQL_DECIMAL &#8212; decimal, money, smallmoney (scale='2' for 2 decimal places)<br />
CF_SQL_BINARY &#8212; binary, timestamp</p>
<p><strong>Merge Log Files (Not CF, but useful!)</strong><br />
copy *.log merged.log</p>
<p><strong>CF Regex:</strong><br />
rereplace(foo, "[[:space:]]+", " ", "all") — turns all whitespace into single space<br />
rereplace(foo, ".*?", "", "all") — strips all HTML tags (probably fails if they span multiple lines)</p>
<p>(updated July 16)</p>
]]></content:encoded>
			<wfw:commentRss>http://yougiveloveabad.name/archives/2008/06/04/assorted-coldfusion-stuff-i-need-occasionally-and-always-forget/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

