Monday, March 26, 2007
The coolest log parser
Once again Microsoft has come up with an awesome and very smart utility called Log Parser. It uses SQL-like syntax to allow you to query many kinds of sources. Example sources are web logs from IIS, EventLog in Windows, Active Directory, LDAP, etc.
Here is how I got hits on a specific page in my application by month:
LogParser "SELECT TO_STRING(date, 'yyyy-MM') as MONTH, COUNT(*) AS Hits FROM <FrontLine> where cs-uri-stem = '/KnowledgeBase.aspx' GROUP BY TO_STRING(date, 'yyyy-MM'), cs-uri-stem ORDER BY TO_STRING(date, 'yyyy-MM') DESC"
In case that wasn't cool enough, you can output results to a chart (file), Database, Excel, etc.
Here is where you can get the latest binary from:
http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07&displaylang=en
Here is a good example for web logs usage:
http://geekswithblogs.net/woodenshoe/archive/2005/09/17/54194.aspx
Here is how to use it from C#:
http://www.codeproject.com/csharp/SimpleLogParse.asp
This seems to be a good tutorial:
http://www.microsoft.com/technet/community/columns/scripts/sg0105.mspx
Wednesday, March 14, 2007
Waiting in SQL 2005
Have you ever needed to wait in a stored procedure? Well here is how. Declare @Counter as int
Set @Counter = 0 while @Counter < 3 BEGIN print @Counter Set @Counter = @Counter + 1 WAITFOR DELAY '00:00:02' -- waits for 2 seconds before next line is executed. END
Thursday, March 8, 2007
ASP.Net Custom Server Control Lessons
When writing a custom server control in ASP.Net it is pretty straight forward. It is common to put the output of the control right in the Render() method. Be aware this is very late in the control and page lifecycle. What that means if you try to modify the value of another control on the page it will appear to work in code, but the changes will not be shown in the browser. The reason is that the page is being rendered, it is too late to change .net server control values.
So, it is easy to do put the "render" code in OnLoad(). Here is an example.
protected
override void OnLoad(EventArgs e) { // do "rendering here" if you need to change values on the page i.e. raising an event ControlOutput = "<span>Hi</span>"; } protected override void Render(HtmlTextWriter output) { output.Write(ControlOutput); }
If you want to reproduce something link a LinkButton you will need to implement IPostBackEventHandler. This works in conjunction with __doPostBack() method.
Page.ClientScript.GetPostBackEventReference(this, "MyActionNameHere"). To learn more about this, check out the ASP.Net QuickStart
Subscribe to:
Posts (Atom)