Archives
-
Adding simple trigger-based auditing to your SQL Server database
How do you track changes to data in your database? There are a variety of supported auditing methods for SQL Server, including comprehensive C2 security auditing, but what do you do if you're solving a business rather than a security problem, and you're interested in tracking the following kinds of information:
-
ASP.NET Menu and SiteMap Security Trimming (plus a trick for when your menu and security don't match up)
ASP.NET 2005 introduced a pretty solid menu which is integrated with a configuration driven sitemap. The cool part is that the menu can be hooked in with your security roles, so you don't have to worry about hiding or showing menu options based on the user - the menu options are automatically kept in sync with what the user is allowed to see. We'll talk about how to set this up, using an example from a website I worked on recently.
-
The Man Who Knew Too Much?
I've been thinking about the odd problem, and what can be done about it. I've found that more active participation in a group can lead to more information, but that new information can actually stifle further participation. Here are some of the problems I'm thinking of, as well as some possible solutions.
-
Writing a custom ASP.NET Profile class
We made heavy use of the ASP.NET membership and profile system for Video.Show (a Silverlight 1.0 video community website system, available on CodePlex). In addition to storing basic profile information, we created a custom profile with some additional fields. It's a really easy way to add add some additional personalization to your site without having to add a bunch of tables to your database.
-
Registry setting keeps Windows from wigging out when you open lots of IE7 tabs
Opening too many tabs in Internet Explorer 7 can cause the Windows shell to switch to "Evil Mode". Fortunately, there's a registry setting that fixes the problem by increasing the Windows heap size.
-
Three posts a week - my new year's resolution
I'll pass my 5 year blogging anniversary this year. I've written over 520 posts. But, I'd like to be more consistent. So this year, I'm resolving to post three times a week. I'll give myself an exemption when I'm on vacation, which explains why I'm posting this on the second week of the new year.
-
Inkscape to support XAML export
Today, Adam Kinney gave me the tip off to some cool news: Inkscape is adding XAML export.
Great, what's Inkscape? Glad you asked! Inkscape is an open source vector graphics editor, like Adobe Illustrator. Rather than drawing in pixels (like you'd do in Photoshop, Paint.NET, etc.), you're drawing in vectors. Inkscape is a little unique in that it uses SVG (scalable vector graphics) as its base format. SVG is a W3C standard, with pretty good support in most non-IE browsers (check out SVG Tetris in Firefox 1.5 or higher). It's unfortunate that IE doesn't (and likely never will) support SVG, since browser support for standards based vector-based graphics and text could do so much for the web.
Although the drawing primitives in XAML are very similar to SVG, up until now there hasn't been a really solid way of developing assets in SVG and moving them to XAML.
Right now, there are only two real ways to do any serious design in XAML:
- Buy Expression Blend and Expression Design ($599)
- Buy Adobe Illustrator ($599) and use the XAML export plugin
Now that Inkscape is picking up XAML export, there's a third way that doesn't start with any buying.
-
Large file uploads in ASP.NET
Uploading files via the FileUpload control gets tricky with big files. The default maximum filesize is 4MB - this is done to prevent denial of service attacks in which an attacker submitted one or more huge files which overwhelmed server resources. If a user uploads a file larger than 4MB, they'll get an error message: "Maximum request length exceeded."