The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,839 other subscribers

Archive for the ‘Development’ Category

.NET/Visual Studio: VersionInfo extension checks if you have the latest service pack/update/hotfixes installed

Posted by jpluimers on 2013/07/24

For Visual Studio 2010 and up (including Visual Studio 2012), the VersionInfo extension will check if you have the latest service pack, update and hotfixes installed.

Of course you can manually check the List of available VS2010 hotfixes, or follow the lists maintained by Terje Sandstrom:

But installing the Visual Studio 2010/2012: Version and update information tool is much easier.

–jeroen

.

.

.

Posted in .NET, Development, Software Development, Visual Studio 11, Visual Studio 2010, Visual Studio and tools | Leave a Comment »

.NET/C# assemblies and namespaces

Posted by jpluimers on 2013/07/23

Ever since I started .NET programming after .NET Beta 1 Arrived in 2001, I found that many people struggle with the relation between assemblies and namespaces.

So I was glad that I posted this answer about 2.5 years ago on StackOverflow. Below is the slightly edited form:

People are easily confused by the namespace/assembly thing, as it decouples the concept of where your code is physically located (the assembly) and how you reference it:

  • logically reference is by using the namespace
  • physical reference is by referencing the assembly

I usually explain the relation using the word contribute:

  1. An assembly can contribute to multiple namespaces.
    For instance, the System.Data.dll assembly contributes to namespaces like System.Data (e.g. the class System.Data.DataTable) and Microsoft.SqlServer.Server (e.g. the class Microsoft.SqlServer.Server.SqlContext).
  2. Multiple assemblies can contribute to a single namespace.
    For instance both the System.Data.dll assembly and the System.Xml.dll assembly contribute to the System.Xml namespace.
    Which means that if you use the System.Xml.XmlDataDocument class from your project, you need to reference the System.Data.dll assembly.
    And if you use the System.Xml.XmlDocument class, you need to reference the System.Xml.dll from your project.

(the above examples are .NET 4.0, but likely hold for previous .NET versions as well).

Danny Thorpe explained the concept of namespace and internal really well, so I won’t go into detail about those.

Ever since I started .NET courses 10 years ago, I draw a table explaining assemblies and namespaces like this:

Assemblies contributing to namespaces
Assembly Namespaces it contributes to
System.Data Microsoft.SQLServer.Server System.Xml
↑ Example classes
System.Data.dll DataTable SqlContext XmlDataDocument
System.Xml.dll XmlDocument

–jeroen

via: C# assemblies, whats in an assembly? – Stack Overflow.

Posted in .NET, .NET 1.x, .NET 2.0, .NET 3.0, .NET 3.5, .NET 4.0, .NET 4.5, .NET CF, C#, C# 1.0, C# 2.0, C# 3.0, C# 4.0, C# 5.0, Development, Software Development | Leave a Comment »

Logitech Logimouse C7 and Mouse programmers toolkit PDFs at Bitsavers

Posted by jpluimers on 2013/07/20

Bitsavers published 2 new Logitech PDFs:

Who didn’t have a Logitech mouse back then?

I had the C7, various MouseMans, and a few more modern mice. Why not all mice? I developed RSI in the DOS era, ending up with TrackPoints and more recently Apple touchpads)

I remember the Logimouse C7, not because it was from Logitech, but because it was available from so may OEMs. Long before Logitech built OEM mice for Apple, they were founded in Apples, Swizerland.

The cool thing: the Programmers Toolkit had examples in Modula-2. I used that as a base to write quite some Turbo Pascal code for mouse handing.

Oh: Bitsavers does have a Logitech Modula-2 PDF online too for quite some time. I mentioned that in More Old Micro Cornucopia issues on BitSavers from 1987 and 1988.

–jeroen

via: Bitsavers’ Index of /pdf/logitech.

Posted in BitSavers.org, Development, History, Pascal, Power User, RSI, Software Development, Turbo Pascal | Tagged: , , , | Leave a Comment »

Delphi virtual constructors: example of the “Factory” design pattern (via: Stack Overflow)

Posted by jpluimers on 2013/07/18

I bumped into the below answer that I gave a while (what is 4 years in a developer’s life ) on StackOverflow.

It is about Delphi Design Patterns. Sepcifically the Factory Pattern, and explains how virtual constructors implement it.

They are one of the 3 corner stones on which the component based Delphi form designer and object inspector are built:

  • Virtual constructors
  • Properties (events are just a special form of property)
  • Run-Time Type Information.

So here it goes: Read the rest of this entry »

Posted in Delphi, Delphi 1, Delphi 2, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 3, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Delphi 8, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Development, Software Development | 6 Comments »

C#: combining “adding `char` and `int` and “`a += b` means `a = a + b`, but `a += b + c` does not mean `a = a + b + c`”.

Posted by jpluimers on 2013/07/18

A while ago, I wrote about .NET/C# duh moment of the day: “A char can be implicitly converted to ushort, int, uint, long, ulong, float, double, or decimal (not the other way around; implicit != implicit)”.

There is another duh moment having to do with the various C# operators like += which is being described as being

a += b

is equivalent to

a = a + b

You might think that this also holds:

a += b + c

is equivalent to

a = (a + b) + c

But Eric Lippert has explained this is not the case: it is equivalent to:

a = a + (b + c)

In his explanation, he also shows the confusion can get you very surprising results if you mix string, chars and ints in the expression: depending on the statement and ordering, you either concatenate characters, or add ints to characters.

He also recommends you should not do concatenation: either use String.Format, or StringBuilder. I totally agree with that.

Recommended reading!

–jeroen

Posted in .NET, C#, C# 1.0, C# 2.0, C# 3.0, C# 4.0, C# 5.0, Development, Software Development | Leave a Comment »

2 More Old Micro Cornucopia issues on BitSavers from 1986

Posted by jpluimers on 2013/07/17

2 more issues got on-line both close to a 100 pages each:

So the only issues missing are #28, #30 and #31.

–jeroen

via: More Old Micro Cornucopia issues on BitSavers from 1987 and 1988 « The Wiert Corner – irregular stream of stuff.

Posted in Assembly Language, BitSavers.org, C, C++, Development, History, Pascal, Software Development, Turbo Pascal, Turbo Prolog, x86 | Tagged: , | 1 Comment »

Lots of projects did not get it yet, but for connecting to SQL Server: RIP OLE DB

Posted by jpluimers on 2013/07/17

I still see a truckload of projects that connect to SQL Server do this using OLE DB or the Native SQL Client.

All OLE DB access to SQL Server has been deprecated, not only from regular access, but also from SSIS.

These are the only ways you should connect to SQL Server:

  • SqlClient (managed code)
  • JDBC (Java)
  • ODBC (for native code)

For instance, these have been deprecated (for each one, I linked to the oldest SQL Server version where they were made available for):

  1. SQLOLEDB
  2. SQLNCLI
  3. SQLNCLI10
  4. SQLNCLI11
  5. SQLXMLOLEDB.3.0
  6. SQLXMLOLEDB.4.0

–jeroen

via: RIP OLE DB.

Posted in Database Development, Development, SQL Server | Leave a Comment »

Igor Ostrovsky: C# – The C# Memory Model in Theory and Practice;

Posted by jpluimers on 2013/07/16

Just found out that Igor Ostrovsky wrote two really nice articles on .NET memory management as part of his great series of other .NET articles there:

  1. C# – The C# Memory Model in Theory and Practice.
  2. C# – The C# Memory Model in Theory and Practice, Part 2.

–jeroen

Posted in .NET, .NET 1.x, .NET 2.0, .NET 3.0, .NET 3.5, .NET 4.0, .NET 4.5, Development, Software Development | Leave a Comment »

Windows Timer Resolution: Megawatts Wasted (via: Random ASCII)

Posted by jpluimers on 2013/07/11

Don’t increase your Windows Timer Resolution. And keep an eye on programs that do:

Raising the Windows timer frequency is bad. It wastes power and makes your computer slower. Routinely doing this in all sorts of programs that end up sitting idle for hours really needs to stop.

You can use ClockRes to monitor the time resolution and what programs changed it.

–jeroen

via: Windows Timer Resolution: Megawatts Wasted | Random ASCII.

Posted in .NET, Development, Opinions, Pingback, Power User, Software Development, WPF | Tagged: , , , | Leave a Comment »

Using ILDASM to determine the .NET Framework version an Assembly/DLL requires (via StackOverflow)

Posted by jpluimers on 2013/07/11

Josh Stodola wrote a nice answer on the Determine .NET Framework version for dll – Stack Overflow question for using ILDASM to show the required .NET Framework/CLR version for an assembly.

From that, I wrote this tiny batch file:

ildasm.exe %1 /metadata[=MDHEADER] /text /noil | find "Metadata section:"

It gives output like this:

ildasm.exe C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.XML.dll /metadata[=MDHEADER] /text /noil | find "Metadata section:"
// Metadata section: 0x424a5342, version: 1.1, extra: 0, version len: 12, version: v4.0.30319

The cool thing is that older ILDASM versions work on assemblies requiring newer .NET Frameworks/CLRs.

So it is relatively future proof.

–jeroen

Posted in .NET, .NET 1.x, .NET 2.0, .NET 3.0, .NET 3.5, .NET 4.0, .NET 4.5, C#, C# 1.0, C# 2.0, C# 3.0, C# 4.0, C# 5.0, Development, Software Development | Leave a Comment »