|
|
|
Thursday, 29 October 2009
|
That unmistakable sound
posted at
12:02 PM
|
trackback
|
|
link
I think that one of the disks on my server computer is dying -- it's making that spin-up-spin-down noise that they make just before they break. (Break your heart, that is.)[1]
If the blog disappears, it's because I'm, you know, servicing the server.
Once again I wonder whether it's really worth it to maintain my own server. Hmmm.
[1] As an aside, I got this image from a site that obviously is auto-translated. From what language, who knows. Here's an excerpt about the warning signs of incipient failure:
Symptoms of harder drive failure
The pre-warnings of harder drive abortion are not consistently accustomed by declining harder drive, if sometimes the agnate absurdity letters may arise and sometimes not. The a lot of accepted signs are beat or abrading sounds, while others, lower in ratings, cover aspersing arrangement achievement and abrupt behavior.
[categories]
personal, blog
|
Thursday, 15 October 2009
|
Foiled attack
posted at
02:07 PM
|
trackback
|
|
link
Earlier today, someone left the following "comment" on an entry in the blog:
<% foreach (var x in ConfigurationManager.ConnectionStrings){%><%= x.ToString() + "<br />" %><% } %>
This is an attempt, obviously, to get connection information about any and all databases that the blog has access to.
In this particular case, the attack was not successful because I encode stuff in comments, so it was just passed through as text. I sure hope that I've anticipated other, relatively straightforward attacks of a similar nature. But as we know, hackers are wily. And I am not particularly so, alas.
It goes to show that no matter how trivial your site, someone is interested in hacking it. Security: It's not just for commercial web sites.
[categories]
blog, aspnet
|
posted at
10:14 PM
|
trackback
|
|
link
Apparently a couple of days ago I broke the ability to add comments, in a well-meaning attempt to add some other functionality to the blog. Which I didn't finish, so no birds with two stones. Oh, well. I think I've fixed the comment-add feature again.
Man, do I ever need to rewrite this creaking hunk o' software. Real Soon Now.
[categories]
blog
|
Tuesday, 31 March 2009
|
Blog feed changes
posted at
11:26 PM
|
trackback
|
|
link
What started as a simple request from Phil -- use fully qualified URLs for images -- turned, naturally, into something a bit more. I fixed the feed, then needed to update the feed URL in Feedburner, which led to moving the feed to Google (which bought Feedburner), which led to an error, which led to some further tweaking of the actual feed.
Anyway. If I broke your feed, let me know. PS Sorry if so.
One URL that should always work is this:
http://www.mikepope.com/blog/blogfeed.rss
or this:
http://www.mikepope.com/blog/blogfeed.rss?full=true
if you want full entries in the feed.
But of course that does not go through a subscription service.
[categories]
blog
|
Tuesday, 24 February 2009
|
Speaking of large numbers
posted at
09:59 AM
|
trackback
|
|
link
Another blog milestone today -- sometime during the night, the blog hit counter rolled over to 7 digits:
As noted earlier, compared wtih actual, real blogs, this is nothing -- most of the people whose blogs I read pick up a million hits in months, if not weeks. But hey, it's sumpin' special for this blog, anyway.
So, 5-1/2 years, 2000 posts, a million hits, half a million words:
Blah-blah, yadda-yadda, a milestone hit today A million times the server has been asked for to display These pages of Verdana 8-point text all bluish gray And weeks ago the blog post count inched slightly past 2K. A half a million words, by god, so little to convey You'd think by now I might have had some useful things to say. Haha.
[categories]
blog, personal
[tags]
hit count, word count
|
Tuesday, 10 February 2009
|
2K
posted at
06:55 PM
|
trackback
|
|
link
This is my 2,000th post. You'd think that by now I'd have something interesting to say, wouldn't you? :-)
[categories]
blog, personal
[tags]
blogs
|
Friday, 27 June 2008
|
Blogiversary: 5 years
posted at
12:41 AM
|
trackback
|
|
link
This blog went live 5 years ago today.[1] It was a kind of lark, of course. ("How hard could it be?")
Some stats:
- Entries: 1885.
- Words: 545,938. That's a lot of blather, dang.
- Average entry size: 289, or 298 if I count code.
- Hits: 917,375 or thereabouts. The, um, rigorousness of the hit counting is not guaranteed.
More stats are available over on the bottom left.
I've slowed way down in the last year or so. Partly I just don't have as much time, and partly it's because the editing game requires less daily coding, hence I've had fewer incentives to blog about my adventures and problems therewith.
As I keep saying, tho, it's just a phase.
And hey, maybe I'll even get version 2.0 of this thing out during this fiscal year. I see that from the very beginning, the idea was to "include forthcoming ASP.NET features." That was, like, in the days of ASP.NET 1.1. The team has lapped me several times by now. Oh, well. Real Soon Now. :-)
[categories]
blog
|
Monday, 26 May 2008
|
Viewstate errors
posted at
09:21 PM
|
trackback
|
|
link
This is the tale of an error, but first you have to listen to me blather about the background.
In my blog, I have a crude hit counter and a referrers list that I occasionally poke through to see how people got here. A month or so ago, I noticed that a lot of referrers were from the blog itself. I'd see them in bunches, which upon counting I realized were in 25-link batches. This very strongly suggested that someone or something (<-more likely) was walking the RSS feed. Well, I need neither referrer information nor hits from my own blog, so I tweaked the blog code so that it could ignore incoming URLs that matched the current domain name.
That solved that problem. Thereafter, however, I was getting error notifications on average about once a day, but with no actual error detail. Clearly I'd horked something up, but who knows what. I have a catch-all error handler that redirects to an error page (I try to crash responsibly), where I unpack Server.LastError. However, for the most part, this was coming up null.
I set about adding a lot more try-catch blocks to the code. The problem (with the problem) is that it was sporadic, and I could never force it. A classic debugging issue. So I added a very simple logging facility that wrote out to this log on every catch block before it redirected to the error page. (My logging added a tiny bit of useful detail, like what handler in what page I was in; I realize that the Windows event log was capturing these exceptions as well.)
That actually helped. Sure enough, when I'd added the filter, I was blithely checking Request.UrlReferrer without first determining if it was null. This bascially happens every time I screw around with Request.UrlReferrer. So I fixed that, and the sporadic errors went away.
Interestingly, tho, the log kept logging stuff. I wasn't seeing any errors; no one was reporting any errors to me. (Tho the absence of error emails from the presumable reader base is no guarantee that they aren't occurring, of course--as Atwood says, most users will just stop using the application). I've listed the error(s) below (with some slight formatting); it's basically the exception message and call stack. It's the same error over and over and over, namely the "invalid viewstate" error in a couple of guises.
This makes me wonder if I've been experiencing this error all along and just never knew it. Alas, by the time I thought to look at the Windows event log, it didn't go back far enough to cover the period before I'd done all my error-page tweaking.
I did a little searching around to see if the error was ringing any bells with anyone else. I didn't find anything that seemed like a good lead, tho. Odd. Not sure what I should do. Any thoughts?
5/26/2008 4:19:59 PM,DisplayBlog_Error: unhandled error.|Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster. Source: Void ThrowError(System.Exception, System.String, System.String, Boolean):System.Web at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) at System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) at System.Web.UI.HiddenFieldPageStatePersister.Load() at System.Web.UI.Page.LoadPageStateFromPersistenceMedium() at System.Web.UI.Page.LoadAllState() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
5/26/2008 4:19:59 PM,Application_Error: unhandled error.|Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.
Source: Void ThrowError(System.Exception, System.String, System.String, Boolean):System.Web at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) at System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) at System.Web.UI.HiddenFieldPageStatePersister.Load() at System.Web.UI.Page.LoadPageStateFromPersistenceMedium() at System.Web.UI.Page.LoadAllState() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest() at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) at System.Web.UI.Page.ProcessRequest(HttpContext context) at ASP.displayblog_aspx.ProcessRequest(HttpContext context) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
5/26/2008 4:38:12 PM,DisplayBlog_Error: unhandled error.|The state information is invalid for this page and might be corrupted.
Source: Void ThrowError(System.Exception, System.String, System.String, Boolean):System.Web at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) at System.Web.UI.HiddenFieldPageStatePersister.Load() at System.Web.UI.Page.LoadPageStateFromPersistenceMedium() at System.Web.UI.Page.LoadAllState() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
5/26/2008 4:38:12 PM,Application_Error: unhandled error.|The state information is invalid for this page and might be corrupted.
Source: Void ThrowError(System.Exception, System.String, System.String, Boolean):System.Web at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) at System.Web.UI.HiddenFieldPageStatePersister.Load() at System.Web.UI.Page.LoadPageStateFromPersistenceMedium() at System.Web.UI.Page.LoadAllState() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest() at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) at System.Web.UI.Page.ProcessRequest(HttpContext context) at ASP.displayblog_aspx.ProcessRequest(HttpContext context) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
[categories]
blog, aspnet
|
posted at
04:43 PM
|
trackback
|
|
link
If you look at the comments for the two entries immediately preceding this one, the first (or only) comment seems reasonable. But the links for the commenter's name(s) -- well, those are commercial sites, so it's a good bet that they're link spam. Have a look and see if you agree. If they are, how are these comments being generated?
Update I've de-link-ified the commenter names, so they're no longer pointing anywhere. Dim limit = 1 : For i As Integer = 0 To limit : Response.Write("neener") : If i < limit Then : Response.Write("-") : End If : Next
[categories]
blog
|
Tuesday, 1 April 2008
|
Can you convert ... ?
posted at
04:46 PM
|
trackback
|
|
link
Twice today I've gotten requests via the blog to convert code in old (old, old) blog entries -- one request to convert VB to C#, another request for C# to VB. Weird, huh? Two requests, both today.
Dunno, what do you think? Should I do the conversions and post the code, so the (probably) newbies who need it can find what they need? Should I point out that I already wrote and posted the code once, I don't want to do it twice?
What would you do?
[categories]
aspnet, blog
|
|
|