I always like playing with management tools for windows since dos days. I think the release of Windows Management Framework at the end of October is truly the next step in Microsoft console/command-line tooling revolution. Thank you, Jeffrey Snover.
Monday, November 16, 2009
Thursday, October 29, 2009
Web Goat – Interesting way to learn security on the Web.
As I deal more and more with web in my daily life, I realized that web security is a very intricate subject and tough to learn as well. The next iteration of CodeCamp is in town in a week, so I will have a chance to check out Web Goat. Due to time constraints, I wont be able to research beforehand, so it’s exciting to learn about something completely new.
Monday, May 25, 2009
Viewing temp table structure
For some reason I can never remember to properly retrieve connection specific temporary table’s structure, i.e. #tempCustomers. Due to the fact that the table resides in tempdb, this is the format required:
use tempdbHighlight these two lines in Management studio and press F5!
exec sp_help #tempCustomers
Friday, May 8, 2009
Virtual Function Calls from Constructors/Finalizers … Bad Idea!
So I am skimming over this book, Framework Design Guidelines by Krzysztof Cwalina and Brad Abrams, when authors note to “avoid calling virtual members on an object inside its constructor”. At first a developer might not think about the danger but it does make sense with a quick example that authors provide.
Here is another one i cooked up:
public class Trans {
public abstract Log();
public Trans() {
Log(...);
}
}
public class SomeTrans:Trans {
private Logger logger;
public SomeTrans() {
logger = new Logger();
}
public override Log(...) {
if (logger == null)
Console.Write("Oops!");
else
logger.write(...);
}
}
Using the base class to execute common code that all derived classes will might seem like a good idea but here the Trans constructor calls the derived type’s Log method before SomeTrans constructor is called. Compiler is unable to detect this danger because binding happens at run-time so be very aware.
The rule of thumb is to never do that!
Also note, C++ behaves differently as it does not allow a virtual traversal because at base construction time the object type is Trans.
Wednesday, April 1, 2009
Managing IIS7 SSL settings without SSL binding
I was messing around with IIS7 site settings and ran into the error when I tried to disable SSL requirement for access.
It appears IIS does not allow you SSL settings modifications if HTTPS binding was already removed.
Make sure you have Binding like this:
Tuesday, January 13, 2009
TypeMock Isolator 2.5 w/ VB.Net support
Programming Visual Basic applications?
Typemock have released a new version of their unit testing tool, Typemock Isolator 5.2.
This version includes a new friendly VB.NET API which makes Isolator the best Isolation tool for unit testing A Visual Basic (VB) .NET application.
Isolator now allows unit testing in VB or C# for many ‘hard to test’ technologies such as SharePoint, ASP.NET MVC, partial support for Silverlight, WPF, LINQ, WF, Entity Framework, WCF unit testing and more.
Note that the first 25 bloggers who blog this text in their blog and tell us about it, will get a Free Full Isolator license (worth $139). If you post this in a VB.NET dedicated blog, you'll get a license automatically (even if more than 25 submit) during the first week of this announcement.
Go ahead, click the following link for more information on how to get your free license.
Monday, December 22, 2008
Converting Mail-Enabled recipient to Mailbox-Enabled recipient
Out of the box, MS Exchange 2003/2007 do not offer any kind of way converting a mail-enabled recipient (MEU) into a mailbox-enabled recpieint (MBXU). At first, you would think that scenario is least likely. Mail-enabled recipients forward to outside of exchange organization and why would you create a mailbox. Well, in complex environments where organization has multiple email systems and a user wants to migrate to exchange but already utilizes AD, or if your organization is going through a complex migration.
To convert an MEU into MBXU, we could just strip the AD object of exchange attributes and then ask exchange to create a mailbox. However, you will notice that there might be side effects. Any secondary emails that might be attached to the MEU are now gone. Secondly, a less trivial issue, is that repliability of emails which contain MEU address book entry is now broken. To fix these both, you’ll need to track secondary emails and legacyExchangeDn of the MEU and append them to proxyAddresses attribute when MBXU is created.
$userIdentity = 'testuser'
$mailboxDatabase = exserver\mbxdb'
$err = @()
$user = Get-MailUser -Identity $userIdentity `
-ErrorAction SilentlyContinue -ErrorVariable +err
if ($err.count -ne 0)
{
Write-Error 'The user is not a mail-enabled user.'
return;
}
$mbxDB = Get-MailboxDatabase -Identity $mailboxDatabase `
-ErrorAction SilentlyContinue -ErrorVariable +err
if ($err.count -ne 0)
{
Write-Error "The database value is incorrect."
return;
}
$extAddress = $user.ExternalEmailAddress
$currAddresses = $user.EmailAddresses
$legDn = $user.LegacyExchangeDn
Disable-MailUser $user -Confirm:$false | Out-Null
$mbxUser = Enable-Mailbox $user -Confirm:$false `
-Database $mailboxDatabase
$addresses = $mbxUser.EmailAddresses
if ($mbxUser.LegacyExchangeDn -ne $legDn) {
$addresses.add("X500:$legDn")
}
$currAddresses | ?{ $_ -ne $extAddress } | %{
if ( -not $addresses.Contains($_)) {
$addresses.Add($_) | Out-Null
}
}
if ($addresses.Changed) {
Set-mailbox $mbxUser `
-EmailAddresses $addresses | Out-Null
}