Fresh from the FCKeditor website:
CKEditor 3.0 is here! After almost two years of hard development, we are proud to announce the first stable release of our next generation editor. You can now enjoy the best editor out there, added by even better (amazing!) performance, full accessibility, new interface, a brand new and rich API and more.
Other than a new name, CKEditor also brings us a new logo and a new site. For full details, check out http://ckeditor.com.
Resharper 4.5 Beta has just been released!
My favorite new feature is the new Solution wide analysis of unused code, this allows you to assume the code you are writing is NOT for a shared library, and thus can be marked as unused if it's never used within the current solution.
- Unused non-private declarations
- Unused return values of non-private methods
- Unaccessed non-private fields
- Unused parameters in non-private members
- Abstract or virtual events that are never invoked
- Unassigned fields
- Members and types that can be made internal instead of public
My second favorite new feature is definitely the MSTest project support, like they supported NUnit and other test frameworks before.
ReSharper:: The Most Intelligent Add-In To Visual Studio 2008 - C# 3.0, LINQ, VB.NET, ASP.NET, XML, XAML, build scripts. Best-of-breed tools for code analysis, code cleanup, code generation, and unit testing, plus multiple refactorings and code templates.
Recently I've bought a MacBook Pro. Great piece of hardware, and OS X is really nice for organizing photo's and creating presentations.
The real work obviously still needs to be done on a PC, however I couldn't live without the two-finger-scrolling anymore, so I tracked down this great little tool on Google Code:
two-finger-scroll
Run SysInternals tools directly
live.sysinternals.com - /
SysInternals has opened a share to their folder with utilities, meaning you can now run the SysInternals tools directly from explorer or the Run window by typing in:
\\live.sysinternals.com\tools\[toolname]
You can also browse the tools by opening the folder share:
\\live.sysinternals.com\tools
Download details: Parallel Extensions to .NET Framework 3.5 June 2008 CTP
Download details: Parallel Extensions to .NET Framework 3.5 June 2008 CTP
Parallel Extensions for .NET 3.5 June 2008 CTP is out! I still have to figure out what to do with it though...
Google Contacts API | Google Groups
Apparently while I wasn't watching for a while, Google launched their Contacts API last March. It's about time anyway. Can't wait to find a spare weekend to start experimenting.
ReSharper 4.0 RC and LLBLGen 2.6 RC
Two of my favorite products released important release candidates of their new products on the same day!
For both products the most significant addition is full LINQ support.
developer happiness is on it's way :)
ASP.NET development server very slow on Vista with Firefox - ASP.NET Forums
ASP.NET development server very slow on Vista with Firefox - ASP.NET Forums
In case your Visual Studio 2008 is really slow on Vista (Windows 2008 in my case) opn Firefox, helped me out:>
to Disable autotuning, run this from the command prompt:
- netsh interface tcp set global autotuninglevel=disabled
Additionally, disabling IpV6 in Firefox could help:
- Goto the about:config address in firefox
- filter by "network.dns.disableIPv6" and double-click to set to true
Windows Server 2008 Standard + RAID driver problems
When trying to install Windows Server 2008 Standard on a desktop system with a RAID-1 configuration, we couldn't load the appropriate drivers.
A message appears: "to continue installation, use the load driver option to install 32-bit and signed 64-bit drivers. installing an unsigned 64-bit device driver is not supported and might result in an unusable windows installation".
The only option is to press OK, and the installation will not list any drivers at all. There's no other option than to cancel the installation.
We've tried 3 different motherboards, trying to use the latest RAID drivers, all yielding the same results:
Anyone else experiencing problems with RAID drivers on Windows Server 2008/Vista?
Related:
Grading Vista 64-Bit plus RAID 1 No More: RAID 1 No More
update 23-5-2008: Additional non-working drivers include:
Issues like this remind me how lucky I am to only have to deal with deal with SOFTWARE problems normally
Labels: Windows 2008
Waste Management sues SAP over software failure
Nice to see a SAP customer finally having his "4 o' clock cup-a-soup" moment. (Dat zouden meer mensen moeten doen)
Microsoft: Future of personal health (video) - istartedsomething
As I'm starting an assignment at
Crossing Channels
regarding a health care related project, I was particulary interested in the following Microsoft video:
Microsoft: Future of personal health (video) - istartedsomething shown at a MIX08 session.
I'm back!
After quite some silent time, (the web logs at my previous employer are internal) I'm starting as a free lance software engineer, so this is a good time to start web logging again.
To start with, I've migrated all my outlook mail to Gmail, and started using Google Calendar.
However to sync my calendar with my new SamsungI600, I do require outlook for synchronization purposes.
What an excellent timing of Google to release Google Calendar Sync!
Labels: Google
ASPAlliance - Create your own HttpContext class: "System.Runtime.Remoting.Messaging.CallContext"
Labels: C#
Recently I was getting strange behaviour with ActiveX (mostly Flash Files) in Internet Explorer, where the Active content had to be clicked to be activated first (when hovering over the control, the message "click to activate and use this control" appears).
How annoying, especially since Flash sites are usually design-oriented sites, and a big dotted gray border doesn't really add to my idea of being 'stylish'.
The resolution is to remove the recent Windows Update (or better, not to install it at all):
Adobe - Macromedia Flash Player: "Update for Windows XP (KB912945)"
Labels: Flash
As commented on the blog entry above, the 'restart now' message returning every 15 minutes after running the windows update can be useful in some (very few) situations, for example grandma's never restarting their PC's...
Hey wait no grandma's always shut down their PC immediately after they're done playing solitaire... ehm ... no I'll get a reason later.
However, the Windows Update application doesn't seem to understand that if you don't click 'restart later' immediately, there might be a REASON for it, like running 3 virtual machines, and having to wait 1 hour before a workstation is back to the state it was before restarting.
Or for example a heavy load Windows 2003 Advanced server, Webserver or whatever server where a restart has to be planned very carefully to prevent the management from getting pissed, because yes, even there the lovely messagebox pops up.
I must add that the validaty of the "grandma" argument doesn't really count in a server environment, and if everything is all right, neither does the "help out people who don't know what they're doing" argument.
There are 2 checkboxes missing in this messagebox:
don't show this annoying box this session again and don't show this annoying box ever again
I know it's not much, but here's an alternative to the first one:
- place this command in a batch file named 'GoAwayWindowsUpdate.bat':
net stop wuauserv
beautiful...
Labels: Windows
I always disable all sounds on Windows. There's nothing more annoying than hearing the (way too long) windows startup sound on the wrong moments.
However, disabling all system sounds results in getting a system speaker 'beep' (at maximum volume) everytime you change the main volume control.
Better, but still bad, especially when using earphones and having iTunes
at a low level volume.
Well, here's the solution:
- run regedit.exe
change these key values:
[HKEY_CURRENT_USER\Control Panel\Sound] "Beep"="yes" "ExtendedSounds"="yes"
into
[HKEY_CURRENT_USER\Control Panel\Sound] "Beep"="no" "ExtendedSounds"="no".
Ahh enjoy the silence...
Labels: Windows
I stumbled upon a pretty extensive comparison between Java and C#. Probably a little pro-MSFT because it"s written by Dare Obasanjo, but still, they"re getting closer to the illusion of an unbiased comparison:
C# From a Java Developer's Perspective
Labels: C#
The first time I encountered a WikiWiki site, I immediately mailed the webmaster that there was something seriously wrong with their security. Yes, my only excuse is not reading TFM, and that it's a while ago.
FlexWiki is a .NET variant to Wiki, and I've been really annoyed with the fact that if you double click on a page, it starts editing.
Like a proper contributor of Open Source projects, I contributed the code that allows a user to save his preferences to a cookie, and disables the double click functionality, also because mr. Candera encouraged me to code it myself:
SourceForge.net: Modify: 1186821 - Make double click editing a user setting, so I did!
Open source the microsoft way
They couldn't accept my contribution because I don't work at Microsoft, and I have to sign an Assignment Agreement before I can contribute anything. You've got to be kidding me. What's the point of creating an open source product in the first place, if only one company is allowed to work on it?
I've left this comment (before they're childish enough to remove it);-)
How can you build an open source community like that?
Do microsoft guys have to take the fun out of everything?
Can't it just be some kind of checkbox?
I've requested the assignment agreement, how long is that
going to take?
Appearently, this is allowed by the license (CPL, or Common Public License) they're using.
Also, I was suprised to see that there are actual Developer Guidelines, as the source code doesn't comply at all, it contains so many unused code blocks and procedures, that I couldn't even find where to add a link in the menu on the left.
Update May 8: I've received, signed and sent the assignment agreement back to MS.
Even if it's just for the fun of sending something to
One Microsoft Way
Redmond, WA 98052
Where's the # in C#?
I'm one of the lucky ones to go from Delphi to C#.
Lucky, because the two languages share their intellectual father, Anders Hejlsberg, who copied many existing Delphi and C++ language concepts to C#
This means that Delphi programmers have a big advantage to Visual Basic programmers because they're already familiar with inheritance, polymorphism. Even to C++ coders who lack interfaces, events and delegates, and a even proper IDE (except for the very underrated Borland C++ Builder maybe).
I know that c++ got it's name from the incremental operator (c++ as a next iteration of C), but where did C# get it's pound suffix from?
Still I'm disappointed to miss some features that are available in Delphi, but not implemented in C#, like:
Delegate by Interface
In delphi it's possible to delegate the complete implementation of an Interface to a property. This way you don't have to redeclare each interface member inside the class, but it is possible to pass it to functions that need a IMyInterface Implemenation:
IMyInterface = interface (IInterface)
function Foo() : Boolean;
procedure Bar();
end;
TMyInterfaceImpl = class ( IMyInterface )
function Foo : Boolean;
procedure Bar() ;
end;
TMyType = class ( TObject, IMyInterface )
private
FMyImplementation : IMyInterface;
protected
function GetImplementation() : IMyInterface;
public property MyImplementation : IMyInterface
read GetImplementation
implements IMyInterface;
end;
function TMyType.GetImplementation()
begin
if not assigned (FMyImplementation then
FMyImplementation := TMyInterfaceImpl.Create();
result := FMyImplementation;
end;
Currently in C# you have to redeclare each member and delegate it to the implementation if you want separate your interface implementation from the class :
public interface IMyInterface {
bool Foo();
void Bar();
}
public class MyInterfaceImpl : IMyInterface {
bool IMyInterface.Foo(){ ... }
void IMyInterface.Bar(){ ... }
}
public class MyType : IMyInterface {
IMyInterface myImplementation;
IMyInterface MyImplementation{
get
{
if (myImplementation==null)
myImplementation = new MyInterfaceImpl();
return myImplementation;
}
}
bool IMyInterface.Foo(){
return MyImplementation.Foo();
}
void IMyInterface.Bar(){
MyImplementation.Bar();
}
}
Strictly Typed Types
In Delphi it's possible to declare a variable, that contains a reference to the class of a type, and can be used as a type. I know that sounds a little complex (don't even know if it's correct) but an example should clarify:
TMyType = class ( TObject, IMyInterface )
private
FMyImplementation : IMyInterface;
protected
function GetImplementation() : IMyInterface;
public property MyImplementation : IMyInterface
read GetImplementation
implements IMyInterface;
end;
TMyTypeClass = class of TMyType;
function CreateInstance(AType : TMyTypeClass):TMyType
begin
result := AType.Create();
end;
procedure Main()
var MyType : TMyType;
begin
MyType := CreateInstance(TMyType);
end;
Now it's only possible to pass a type that inherits from TMyType.
Why doesn't c# have anything like this? C# only knows the Type type, and if you would want a method to only accept a certain type, you need to do it like this:
public MyType CreateInstance(Type type){
if( !type.IsSubclassOf( typeof(MyType) ) )
throw new ArgumentException("Type parameter is of incorrect type");
return Activator.CreateInstance(type);
}
public static void Main(){
MyType instance = CreateInstance(typeof(MyType));
}
Type Suffices and Generics in C# 2.0:
With generics in C# 2.0 it's possible achieve something like strictly typed types, using the where keyword in generics, wich will force the collection to only accept members that implement ICloneable:
public class CloneableCollection<T> : Collection<T>, ICloneable where T : ICloneable
{
public CloneableCollection<T> Clone() {
CloneableCollection<T> collection = new CloneableCollection<T>();
foreach (T o in this)
collection.Add( (T) o.Clone() );
return collection;
}
object ICloneable.Clone() {
return this.Clone();
}
}
In C# 2.0, types can contain certain suffices to express additional compiler functionality:
<Type> - expresses a generic type, for example Collection<MyType> for a strictly typed collection.
? - expresses a value type that can contain a null value, for example
int myValue = null;
is impossible, but when declaring it as Nullable:
int? myValue = null;
it is possible. The question mark is actually a shorthand for the generic type Nullable<T>, so Nullable<int> and int? are in fact the same.
Too bad they didn't implement a NotNullable type for non-value types, using the ! (exclamation mark):
MyType! myType = null;
This is however, it is implemented in the Cω Language (pronounced COmega), a C# variant with support for type-safe support for table and document manipulation (in other words: strictly typed SQL and strictly typed XML)
COmega also supports for the * (stream) operator. This might confuse C++ developers, however it has nothing to do with a pointer. The stream operator can be seen as a array, but of unspecified length, or a dynamic strictly typed (lazy) collection. If a type contains this suffix, it both implements the C# IENumerable (edit: was C# INumerable) and the IEnumerator interface, and the values are dynamically returned as the collection is iterated:
static int* FromTo(int s, int e) {
for (int i = s; i <= e; i++) yield return i;
}
public static void Main() {
int* OneToTen = FromTo(1,10);
foreach(int j in OneToTen){
Console.WriteLine(j);
};
}
In other words, the for-loop in FromTo, continues only if the next value is requested by the iterator. In this case the foreach loop through the entire collection, so for every value between 1 and 10 the for loop is executed. This creates great possibilities for ASynchronous communication like reading a large recordset from a database, because the next record is only fetched when it's requested, somewhat like the DataReader class, but in a strictly typed way.
And the point is...
Here I finally come to my point. Both the where and typeof keywords are essentially performing the same function, where I think the typeof isn't event necessary now, because there's no reason why this syntax shouldn't work, because MyType is already a type, why is the extra typeof() call necessary?
public MyType CreateInstance(Type type){
return (MyType) Activator.CreateInstance(type);
}
public static void Main(){
MyType instance = CreateInstance(MyType);
}
My proposal for C# 3.0 would be to replace them both with the Type# syntax, finally giving the # (pound) a function in C#, wich performs the same functionality as the Delphi "TMyTypeClass = class of TMyType" syntax.
Additionally, you would be able to use this as a typeof specifier in a method, and this could be our previous example rewritten, without having to specify:
public MyType CreateInstance(MyType# type){
return (MyType) Activator.CreateInstance(type);
}
public static void Main(){
MyType instance = CreateInstance(MyType);
}
This could even give the previous ICloneableCollection<T> a easier to read look, and conforms more to the C# syntax:
public class CloneableCollection<ICloneable# T> : Collection<T>, ICloneable
{
public CloneableCollection<T> Clone() {
CloneableCollection<T> collection = new CloneableCollection<T>();
foreach (T o in this)
collection.Add( (T) o.Clone() );
return collection;
}
object ICloneable.Clone() {
return this.Clone();
}
}
And, last but not least, it would eliminate 2 extra keywords, wich must be important to Microsoft as well, because they're very proud of the low amount of keywords in C#.
I'd like to hear your comments on this.
For my current employer Vitronics Soltec, I had to build a coupling between Lotus Notes and SQL Server.
Proposion N2N is an excellent library to achieve this. Basically, it's a (partial) implementation of an ADO.NET DataProvider for Lotus Notes. It has many advantages (and way less bugs) over the Notes ODBC Connector, as it can even query for attachments, retrieve rich textfields and retrieve field values not included in a view. You can even dynamically execute Lotus Notes Formula's from the SQL query
The SQL isn't close to any SQL standard, but the resemblance is good enough. However, it is very well documented, and examples for almost every possible usage is provided, so learning is very easy, though knowledge of both SQL and Lotus Notes will help a lot
The current version (version 2.11) still contains several bugs, of wich the most annoying is that the IDbDataAdapter methods aren't implemented correctly, wich you can call the methods directly (NsfDataAdapter.Fill(myDataset), however you can't call them through the interface (IDbDataAdapter.Fill(myDataSet)) as it raises a NotSupportedException.
.NET Application Blocks
The Proposion variant of some of the Microsoft Application Blocks are freely provided: the Exception Management Application Block, and the Data Access Application Block.
Proposion N2N Application Blocks
I needed to use the Data Access Application Block, however the FillDataSet caused an endless recursion, so I had to modify the examples.
The improved Visual Studio project is available here:
Proposion N2N Data Access Application Block
I've had good results with Proposion N2N, however there are some issues that would prevent me from deploying it with clients:
Potential Adminstration problems
The Proposion N2N Library comes with a strict Activation, and once installed, it isn't possible to install it again. To move the license to another computer, you would have to mail to Proposion to transfer the license. So far I've had very good responses, but I don't want to know what I'd have to do when their website would go down, or the small company would decide to start doing something else.
High priced
The Proposion N2N is quite expensive to deploy, for my development I needed to install a development it on my laptop, and later on another machine to maintain the synchronization between the databases, I'd have to buy another license, or transfer the license from my laptop to another machine, wich would mean I can't develop anymore using the library, and incorporating the problems mentioned before. With a support contract included ($495/y), a developer license ($795) and a processor license ($1395), it would mean I have to pay about $2600 for a ADO.NET driver that can only be used on 1 machine.
conclusion
To us it's well worth the money, because it save's a lot of Domino API programming, but the Activation policy and maintenance contract will definately have me waiting as long as possible before buying a license for the server.
Labels: C#, Lotus Notes
XSD2DB
I've become a developer with XSD2DB, a command line tool written in C#, that will read a Microsoft ADO.NET compatible DataSet Schema File (XSD) and generate a database from it.
To make it a little more accessible, I've created the descriptive HTML website for it, and planning on creating new releases.
Now all we need is people that want to use it and give us some comments on it...
Sql Server (MSSQL) msde MSDE 2000 Installation Fails
After installing Visual Studio 2005 my SQL Server 2000
Developer Edition stopped working, giving an error from
Enterprise Manager: Unable to connect to server. Reason: SSL
security error. ConnectionOpen (SECDoClientHandShake())...
Microsoft has this technote about this: Thinking it over, all
of these references apply to me:
302409
FIX: Unable to Connect to SQL Server 2000 When Certificate
Authority Name Is the Same As the Host Name of the Windows
2000 Computer
275307
BUG: Installation of SQL Server 2000 Desktop Engine Fails on
Computers That Already Have SQL Server 7.0 Tools
Installed
299351
BUG: MSDE Installation Fails on Systems That Have SQL Server
2000 Service Pack 1 or 2 Installed Too late for me, because
I already uninstalled SQL Server 2005 and 2000 beta and
everything related. Uninstall SQL Server 2000 didn't work,
because somehow the application doesn't show up in the
add/remove programs. I can't install MSDE anymore because it
gives these errors: "Setup failed to configure the
server. Refer to the server error logs and setup error logs
for more information." After some searching some
people suggested the cause might existing datafiles, but
after removing all datafiles, it still doesn't work.
Installing with another instancename doesn't help. either
These are the MSDE Setup parameters:
- SAPWD="[password]" default
password for sa user
- /l*v [logfile]log the complete
installation
- SECURITYMODE=SQL install with
mixed mode authentication
- DISABLENETWORKPROTOCOLS=0 enable
access from other computers
- DATADIR ="[data folder]" specify a
dir other than default
-
INSTANCENAME="instancename"
- BLANKSAPWD=1 Install with blank SA
Password. SAPWD overrides this.
- ALLOWXDBCHAINING=1 Enables
cross-database ownership chaining.
- UPGRADEPWD="" Use if your
upgrading to SP3
- /i
- /settings You can specify all
MSDE parameters using an ini file in this format: [options]
DATADIR ="Data_Folder"
INSTANCENAME="Instance_Name"
Examining the logs I came to this problem:
Starting
custom action ConfigServerExecuting "C:\Program Files\Microsoft
SQL Server\80\Tools\Binn\cnfgsvr.exe -V 1 -M 1 -U sa -I
"MSSQLSERVER" -Q "SQL_Latin1_General_CP1_CI_AS""MSI (c)
(70:54)
[13:55:09:921]: Font created. Charset: Req=0, Ret=0, Font:
Req=MS Shell Dlg, Ret=MS Shell Dlg Setup failed to configure
the server. Refer to the server error logs and setup error logs
for more information.MSI (s) (D8!24)
[13:55:42:031]: Product: Microsoft SQL Server Desktop
Engine -- Setup failed to configure the server. Refer to the
server error logs and setup error logs for more information.
Action ended 13:55:42: InstallFinalize. Return value
3.
here's someone with the same problem:
http://www.masterado.net/home/ng/forum.sqlserver.msde/post13125079.aspx
Here's the microsoft technote on the subject
http://support.microsoft.com/default.aspx?scid=kb;en-us;816499&Product=sql2k
Nothing is working, so now I'll try this:
HOW TO:
Manually Remove a Microsoft SQL Server 2000 Desktop Engine
(MSDE 2000) Instance
The last post here by the way says that if you disable the
SECURITYMODE=SQL, it might work as well.
http://community.installshield.com/archive/index.php?t-124746.html
No, it doesn't.
Installing SQL Server 2000 Developer Edition gives me the
same problems, they're all related to the
(SECDoClientHandShake())... error.
I'm trying to remove the certificate authority installed
with selfssl.exe, see another post:
Setting up SSL in Windows 2003 & XP (within 10
minutes)
Now I'm trying to remove it using certutil, as described
here.
certutil.exe is available for Windows XP in the
Windows Server 2003 Administration Tools Pack
using this command certutil.exe -delkey "SELFSSL"
I was able to delete the conflicting certificate authority
keys, and tried reinstall (after restarting for the zillionth
time ofcourse)
Great! it works!
Apply SQL Server Service Pack 3, reinstall the SelfSSL
Certificate, and everything should be all
right...
conclusion
Solution in a nutshell:
http://www.sqlmonster.com/Uwe/Forum.aspx/sql-server-connect/1906/SSL-Security-Error-in-WinXP-SP2
Wich links to
PRB: SQL Server 2000 Installation or Local Connections Fail
with "SSL Security error :ConnectionOpen
(SECDoClientHandshake())" Error Message
Labels: Sql Server
Goals of this post:
To get a testing server (Microsoft Windows Server 2003 Web Edition) running configured with:
- SQL Server 2000
- ASP.NET 1.1 ( with remote debugging enabled)
- SSL for security
- Subversion 1.12 for Version Control
1. SQL Server 2000
Well, let's get you out of this illusion, because it's NOT going to happen. Maybe you're just like me and just looked real closely over and over again at the comparison chart of Windows 2003 editions and thought that this time you install software that is NOT the full-blown bloated ultra-large-universal-enterprise-architect-edition version that you usually need because there's this tiny-little feature that you absolutely need, even if you're not a universal-10000-employees (idiot-collegues)-that-you-need-to-collaborate-with-sized-enterprise, there was absolutely nothing that you would ever need that this edition lacks.
You should have known better. In the case of Windows Server 2003 Web Edition, you probably never watched the Overview of Windows Server 2003, Web Edition that will tell you exactly what you need to know (header "limitations") : Do not use Windows Server 2003 Web Edition.
Well, that's too late for that now, so you'll have to settle for Microsoft SQL Server: MSDE 2000 Release A
I think that Microsoft thought that whoever runs a website would probably never need a database. "For what? C'mon there's frontpage right? Everybody can work with that!". Let's put that on this list above the "640K ought to be enough for anybody"-quote.
One of the other great features of Windows Server 2003 Web Edition is that you can't set up a domain controller either! But we'll get to that fun in the next part.
2. ASP.NET 1.1 ( with remote debugging enabled)
Well, the first part (outside the parentheses) is easy! You just have to run this command (no it doesn't work out of the box, with me at least):
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322>aspnet_regiis.exe -i
The second part (debugging), I never got running, probably due to some error in the deep dark caves of COM+, 'Access Denied'. Just read and enjoy the fairytale '1001 problems that can cause the same error message while debugging ASP.NET' and try them all out, but it's NOT going to happen pal. I've been Googling for 2 days to solve this problem, but ultimately I think it's because I'm not in the same domain as the server. Actually, there is no domain, and our beloved Windows Server 2003 Web Edition does not enable us to set one up.
If you want to save time, just keep the debugging restricted to your laptop.
Some tips and best practices you can try if you don't get it running:
- Install Visual Studio 2003 on this server, and run it with remote desktop (no I'm not kidding, this is actually a Microsoft solution for remote debugging over the Internet or across domains). Alternatively you can just install the .NET FrameWork SDK
- Disable all firewalls and other useless security restrictions.
- Enable the guest account, and just put every user, including the 'everyone' and 'guest' in the 'Administrators' and 'Debugger Users' group. No one is ever going to find out your server is that unsecure. And then again, who cares, if something goes wrong, just blaim those "damn-smart-(they-must-have-put-a-lot-of-work-in-that)-hackers"
- Enable frontpage extensions for all webs, uninstall the IIS Lockdown tool, and never run any updates because it might hurt your precious configuration.
- Make sure that in your production environment every setting is the same as above, to make sure you're website keeps running.
Download and install. This is easy. Figure it out for yourself. It's well documented.
If you're running it on a server, you don't want to be logged in all the time, so use SVN Service Wrapper for Windows.
The only problem is with Visual Studio .NET 2003, because every website that you try to open with Visual Studio will give the error "Unable to retrieve folder information from the server with my ASP.NET web project", because it doesn't like folders that start with a dot(".") like ".svn" that is used default by TortoiseSVN.
By the way, I didn't have this problem when I was still working remotely on my testing server! Interesting right...?
Lucky you, they created a special version for you! search for "TortoiseSVN for Win2k/XP ("_svn" version) " in here, and read here for more info.
If you've already checked out your repository and now stuck with ".svn" folders, just use my little Delphi tool SVNRenamer, wich will rename all .svn folders to _svn.
Conclusion
In this article we've learned some very useful worst practices and don'ts:
- Don't read all the related information of software before installing or buying it, EVEN if it will take you days. It's not worth it, believe me.
- Installing ANY other version of (especially Microsoft-) software than the most bloated, fat and expensive version available (mostly denoted by a very misleading 'Enterprise' classifier, because even a 1-man team will need this one)
- Trying to get Sql Server running on a W2K Web Edition machine
- Debugging ASP.NET on a Remote Server
- Don't think Microsoft Visual Studio introduced the .svn folder bug on purpose. There's no way they want to discourage unix-like paths in Windows. Try to create an empty .htaccess file in explorer, it works great!
I thought setting up SSL and configuring the right parts of my website would be a pain, so I never gave it a try, until stumbling into this little piece of art by Matt Solars:
Switching Between HTTP and HTTPS Automatically: Version 2
Combing this with the The IIS 6.0 Resource Kit Tool SelfSSL, my complete website is safe, secure (well, considering I'm my own certificate authority not really secure, but the production environment is going to be another story) within 10 minutes from the initial idea of setting up SSL.
Woohoo!
For everyone who didn't know this yet, this is the url for the best DHTML calendar in webpages...
http://www.dynarch.com/projects/calendar/
customize with styles, cross-browser, fast and easy & intuitive to use...
Converting Simplified Chinese (GB2312) to Unicode (UTF-8)
Todat I needed to convert a Word document that was encoded in Simplified Chinese (codepage GB2312) to Unicode (UTF-8) to be able to combine it with other characters in an XML Document.
First I tried using iconv (http://www.gnu.org/software/libiconv/) but turned out to be too hard to work with.
So now I created my own little application that performs this task utilizing the .NET FrameWork 1.1, and worked out pretty well. You can download the result (including C# source code) from here:
http://www.netindustry.nl/unicodeeditor
Labels: Windows Forms
HOW TO: Use the SHGetFileInfo Function to Get the Icons That Are Associated with Files in Visual C# .NET
Good example if you want to build explorer-like interfaces:
HOW TO: Use the SHGetFileInfo Function to Get the Icons That Are Associated with Files in Visual C# .NET
Good example if you want to extend explorer:
Windows Shell Extensions in .NET
Labels: Windows Forms