.comment-link {margin-left:.6em;}
Gert .Net
[GertDotNet]
20081218
 
Het staartje van de e-Waves Phone Chip
Het kwakzalvers verhaal van de -Wave Phone Chip is niet alleen aan Omega Pharma te wijten. De apothekers hebben hier mede schuld aan, door zowat alles te verkopen wat ze kunnen. Of het werkt, hoe het werkt, en of het schadelijk is doet er niet toe. De winkel moet draaien, en ze kunnen hun klanten alles wijsmaken, en dat doen ze dan ook, ze hebben immers gestudeerd.

Dat ik niet de enige ben die er zo over denkt kan je hier lezen: http://www.consumentenpagina.be/article/2008/51/niet-alleen-e-waves-phone-chip-twijfelachtig-product
20081212
 
Omega Pharma
Waarom reageer ik, en veel anderen zo sterk op de kwakzalverij van Omega Pharma, terwijl er zoveel bullshit wordt verkocht in apotheken?

Volgens mij is dat omdat de e-Waves Phone Chip, voor mij totaal niet geloofwaardig is, maar het verhaal wordt zodanig gebracht dat ik me wel kan voorstellen dat anderen er in trappen. Hierbij denk ik dan aan familieleden.

Als een klein, obscuur Gents bedrijfje een anti GSM wrat op de markt brengt, wat is dan de kans dat ik daarmee in aanraking kom. Bijna niks toch. Wie heeft er ooit gehoord van die fake-chips dit bij de biowinkel liggen. Als mensen zichzelf willen oplichten: naar die biowinkel voor computerchips.

Maar nu heeft een manager binnen een BEL20 bedrijf een distributie netwerk klaar liggen. En de aandelen van zijn bedrijf kunnen wel een injectie gebruiken. En hij denkt, wat die homeopaten lukt, zal mij ook wel lukken. Apothekers staan nu ook niet bepaald bekend als bezorgd om de (financiele) gezondheid van hun klanten. Als ze er aan kunnen verdienen gaat de grootste kwak over de toonbank. (denk aan echinaforce, homeopathie, vitaminepreparaten, etc, etc)

Met andere woorden, de zwendel van Omega Pharma komt angstwekkend dichtbij. En ik zie mezelf al zo een groene wrat op m'n GSM plakken met kerstavond. Oh gruwel, de schande die ik dan op kantoor zou moeten doorstaan. (En dan past die GSM niet meer in het GSM zakje).

Ik en vele andere moeten zo gevoeld hebben, want op het Internet was er toch redelijk wat ruchtbaarheid aan deze zwendel. Dit in tegenstelling tot de "klassieke" media, die eerst 3 dagen hebben afgewacht, ondertussen met Copy - Paste spelend met de persberichten van de oplichters zelf.

Ik denk dat het nu wel goed komt, en dat ik niet meer moet vrezen voor een groene wrat onder de kerstboom.


20081210
 
e-Waves Phone Chip en Facebook
Vandaag heeft bijna de hele dag op de http://www.ikbelveiliger.be site een link naar een facebook groep gestaan.

Het is alleen spijtig dat de meeste Internet gebruikers het bedrog van dit GSM plakkertje direct inzien. Ook zag iedereen direct dat de positieve posts van een media bedrijfje (Across ofzo) afkomstig waren.

Het gevolg: De kwakzalvers van ikbelveiliger.be hebben de link van hun pagina gehaald, en de facebook groep is ook weg.

 
e-Wave Phone Chip
Ik zit mij de laatste dagen te ergeren aan het media offensief van Omega Pharma. Blijkbaar is de recessie bij Mark Coucke in zijn hoofd geslagen, en doet hij nu wanhoopspogingen om zijn portemonnee te vullen.

Hierdoor worden we nu dus ook al vanuit het buitenland uitgelachen:

20080916
 
The new hottest site
Check out http://www.stackoverflow.com.
20080523
 
Why Codeplex
Recently I started two opensource projects on CodePlex.

Both projects contain some controls for Windows.Forms that I could not find (for free) myself.

But why on CodePlex?

Because CodePlex has good Visual Studio integration with the Team Foundation client. This make the project management al lot easier.


20080501
 
HP 2575 scanning and Vista
I've had some problems to scan using the HP Photosmart 2575 on my Vista machine. I connect to the HP 2575 via a network interface. This way I can share it with my portable or any other future machine.

On my XP this works fine, using my Vista I can print alright, but scanning never worked.

When I recently seached HP support of a solution, there was a remark about the firewall blocking access. (http://h10025.www1.hp.com/ewfrf/wc/document?docname=c01086194&lc=nl&cc=be&lang=nl&rule=5413&product=441240&dlc=nl in Dutch).

To get stuff to work I followed these steps:
  1. Give the Photosmart a fixed IP address
  2. Add the files listed to the firewall to have full access.
    (hpqkygrp.exe, hpqscnvw.exe, hpzipm12.exe, hpzinw12.exe, hpqtra08.exe, hpqthb08.exe)
  3. The same for the ports on this page, both in and out.
    UDP: 161, 427, 137
    TCP: 9220, 9500, 9290
  4. Full uninstall of all HP software
  5. Reboot, computer and Photosmart
  6. Disable the firewall
  7. Re-install software from HP download (http://h10025.www1.hp.com/ewfrf/wc/softwareList?os=2093&lc=nl&cc=be&lang=nl&product=441240&dlc=nl)
  8. Re-enable the firewall

And now, it all works.


20080321
 
string.Format != Math.Round
Numbers with string.Format are rounded differently when using Math.Round using the same number of digits.

You can see this when running the following code:
            for (int i = 0; i < 10; i++)
{
decimal d = 1m + (decimal)i / 100m;
System.Diagnostics.Debug.WriteLine(string.Format("Format only: {0:f1} - Rounded: {1:f1} - raw: {0}",
d, Math.Round(d, 1)));
}


This gives the following output:
Format only: 1,0 - Rounded: 1,0 - raw: 1
Format only: 1,0 - Rounded: 1,0 - raw: 1,01
Format only: 1,0 - Rounded: 1,0 - raw: 1,02
Format only: 1,0 - Rounded: 1,0 - raw: 1,03
Format only: 1,0 - Rounded: 1,0 - raw: 1,04
Format only: 1,1 - Rounded: 1,0 - raw: 1,05
Format only: 1,1 - Rounded: 1,1 - raw: 1,06
Format only: 1,1 - Rounded: 1,1 - raw: 1,07
Format only: 1,1 - Rounded: 1,1 - raw: 1,08
Format only: 1,1 - Rounded: 1,1 - raw: 1,09

Take a special look at the line with 1,05 in the raw column. There is a difference between the passing the raw and the rounded value into the string.Format method.

If you look at the documentation of the Math.Round method:

The behavior of this method follows IEEE Standard 754, section 4. This kind of rounding is sometimes called rounding to nearest, or banker's rounding. It minimizes rounding errors that result from consistently rounding a midpoint value in a single direction.


You can control the behaviour of this rounding using an overloaded method with the MidPointRounding parameters specified. Looks like the default for string.Format is AwayFromZero, while Math.Round uses ToEven as a default.
20071005
 
Upgrade HTC TyTn to WM6
Lately I upgraded my HTC TyTn to Windows Mobile 6, using the firmware upgrade provided on the HTC site.

After the upgrade I was unable to find Terminal Services Client, or Remote Desktop or whatever it is called.

The main reason I choose the TyTn was the ability to remotely control our servers. Why else would you need all these connectivity, large screen and large box?

Lukily (using Google) it is possible to find a seperate download for "WM6 Remote Desktop".

But still I wonder why HTC decided to leave the Remote Desktop out. If I just want to read my emails online, I would be a Blackberry owner.
20070716
 
Ketnetkick op Vista
Ketnetkick is duidelijk niet gemaakt voor Windows Vista. Met wat kunst en vliegwerk heb ik het op de volgende manier aan de praat gekregen:

DE CD
De CD is heel erg traag. Het eerste wat ik gedaan heb, is de CD naar de harde schijf gekopieerd. Dat scheelt al een hele boel.

120 DPI
Met die mooie schermen van tegenwoordig, met enorme resoluties, kies ik er normaal voor om 120 DPI te gebruiken. De beheersmodules van Ketnetkick kunnen hier slecht tegen. Dus tijdens het installeren de standaardwaarde van 96 DPI terugzetten is noodzakelijk. Anders kan je een heleboel knoppen niet bedienen.

Setup
De Setup vervolgens uitvoeren met "Als Administrator uitvoeren". Ook dan is het geheel nog traag. Geduld hebben is hier de boodschap.

Tijdens de setup wordt je gevraagd om het beheerderswachtwoord etc. Dit kan je maar beter bij de hand hebben. Ik heb een documentje gemaakt met alle wachtwoorden van alle gebruikers (mijn kinderen), en de beheerder. Die heb ik onder de Gedeelde Documenten opgeslagen. Want ik heb die straks nog nodig, ook bij andere gebruikers.

Na de setup staat er een icoontje op je desktop. Even via de eigenschappen de compatibliteit op Windows XP zetten. En nu weer uitvoeren (als Administrator). Nu worden er updates geinstalleerd.

Startscherm
Een van de kronkels in Vista, is dat een programma dat de tekst Setup, Install of Start (en waarschijnlijk nog een paar) bevat, alleen als administrator kan worden gestart. Ik wil liever niet dat mijn kinderen de hele tijd als admin actief zijn. Dat maakt het namelijk voor hackers wel zo gemakkelijk, en ook kunnen ze dan Ouderlijk toezicht aanpassen etc. Niet erg handig dus.

Nu wil het dat het programma om Ketnetkick te starten iets heet als: Ketnetkick Startscherm.exe. Dus komt er bij het icoontje een schildje bij te staan, dat aangeeft dat alleen Administrators het kunnen starten.

Je kan dit oplossen door naar C:\Program Files\Ketnetkick te gaan, en daar het programma Ketnetkick Startscherm.exe een andere naam te geven. Ik heb zelf voor Ketnetkick Scherm.exe gekozen. Daarna moet je ook het start icoontje (op de desktop en in het menu) nog aanpassen naar de nieuwe naam.

Als je dit goed hebt gedaan, moet je niet telkens als admin aanloggen om Ketnetkick te kunnen spelen.

Andere gebruikers
Ik heb voor al mijn kinderen een aparte account staan. De manier waarop Ketnetkick zijn gebruikersinformatie opslaat is niet compatibel met meerdere Accounts onder Windows Vista.

Om onder alle accounts Ketnetkick te kunnen spelen, moet je bij elke account de Ketnetkick-gebruikers invullen. Dus inloggen bij iedereen die wil spelen, daar gebruikersbeheer opstarten, en de gebruikers invullen.

Hier komt dat bestandje met de wachtwoorden goed van pas. Als je die onder Gedeelde documenten zet, kan je er van bij ieder account bij.

Vergeet ook niet om bij ieder account even te controleren of de Windows XP compatibiliteit aan staat. Anders doet hij het ook niet.

Game explorer / Ontspanning
Om de Desktop niet te vervuilen, sleep ik ook nog ieder spel in de Ontspanning / Game explorer. (Ik heb wel een shortcut hiernaar bij de kinderen op de desktop gezet). Na die actie moet je ook weer even controleren de XP compatabiliteit controleren.


20070130
 
Pscx on x64

Installation of PowerShell Community Extensions on 64 bit Windows does not work, here is a workaround.

After installation is finished, the x32 will work, for the x64 version of Powershell you have to do some extra work. First start PowerShell.

Then register the pscx.dll with the 64 bit version of installutil. (Source of information: http://msdn2.microsoft.com/en-us/library/ms714644.aspx).

PS> set-alias installutil $env:windir\Microsoft.NET\Framework64\v2.0.50727\installutil

PS> installutil "$env:pscxhome\pscx.dll"

PS> add-pssnapin pscx

On the first line the 64 is important.

Ready.


 
Send mail with PowerShell

An easy way of sending mail (via SMTP) using Powershell is to install the PowerShell Community Extensions. You can find them at: http://www.codeplex.com/PowerShellCX.

BTW: This entry is posted using Word 2007.


20061031
 
Very Loud Beep on my Dell Inspiron

The Story

Some days during my lunch break my Dell Inspiron 9400 makes very loud noise. Normally this happens during my lunch break or when using another computer.

And this is not a very nice beep. It sounded like the beeps my old computer made when there were no sound cards. Only a lot louder.

Disabling the speaker and so did not help. Also changing the sound settings. etc. etc.

The Cause

Google Desktop, that is indexing PDF files.

The Solution

Actually two solutions for this:

  1. Disable the "Beep" device. Go to the device manager and select View/Show Hidden devices, and then you can find it under the non-plug and play devices.
  2. Do not allow Google Desktop to index PDF files.

20060830
 
Fighing spyware II: pmnlk.dll
My neighbours computer still had very bad response times.

Only in "safe mode with command prompt" it was usable.

Using autoruns (from sysinternals), I found that the computer added startup code to pmnlk.dll to the registry.

I was unable to delete this file, since it was always locked by some process. I was able to find this process using listdlls (thank you Sysinternals). This dll was loaded by winlogon.exe.

So I killed this program (using procexp) and then I was able to delete the pmnlk.dll file.

After that, I was able to run a anti-virus program normally, install Windows Defender, connect to the Internet and run Microsoft Update.
20060824
 
Fighting Spyware

The company nextdoor has 2 PC's. Only one is connected to the Internet, and this is the Big Bad Internet.

For some reason, they put this computer full with spyware. This computer is so overloaded with spyware that it does not function at all anymore. It is impossible to start any program. So that's where I should kick in.

My computer's at work and at home don't have any spyware problem. Why, I don't know but I think I know why:

Now back to the fight.

First thing, was trying to install an anti-virus and anti-spyware application. But this computer was so terribly slow, this was impossible.

The I tried to install from safe-mode (using the magic F8 during boot). But then you cannot install anything.

Then the Big Bad Internet came to the rescue:

So after 2 weeks (!!!) this PC was back to a state where it was stable to install software.

First thing the user did was to install some virus that disable the anti-virus software.


 
Oracle 8.1.7 and .Net

So after a long and painfull process I found out that:

My conclusion:

Do not use Oracle 8 client to connection to 9i or later databases.


 
Rounded rectangles
Copied from somewhere, I think CodeProject and then adjusted somewhat:


using System;
using System.Collections.Generic;
using System.Text;

using System.Drawing;
using System.Drawing.Drawing2D;

namespace Study.XmlSettings.GDIUtil {
class RoundedRectangle {

private RectangleF _baseRect;
private float _radius;

public RoundedRectangle(RectangleF baseRect, float radius) {
this._baseRect = baseRect;
this._radius = radius;
}

public RoundedRectangle(Rectangle baseRect, int radius) {
this._baseRect = new RectangleF(baseRect.X, baseRect.Y, baseRect.Width, baseRect.Height);
this._radius = radius;
}

public GraphicsPath Path {
get { return this.GetRoundedRect(this._baseRect, this._radius); }
}

public void Fill(Brush b, Graphics g) {
using (GraphicsPath p = this.GetRoundedRect()) {
g.FillPath(b, p);
}
}

public void Draw(Pen p, Graphics g) {
using (GraphicsPath gp = this.GetRoundedRect()) {
g.DrawPath(p, gp);
}
}

public void DrawFilled(Pen p, Brush b, Graphics g) {
using (GraphicsPath gp = this.GetRoundedRect()) {
g.FillPath(b, gp);
g.DrawPath(p, gp);
}
}

public void DrawFilled(Color border, float borderWidth, Color fill, Graphics g) {
using (Pen p = new Pen(border, borderWidth))
using (Brush b = new SolidBrush(fill)) {
DrawFilled(p, b, g);
}
}

private GraphicsPath GetRoundedRect() {
return this.GetRoundedRect(this._baseRect, this._radius);
}

private GraphicsPath GetRoundedRect(RectangleF baseRect,
float radius)
{
// if corner radius is less than or equal to zero,
// return the original rectangle
if( radius<=0.0F )
{
GraphicsPath mPath = new GraphicsPath();
mPath.AddRectangle(baseRect);
mPath.CloseFigure();
return mPath;
}

// if the corner radius is greater than or equal to
// half the width, or height (whichever is shorter)
// then return a capsule instead of a lozenge
if( radius>=(Math.Min(baseRect.Width, baseRect.Height))/2.0)
return GetCapsule( baseRect );

// create the arc for the rectangle sides and declare
// a graphics path object for the drawing
float diameter = radius * 2.0F;
SizeF sizeF = new SizeF( diameter, diameter );
RectangleF arc = new RectangleF( baseRect.Location, sizeF );
GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath();

// top left arc
path.AddArc( arc, 180, 90 );

// top right arc
arc.X = baseRect.Right-diameter;
path.AddArc( arc, 270, 90 );

// bottom right arc
arc.Y = baseRect.Bottom-diameter;
path.AddArc( arc, 0, 90 );

// bottom left arc
arc.X = baseRect.Left;
path.AddArc( arc, 90, 90 );

path.CloseFigure();
return path;
}

private GraphicsPath GetCapsule( RectangleF baseRect )
{
float diameter;
RectangleF arc;
GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath();
try
{
if( baseRect.Width>baseRect.Height )
{
// return horizontal capsule
diameter = baseRect.Height;
SizeF sizeF = new SizeF(diameter, diameter);
arc = new RectangleF( baseRect.Location, sizeF );
path.AddArc( arc, 90, 180);
arc.X = baseRect.Right-diameter;
path.AddArc( arc, 270, 180);
}
else if( baseRect.Width < baseRect.Height )
{
// return vertical capsule
diameter = baseRect.Width;
SizeF sizeF = new SizeF(diameter, diameter);
arc = new RectangleF( baseRect.Location, sizeF );
path.AddArc( arc, 180, 180 );
arc.Y = baseRect.Bottom-diameter;
path.AddArc( arc, 0, 180 );
}
else
{
// return circle
path.AddEllipse( baseRect );
}
}
catch
{
path.AddEllipse( baseRect );
}
finally
{
path.CloseFigure();
}
return path;
}
}

}


20060418
 
Disable Universal Scroll
On my new laptop, I have a Synaptics touchpad and a Logitech MX500 mouse. The problem: They share the "Buttons" property page on the mouse property.

And I don't want the Universal Scroll from Logitech.

To change this manually: Open regedit, goto: HKEY_CURRENT_USER\Software\Logitech\MouseWare\CurrentVersion\Control Center\Schemes\.Default\Devices\OpticalMouse12\0001\Assignments\MiddleMouseShortClick and change UnivScroll to AutoScroll. Next open the mouse properties, and press OK.

Now you are using the normal Windows scroll.
20060411
 
tommy.blog: Screen capture tool
tommy.blog: Screen capture tool

Something always handy: How to capter (a part) of the screen. And this is not even difficult.

Rectangle region = ...; // the screen region to capture
using (Bitmap bitmap =
new Bitmap(region.Width, region.Height, PixelFormat.Format32bppArgb))
using (Graphics bitmapGraphics = Graphics.FromImage(bitmap))
{
bitmapGraphics.CopyFromScreen(region.Left, region.Top, 0, 0, region.Size);
Clipboard.SetImage(bitmap);
}

20060320
 
DotNet GDI+ FAQ
BobPowell.Net is a good site about using GDI+ in .Net.

Some code sample to create a grayscale image:


Image img = Image.FromFile(dlg.FileName);
Bitmap bm = new Bitmap(img.Width,img.Height);
Graphics g = Graphics.FromImage(bm);


ColorMatrix cm = new ColorMatrix(new float[][]{ new float[]{0.5f,0.5f,0.5f,0,0},
new float[]{0.5f,0.5f,0.5f,0,0},
new float[]{0.5f,0.5f,0.5f,0,0},
new float[]{0,0,0,1,0,0},
new float[]{0,0,0,0,1,0},
new float[]{0,0,0,0,0,1}});

/*
//Gilles Khouzams colour corrected grayscale shear
ColorMatrix cm = new ColorMatrix(new float[][]{ new float[]{0.3f,0.3f,0.3f,0,0},
new float[]{0.59f,0.59f,0.59f,0,0},
new float[]{0.11f,0.11f,0.11f,0,0},
new float[]{0,0,0,1,0,0},
new float[]{0,0,0,0,1,0},
new float[]{0,0,0,0,0,1}});
*/
ImageAttributes ia = new ImageAttributes();
ia.SetColorMatrix(cm);
g.DrawImage(img,new Rectangle(0,0,img.Width,img.Height),0,0,img.Width,img.Height,GraphicsUnit.Pixel,ia);

20051125
 
Primate Programming

Looking for a cheap outsourcing solutions. This is what I recommend:




Primate Programming Inc: The Evolution of Java and .NET Training


20050922
 
Autoclose and Autoshrink
When you notice that Enterprise Manager is getting slow (very slow) when opening the list of databases on a server, you should probably turn of AUTOCLOSE and AUTOSHRINK.

Here is a script that helps you in doing just that.

declare dbCursor cursor  for select name from sysdatabases
open dbCursor

declare @name as varchar(50)

fetch next from dbCursor into @name

while @@fetch_status = 0
begin
print @name
exec sp_dboption @name, 'autoclose', 'false'
exec sp_dboption @name, 'autoshrink', 'false'


fetch next from dbCursor into @name

end

close dbCursor
deallocate dbCursor


This is faster because all databases will be left mounted. If AutoClose is true, a lot of databases will have to be mounted in order to construct the list.
 
Basicode
Do you know, that in The Netherlands computer programs have been send over the normal radio channels.

You should tape them with a cassette-recorder, and then you could read them into your home-computer.

More information: http://www.xs4all.nl/~lennartb/basicode.html
20050912
 
New Fonts in Vista
For a short overview read this:
http://www.poynter.org/column.asp?id=47&aid=78683

 
Rare jongens die Hollanders
Site op zondag gesloten:
http://www.telegraaf.nl/i-mail/25363271/Site_Reformatorisch_Dagblad_weer_op_zondag_gesloten.html
20050624
 
2 Oracle Data Providers
Follow the link to an article that will compare the Microsoft and Oracle .Net provider for Oracle.

It is also the only place I can find a good list of the requirements for the Microsoft provider:

An extract:

Introduction


This article explores the differences between the Oracle Data Provider for .NET (ODP.NET) 9i and the Microsoft .NET Framework 1.1 Data Provider for Oracle. The two providers have much in common, but there are also important differences.

The Microsoft provider ships with the .NET Framework 1.1. All types are contained in the System.Data.OracleClient namespace. The Microsoft provider requires Oracle client version 8.1.7 or above.

ODP.NET is freely available from the Oracle Technology Network (OTN) at http://www.oracle.com/technology/software/tech/windows/odpnet/index.html. The types are contained in two namespaces—Oracle.DataAccess.Client (data access classes and enumerations) and Oracle.DataAccess.Types (classes and structures for Oracle data types). Both namespaces are in the assembly Oracle.DataAccess.dll located in the oracle\ora92\bin directory. ODP.NET requires Oracle client version 9.2 or later.

This article is divided into two sections. The first section discusses key differences between the functionality of the providers. An appendix follows that examines and compares each data provider type detailing differences between the public constructors, fields, methods, properties, properties, and operators between types in the providers; aspects of the data provider types that are similar are not discussed.

For detailed information about the Microsoft .NET Framework Data Provider for Oracle, consult MSDN. For detailed information about the ODP.NET provider, consult the documentation installed with the provider.
20050615
 
Using DLLImport and the WinApi
This is a great Site, for retrieving the C# definitions from the majority of Win32 Api calls:

http://pinvoke.net

It is a wiki, so you can add your own experiences.

Powered by Blogger