Novell announced the release of version 1.0 of Mono yesterday. More information can be found here.
I am not sure if we will hear about it at TechEd2004 :)
The second day at TechEd I followed 2 sessions about ASP.NET 2.0 where the speaker demonstrated a lot of nice new controls and features. One of the features I like most (call it a feature or a bug-fix), is that the designer does NOT mess your aspx code anymore, which is a very good thing, I think it was called 'HTML preserve' :).Features like, themes/skins, a tool for deploying your web application, role based management, navigation control, a bunch of login related controls (registration, login, lost your password, etc.), ...
After that there was the Belgian Day which was very well organized and was really fun (I don't have to mention that a lot of people watched the football :)
The first opening key note was very entertaining and refreshing. There was an introduction of the team services in VS.NET, a demo with 3d-glasses on a 64-bit platform, a promising project called SkyServer.org, announce of the Express edition of VS.NET, and many other things.
It's very well organized, everybody at TechEd receives a login where you can check your email, surf on the internet, you receive a bag with a huge set of goodies and documentation, etc.
I just returned from a session of FABRIQ which can be downloaded on GotDotNet and it's a very nice messaging architecture that can be interesting on the project I am currently working on. So, be prepared Tom, Franco and Peter when I come back to Belgium :)
Now we are going to eat something...
greetz from A'dam
I found somewhere in the newsgroups a nice trick for creating typed collections. In most of the cases typed collections only differ in the type they get and set.
To make things easier we can do the following. Create an integer collection class, like below:
using System; using System.Collections; using ItemType = System.Int32;
public class IntCollection : CollectionBase { public void Add(ItemType val) { this.List.Add(val); }
public void Remove(ItemType val) { this.List.Remove(val); }
public ItemType this[int index] { get { return (ItemType)this.List[index]; } set { this.List[index] = value; } } }
Here we use an alias named ItemType that denote the type that the collection must work with. If we want a collection of the class Employee, we simply copy/paste the IntCollection class and change the class name to EmployeeCollection and set the ItemType to Entities.Employee for example. So we have something like:
using System; using System.Collections; using ItemType = Entities.Employee;
public class EmployeeCollection: CollectionBase { public void Add(ItemType val) { this.List.Add(val); } public void Remove(ItemType val) { this.List.Remove(val); } public ItemType this[int index] { get { return (ItemType)this.List[index]; } set { this.List[index] = value; } } }
Offcourse you can use search and replace, but I found this method more elegant 
The last couple of weeks I concentrated on writing SharpBrowser. It was already subscribed for a long time on Sourceforge.net, but now I finally released an initial version .
The main features of the initial version, is that it is tab-based and it can be used with IE or Mozilla! SharpBrowser uses the great UI library from divil.co.uk for the menus, toolbars, docking and documents. One of the features is that you for example can choose the UI rendering, e.g.: Office2003, Everett and Whidbey.
In order to use Mozilla you just have to download the Mozilla 1.7 ActiveX Control and install it. If the installation is successful you will see an extra menuitem, where you can choose the browser: (left is IE, right is Mozilla)
Note that this is an initial release, and that there a bunch of features that must be implemented. In the following weeks I will concentrate on implementing features that are included in the standard IE and after that extra features like:
- cookie mamagement
- download management
- popup killer
- google toolbar
- view partial source
- event viewer
- manage broken links
- mouse gestures
- plugin-mechanism
- etc.
That's why I started writing SharpBrowser, because I am convinced that you can implement a set of very usefull features for a browser that are not (yet) included in IE. I am also thinking about features for web developers, like a viewstate decoder, better support for debugging javascript, test scenarios, etc.
This project give me also the opportunity to experiment with libraries like MyXaml, log4net, Microsoft Application Blocks, etc. For me it is important that I can learn of it, and that the project uses the right concepts, design patterns, libraries, etc. That's the reason why I distribute it in open-source so that we can share our knowledge!
In the next couple of days I will explain some concepts that I implemented for SharpBrowser. Patterns like the visitor, command, composite, facade, etc.
If you have any suggestions, ideas for new features, or want to share about good practices, design patterns, libraries, please let me know! You can send an email to me@delarou.name
SharpBrowser v0.5 (1,79 MB) (source code will be available in a couple of days)
CruiseControl.NET is a continuous integration tool we have set up for our current project. It automatically builds when there is a change in source control (VSS, CVS, ClearCase, etc), and it reports it in a nice web layout with all the build, nunit, fxcop results.
There is also a nice tray application that can be installed on the developers pc's which indicates the status of the builds, for example it becomes:
- green: build is successfull
- yellow: server is currently building
- red: build is failed
- gray: server is unavailable
It's always a moment of truth when checking in code and hoping that the tray application remains green
We use NAnt as build tool and NUnit for unit testing. The only thing to pay attention for is that for example deleted files in VSS remains in the working directory and therefore still be included by NAnt. Therefore we setup a small integration server where VSS, Microsoft.NET SDK 1.1 and CruiseControl.NET is installed. The build script that is called by CruiseControl.NET does basically the following tasks:
- delete all source files
- get latest version of sources
- get latest version of buildscripts
- build the sources
- test the binaries
(buildscripts, NAnt and NUnit are stored in VSS)
NAnt can do operations on VSS if you download NAntContrib, there you have a set of additional tasks like 'vssget', 'vsslabel', etc. Note that it is a real advantage of storing your buildscripts in VSS so that CruiseControl.NET always uses the latest buildscripts.
In order to have XP visual styles inside Visual Studio.NET you can simply add a manifest file to devenv.exe. Simply download the file manifest.zip and extract it into the directory where devenv.exe resides. For Visual.Studio.NET 2003 it's: C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE
This will ensure that your forms designer uses the XP visual style (only if the FlatStyle of a control is set to System) and even custom-made addins are in XP style!
RazorToolbox is a set of utilities/tools in the form of addins, macros, components, etc. for Visual Studio.NET. In the initial release of RazorToolbox we have ComponentDropper.
In .NET you can easily build components (= also controls), but in order to use them on your designer surface you have to add them in the toolbox of Visual Studio.NET. But there are some problems. For example if you are writing an exe-application and added some components in the exe-project, you cannot add them to the toolbox, because the toolbox only accepts DLLs. Another issue is when you are developing a set of components in a control library, you will have to refresh the toolbox for each component you added in the library, it is not automatically refreshed and is time-consuming. Besides that there are some controls in .NET that are not displayed in the toolbox, for example the PropertyGrid.
ComponentDropper allows you to drop a component on the designer surface from a set of assemblies. For example if you are writing an exe-application and added a usercontrol named UserControl1 like the screennshot below:

Take the ComponentDropper from the toolbox and drag it over the form where you want to drop UserControl1. You get something like:

This list gives the set of components that reside in the current project and the assemblies that are referenced in the project. There you can double-click on UserControl1 and it's added to the form.
There are some settings, like you can first build the project before ComponentDropper search for components in the current project. Also you can indicate that ComponentDropper searches in the list of references in the current project. A list of references can be excluded through expressions, for example: System.*.

Download:RazorToolbox.zip (223,59 KB)
Any feedback and comments are greatly appreciated!
Now you don't need anymore the architect edition of Visio to generate your UML diagrams from an assembly. Now you can use Assembly2Visio from GotDotNet.
It has the extra feature that you can use regular expressions to filter class names and its totally integrated in Visio 2003 through a macro. Nice tool!
Today I published the first version of the library delarou.Browser. The aim of the library is to wrap the browser functionality of Internet Explorer and Mozilla. It acts like a normal windows control in your toolbox and you can easily drag and drop the controls IEBrowser and/or MozillaBrowser on your designer surface. More information about the library can be found here.
Below you find a screenshot of the demo application (top MSIE, bottom Mozilla):

This library is an initial version and will frequently be updated, because this is a part of a bigger project that I am working on, namely SharpBrowser (more details about that project will come soon). Note that the control IEBrowserHost is not yet intended for use, it’s still in development
In a distributed application I created a project (facade) where all business logic reside. I wrote a ConfigSettings class where all configuration settings reside, like for example the connectionstring. These settings are fetched from an XML file through the XMLSerializer from .NET. To enforce layer abstraction I changed the protection level of the ConfigSettings class to internal.
But when I try to deserialize the xml I get an InvalidOperationException! I was a little bit surprised that apparently the XMLSerializer can only (de)serialize public classes!!! After changing the protection level to public everything works fine, but there goes my abstraction (of course you can write your own implementation)
Idera's SQLcheck quickly investigates, organizes and explains critical information about your server’s hardware, operating system and SQL Server. With SQLcheck's performance dashboard, you can quickly view detailed explanations and receive recovery suggestions. Get the information you need to efficiently manage your SQL Server environment.
Best of all it's FREE and it can be used as a screensaver!
This weekend I visited CeBIT 2004 at Hannover and as usual there was a lot to see. It was a trip of about 450 KM but we had no traffic problems, although there were a lot of road works. We slept in the hotel Montana Lauenau which was perfectly in order and was on the road to Hannover. Finding parking at CeBIT was far from easy, practically all parkings where full but we did find one for only 5 euro for the whole day!
One of the things I have seen a lot at CeBIT were usb-sticks (one seen of 1GB) and mp3 players in all kinds of formats and capacity. An original idea was Lubic where you can create your own PC case with components, like you do with Lego. It goes from an Airplane to a Giraffe, for example:

SOHOTANK Stackable External Box from the company Stardom was exacly what I was searching for. It has a very nice design and it's easily expandable. They offer also RAID solutions!

Today you see a lot of XAML-like implementations for .NET framework 1.1. XAML (pronounced "Zamel") is part of AVALON in Longhorn and it allows you to describe the layout of applications. Basically, you describe via XAML-tags your controls, events, etc. it's very intuitive.
One of the projects is wfml. You can find the article with the source code here.
Another project which is still in beta is xamlon. Closer to the release date Xamlon will be licensed per developer.
An implementation under the BSD License is MyXaml and it is increasingly successful. I think I will first play around with this implementation . An article from the author of MyXaml can be found on CodeProject
I think the developers who first implemented the concept were ic#code. They setup a library XmlForms which can be downloaded here and is used in SharpDevelop.
The ASP.NET Resource Kit is a nice bundle of tutorials, tools and free controls for any developer starting ASP.NET. It can be downloaded here (about 134MB). Go and get it!
|