Saturday, July 28, 2007

Microsoft support has a Hotfix request Submission form now which promises;

To obtain this Hotfix, please submit your request via this form to Microsoft Online Customer Service and Support – you should expect to receive a download link via email from Microsoft within 8 business hours.

HotFix Request From

posted by Aaron Fischer on Saturday, July 28, 2007 8:33:04 AM (Pacific Standard Time, UTC-08:00)   #    Comments [0]
 Thursday, July 26, 2007

In your quest to down load all the visual studio 2008 goodness you may find this new ctp tool from Microsoft very useful

Microsoft Secure Content Downloader July 2007 Community Technology Preview

Overview

The Microsoft Secure Content Downloader (MSCD) is a peer-assisted download manager capable of securely downloading specific files. MSCD is intended for consumers who are downloading from a home PC, or business users whose computers are not behind a corporate firewall. If you use MSCD from behind a corporate firewall, you may be unable to download content, and may adversely affect other clients' ability to download content.
Main features of the MSCD are:

  • Secure content description
    • Each file available for download has a secure description, ensuring the content you download is exactly what the publisher published.
  • Scalable performance
    • MCSD is a peer-assisted technology. Each client downloads content by exchanging parts of the file they’re interested in with other clients, in addition to downloading parts from the server.
      • No matter how great the internet’s demand for the file, you will always be able to make progress downloading.
      • MSCD lets you download content more quickly than possible without peer assistance.


Some MSCD clients may be connected to each other via peer connections, forming a ‘cloud’ of clients. Pieces of the file you are downloading are sent through these peer connections between clients, as well as through connections with the file server. As a member of the cloud, your computer both serves as a client and server to other members of the cloud. Data destined for the cloud may be routed through your computer and sent to other cloud members. The other cloud members connected to you will be able to access only pieces of the file you are downloading via MSCD – they have no access to any other data on your computer.
You are only connected to other clients while you are downloading a file via MSCD. When the file has finished downloading – or when you pause or cancel the download, or exit the application – you disconnect from the cloud. Once you disconnect from the cloud, you will no longer have any connections to any other members in the cloud and no data will be routed through your computer.
This version of MSCD is a Community Technology Preview, and will only allow you to obtain current Visual Studio 2008 Beta 2. Since it is a Community Technology Preview, additional information related to MSCD’s performance and network transactions -- including your machine name and IP addresses -- may be logged to help evaluate and improve MSCD performance.

Just incase you have been under a rock here are the links to detailed information about today's release of Visual studio via Scott Gu and Somasegar respective blog posts.

posted by Aaron Fischer on Thursday, July 26, 2007 9:52:06 PM (Pacific Standard Time, UTC-08:00)   #    Comments [0]
 Wednesday, July 25, 2007

I was looking for a way to pass a parameter by reference today.  More specifically the setter.

I found a couple interesting blog posts

http://geekswithblogs.net/akraus1/archive/2006/02/10/69047.aspx

notice the comment by Tedesco.

He offers a nice way to do this via an anonymous delegate.

public delegate void InsertString( System.String param ); public partial class Bird { public void FileToDb( int x) { FillEntityColumn(delegate( System.String value) {tExtra.Text = value; }); } }

So we actual pass the FillEntityColumn method an anonymous delegate which then sets the property.

Now in vb you can write
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        testme(TextBox1.Text)
    End Sub
    Sub testme(ByRef s As String)
        s = "hello"
    End Sub
End Class

which a commenter on http://musingmarc.blogspot.com/2006/04/tale-of-two-implementations.html eluded to.  But in vb you still cannot pass a Property by reference, at least not really.  Take a look what vb generates into il.

Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
    Dim VB$t_ref$S0 As TextBox = Me.TextBox1
    Dim VB$t_string$S0 As String = VB$t_ref$S0.Text
    Me.testme((VB$t_string$S0))
    VB$t_ref$S0.Text = VB$t_string$S0
End Sub

 
As you can see vb is writing some code for you which is nice, but we are still not passing the property by ref.
   -Mike has also talked about the want of passing parameters. ( the same misguided comment that vb supports passing parameters by ref)
posted by Aaron Fischer on Wednesday, July 25, 2007 11:27:21 AM (Pacific Standard Time, UTC-08:00)   #    Comments [0]
 Wednesday, July 18, 2007

Olaf Conijn announced the release of Enterprise Library Contrib for July 2007.  Here are some highlights, Its nice to see a MySql and SqlLite provider for the data access application block.

This first release of Enterprise Library Contrib contains the following:
PostSharp4EntLib - Combines the benefits of the Enterprise Library Policy Injection and of compile-time weaving by removing the limitations due to the use of remoting proxies.
LogParser - Combines the benefits of the Enterprise Library Logging Application Block with the ability to deserialize from a human readable log text file all LogEntry objects back. This enables sophisticated log filter capabilities with LINQ on normal log files (.NET 2.0 and Orcas samples) with very few lines of code.
MySql for DAAB - MySql provider for the Data Access Application Block.
SqlLite for DAAB - SqlLite provider for the Data Access Application Block.
Additional PIAB Matching Rules
And Matching Rule: Combines 2 Matching Rules and evaluates to "true" only if both of contained Matching Rules evalute to "true".
Or Matching Rule: Combines 2 Matching Rules and evaluates to "true" if either one of contained Matching Rules evalutes to "true"
Not Matching Rule: Contains another Matching Rules and evaluates to "true" if the contained Matching Rules evalutes to "false".
Additional VAB Validators
Externally Configurable Object Validator: An Object Validator that allows to use configuration from a configuration file other than web.config or app.config.
Designtime Enhancements
Lightweigth type-picker for VAB: An alternative type-picker for the validation application block that allows you to enter a typename in a text-box (instead of using the tree-view to navigate the whole lot of types in the current appdomain).
Extended SQL Data Access Block - This data access application block extends the SQL Data Access Block provided by Enterprise Library. It provides additional overloads for the UpdateDataSet method so that a collection of rows or a table can be passed to the DataAdapter for update. These methods were developed to support updating datasets that have multiple tables and cascading hierarchies.

posted by Aaron Fischer on Wednesday, July 18, 2007 6:50:43 AM (Pacific Standard Time, UTC-08:00)   #    Comments [0]
 Saturday, July 14, 2007

It looks like you can burn water and salt water.  Pretty cool.

Thanks to the Mortgage Broker Coaching blog for pointing this out.

posted by Aaron Fischer on Saturday, July 14, 2007 4:11:00 PM (Pacific Standard Time, UTC-08:00)   #    Comments [0]

The BloodHound Blog has an interesting post on how some green Real Estate Agents may be helping to push down the price of real estate.

Fear Factor - Who Makes a Real Estate Market?
posted by Aaron Fischer on Saturday, July 14, 2007 4:05:20 PM (Pacific Standard Time, UTC-08:00)   #    Comments [0]
 Wednesday, July 11, 2007

I have been having odd locking issues when using solutions that have  a c# project that is referenced by a c++/cli project.  This would happen in  VS 2003 and VS2005.  What could cause this horrid behavior?  Intellisense.  It has been locking the C#/VB output file while it updates.  Which means no building of the solution. 

While I am on Intellisense I have found many things in VC require it.  You need Intellisense to go to declarations and definitions, you even need it for the winforms designer to work.  Yet it is so utterly broken a large project will take any system to its knees with every press of the space bar.

posted by Aaron Fischer on Wednesday, July 11, 2007 10:07:04 AM (Pacific Standard Time, UTC-08:00)   #    Comments [0]
 Tuesday, July 10, 2007

February 27th as the day for launch of Windows Serve 2008, SQL Server 2008 and Visual Studio.

posted by Aaron Fischer on Tuesday, July 10, 2007 9:30:26 AM (Pacific Standard Time, UTC-08:00)   #    Comments [0]
 Monday, July 09, 2007

 

Extortion in the 21th century.  Pay me if you want to use that computer of yours.

Is Micro Bill Systems legit or Ransomware - Hosts News

At least they have the money to litigate any company that thinks their software should be removed.

posted by Aaron Fischer on Monday, July 09, 2007 7:50:17 AM (Pacific Standard Time, UTC-08:00)   #    Comments [0]
Public Module ConversionModule

    Public Sub UpdateToCLI()

        SeachAndReplaceDocumentPointers("System::")

        SeachAndReplaceDocumentPointers("nsoftware::IPWorksSSL::IPWorksSSLException")
        SeachAndReplaceDocumentPointers("nsoftware::IPWorksSSL::HttpsStatusEventArgs")
        SeachAndReplaceDocumentPointers("nsoftware::IPWorksSSL::HttpsStatusEventArgs")
        SeachAndReplaceDocumentPointers("C1::Win::C1FlexGrid::")
        SeachAndReplaceDocumentPointers("C1::")

        FindReplace("__gc ", "ref ")
        FindReplace("__property", "property")
        FindReplace("__try_cast", "safe_cast")
        FindReplace(" S""", " """)
        FindReplace("(S""", "(""")
        'FindReplace("    S"",""")

        NewToGCnew("System") 
        NewToGCnew("nsoftware")
        NewToGCnew("C1FlexGrid")
        NewToGCnew("C1::")


        ReplaceTypeOf()
        ReplaceItemOf()
        FindReplace("->ItemOf", "->default")
        FindReplace("->Item", "->default")


    End Sub

    Sub SeachAndReplaceDocumentPointers(ByVal ManagedNameSpaceToken As String)

        SeachAndReplacePointers(ManagedNameSpaceToken + "*\*", "^")
        SeachAndReplacePointers(ManagedNameSpaceToken + "\*", "^")
        SeachAndReplacePointers(ManagedNameSpaceToken + "*^ &", "%")
        SeachAndReplacePointers(ManagedNameSpaceToken + "*^&", "%")
        SeachAndReplacePointers(ManagedNameSpaceToken + "*^ \*", "%")
        SeachAndReplacePointers(ManagedNameSpaceToken + "*^\*", "%")
    End Sub
    Sub SeachAndReplacePointers(ByVal What As String, ByVal ReplaceWith As String)
        Do
            DTE.Windows.Item(DTE.ActiveDocument.Name).Activate()
            DTE.Find.FindWhat = What
            DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument
            DTE.Find.MatchCase = False
            DTE.Find.MatchWholeWord = False
            DTE.Find.Backwards = False
            DTE.Find.MatchInHiddenText = False
            DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxWildcards
            DTE.Find.Action = vsFindAction.vsFindActionFind
            If (DTE.Find.Execute() = vsFindResult.vsFindResultNotFound) Then
                Exit Do
            Else
                DTE.ActiveDocument.Selection.CharRight()
                DTE.ActiveDocument.Selection.DeleteLeft()
                DTE.ActiveDocument.Selection.Text = ReplaceWith
            End If
        Loop

    End Sub
    Sub FindReplace(ByVal What As String, ByVal ReplaceWith As String)
        DTE.Find.Action = vsFindAction.vsFindActionReplaceAll
        DTE.Find.FindWhat = What
        DTE.Find.ReplaceWith = ReplaceWith
        DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument
        DTE.Find.MatchCase = False
        DTE.Find.MatchWholeWord = False
        DTE.Find.MatchInHiddenText = False
        DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxWildcards
        DTE.Find.ResultsLocation = vsFindResultsLocation.vsFindResultsNone
        DTE.Find.Action = vsFindAction.vsFindActionReplaceAll
        DTE.Find.Execute()
    End Sub
    Sub NewToGCnew(ByVal Type As String)

        Do
            DTE.Find.FindWhat = " new " + Type + "*"
            DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument
            DTE.Find.MatchCase = False
            DTE.Find.MatchWholeWord = False
            DTE.Find.Backwards = False
            DTE.Find.MatchInHiddenText = False
            DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxWildcards
            DTE.Find.Action = vsFindAction.vsFindActionFind
            If (Not (DTE.Find.Execute() = vsFindResult.vsFindResultNotFound)) Then
                DTE.Find.Action = vsFindAction.vsFindActionReplace
                DTE.Find.ReplaceWith = " gcnew "
                DTE.Find.FindWhat = " new "
                DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument
                DTE.Find.MatchCase = False
                DTE.Find.MatchWholeWord = False
                DTE.Find.Backwards = False
                DTE.Find.MatchInHiddenText = False
                DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxWildcards
                DTE.Find.Execute()
            Else
                Exit Do
            End If
        Loop
    End Sub
    Sub ReplaceTypeOf()
        Do
            DTE.Find.FindWhat = "__typeof(*)"
            DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument
            DTE.Find.MatchCase = False
            DTE.Find.MatchWholeWord = False
            DTE.Find.Backwards = False
            DTE.Find.MatchInHiddenText = False
            DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxWildcards
            DTE.Find.Action = vsFindAction.vsFindActionFind
            If (Not (DTE.Find.Execute() = vsFindResult.vsFindResultNotFound)) Then
                DTE.ActiveDocument.Selection.CharLeft()
                DTE.ActiveDocument.Selection.CharRight(True, 9)
                DTE.ActiveDocument.Selection.Delete()

                DTE.Find.FindWhat = ")"
                DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument
                DTE.Find.MatchCase = False
                DTE.Find.MatchWholeWord = False
                DTE.Find.Backwards = False
                DTE.Find.MatchInHiddenText = False
                DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxWildcards
                DTE.Find.Action = vsFindAction.vsFindActionFind
                If (Not (DTE.Find.Execute() = vsFindResult.vsFindResultNotFound)) Then
                    DTE.ActiveDocument.Selection.Text = "::typeid"
                End If
            Else
                Exit Do
            End If
        Loop
    End Sub
    Sub ReplaceItemOf()
        Do
            DTE.Find.FindWhat = "get_ItemOf"
            DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument
            DTE.Find.MatchCase = False
            DTE.Find.MatchWholeWord = False
            DTE.Find.Backwards = False
            DTE.Find.MatchInHiddenText = False
            DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxWildcards
            DTE.Find.Action = vsFindAction.vsFindActionFind
            If (Not (DTE.Find.Execute() = vsFindResult.vsFindResultNotFound)) Then
                DTE.ActiveDocument.Selection.Delete()
                DTE.ActiveDocument.Selection.Text = "default["

                DTE.Find.FindWhat = ")"
                DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument
                DTE.Find.MatchCase = False
                DTE.Find.MatchWholeWord = False
                DTE.Find.Backwards = False
                DTE.Find.MatchInHiddenText = False
                DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxWildcards
                DTE.Find.Action = vsFindAction.vsFindActionFind
                If (Not (DTE.Find.Execute() = vsFindResult.vsFindResultNotFound)) Then
                    DTE.ActiveDocument.Selection.Text = "]"
                End If
            Else
                Exit Do
            End If
        Loop

    End Sub
    Sub WrapCStringWithSystemString()

        DTE.ActiveDocument.Selection.Text = " gcnew System::String( " + DTE.ActiveDocument.Selection.Text + " )"
    End Sub
    Sub WrapSystemStringWithCString()

        DTE.ActiveDocument.Selection.Text = " CString( " + DTE.ActiveDocument.Selection.Text + " )"
    End Sub
    Sub WrapValueArray()
        DTE.ActiveDocument.Selection.Text = "array< " + DTE.ActiveDocument.Selection.Text + " > ^"
    End Sub
    Sub WrapHandle()
        DTE.ActiveDocument.Selection.Text = "(HWND)" + DTE.ActiveDocument.Selection.Text + ".ToPointer()"
    End Sub
    Sub ConvertToNull()
        DTE.Find.Action = vsFindAction.vsFindActionFind
        DTE.Find.FindWhat = "NULL"

        DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument
        DTE.Find.MatchCase = False
        DTE.Find.MatchWholeWord = False
        DTE.Find.MatchInHiddenText = False
        DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxWildcards
        DTE.Find.ResultsLocation = vsFindResultsLocation.vsFindResultsNone
        DTE.Find.Action = vsFindAction.vsFindActionFind
        DTE.Find.Execute()
        DTE.ActiveDocument.Selection.Text = "nullptr"
    End Sub
    Sub updateDefaultI()
        DTE.Find.Action = vsFindAction.vsFindActionFind
        DTE.Find.FindWhat = "default(i)"

        DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument
        DTE.Find.MatchCase = False
        DTE.Find.MatchWholeWord = False
        DTE.Find.MatchInHiddenText = False
        DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxWildcards
        DTE.Find.ResultsLocation = vsFindResultsLocation.vsFindResultsNone
        DTE.Find.Action = vsFindAction.vsFindActionFind
        DTE.Find.Execute()
        DTE.ActiveDocument.Selection.Text = "default[i]"
    End Sub
    Sub UpdateToGCNew()

        DTE.Find.Action = vsFindAction.vsFindActionFind

        DTE.Find.FindWhat = " new "
        DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument
        DTE.Find.MatchCase = False
        DTE.Find.MatchWholeWord = False
        DTE.Find.Backwards = False
        DTE.Find.MatchInHiddenText = False
        DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxWildcards
        DTE.Find.Execute()
        DTE.ActiveDocument.Selection.Text = " gcnew "

    End Sub
    Sub UpdateHat()

        DTE.Find.Action = vsFindAction.vsFindActionFind

        DTE.Find.FindWhat = "\*"
        DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument
        DTE.Find.MatchCase = False
        DTE.Find.MatchWholeWord = False
        DTE.Find.Backwards = False
        DTE.Find.MatchInHiddenText = False
        DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxWildcards
        DTE.Find.Execute()
        DTE.ActiveDocument.Selection.Text = "^"

    End Sub
    Sub UpdateHatAndGcNew()
        UpdateHat()
        UpdateToGCNew()
    End Sub
End Module
posted by Aaron Fischer on Monday, July 09, 2007 7:19:06 AM (Pacific Standard Time, UTC-08:00)   #    Comments [0]