Banking op Kölsch ..

Posted in Allgemein on Januar 19th, 2011 by chris – Be the first to comment

Bei der Sparkasse Köln-Bonn kann man sein Online-Banking auch auf Kölsch betreiben .. das ist mal vorbildlicher Kundenservice ;)

https://www.sparkasse-koelnbonn.de/banking-op-koelsch.aspx

Schreibe hier und schreibe da … die Fehlermeldungen gibt es gratis dazu

Posted in Allgemein on Januar 17th, 2011 by chris – Be the first to comment

Beim Schreiben großer Dateien mit C# auf ein Netzwerklaufwerk kann man ganz unerwartet auf einen lästigen Fehler stoßen .. ab einer Größe von ca. 64 MB lächelt dem Anwender eine eher wenig aussagekräftige System.IO.Exception mit der Meldung “Nicht genügend Systemressourcen, um den angeforderten Dienst auszuführen” entgegen.

Ursache hierfür ist der Write()-Aufruf im unteren Codeabschnitt, die intern verwendete Win32 API-Funktion ist auf 65535 Bytes pro Aufruf begrenzt. Dieser Fehler existiert nur beim Zugriff auf einen Netzwerkpfad, beim Zugriff auf ein lokales Laufwerk funktioniert der Code einwandfrei.


public static void WriteFileError(byte[] buffer)
{
FileInfo outfile = new
FileInfo(@"\\server\share\testfile.zip");
using (FileStream outstream = outfile.OpenWrite())
{
outstream.Write(buffer, 0, buffer.Length);
outstream.Flush();
outstream.Close();
}
}

Auf dem Portal Microsoft Connect ist dieser Fehler mit der Bug-Nummer 486256 dokumentiert, der dort angegebene Workaround die Datei erst mal lokal zu schreiben und dann zu verschieben ist von der Vorgehensweise jedoch etwas unglücklich ..

Die Datei kann auch trotz des Bugs direkt geschrieben werden indem die Schreibzugriffe in kleinere Portionen unterteilt werden.

So lässt sich eine Zwischenspeicherung in einer lokalen Datei umgehen.


public static void WriteFileOK(byte[] buffer)
{
FileInfo outfile = new
FileInfo(@"\\server\share\testfile.zip");
int writelimit = 65535;
int byteswritten = 0;
using (FileStream outstream = outfile.OpenWrite())
{
while (byteswritten < buffer.Length)
{
int bytestowrite = (buffer.Length - byteswritten > writelimit) ? writelimit : buffer.Length - byteswritten;
outstream.Write(buffer, byteswritten, bytestowrite);
outstream.Flush();
byteswritten += bytestowrite;
}
outstream.Flush();
outstream.Close();
}
}

Dynamics CRM 2011 – Silverlight Anwendungen im Visual Studio entwickeln

Posted in Microsoft Dynamics CRM, Silverlight on November 24th, 2010 by chris – Be the first to comment

In Dynamics CRM 2011 ist es auf einfachem Wege möglich Silverlight Anwendungen einzubetten. Für den Zugriff hierauf stellt das CRM einen OData-WebService bereit der in Silverlight verwendet werden kann. Das SDK stellt bereits in der Beta Version einige Beispiele dafür bereit die eine gute Arbeitsgrundlage bilden. Solange die fertige Silverlight Anwendung in das CRM hochgeladen und von dort ausgeführt wird funktioniert alles … doch sobald die Anwendung komplexer wird ist es nicht mehr praktikabel die Anwendung für jeden Test in das CRM hochzuladen und dort zu testen..

Geht das nicht auch im Visual Studio ??

Von der Entwicklung von Desktopanwendungen sind wir es gewohnt die Anwendung m Visual Studio zu starten und lokal auf dem Arbeitsplatz zu debuggen. Mit Webanwendungen und mit normalen Silverlight-Anwendungen geht das ebenfalls, doch sobald ich versuche aus Silverlight auf den WebService des CRM zuzugreifen erlebe ich leider eine böse Überraschung .. Silverlight Meldet mir eine SecurityException und versucht noch nicht einmal auf den CRM Server zuzugreifen.

Allerdings gibt es vorher einen Zugriffsversuch auf die Datei clientaccesspolicy.xml im Root-Verzeichnis des Servers .. über diese Datei steuert Silverlight den Zugriff über Domänengrenzen, also Grund genug sich die Datei mal näher anzusehen. Diese Datei muss im Web-Root Verzeichnis des WebService liegen den ich aufrufen will. Ich lege diese Datei also auf meinem Entwicklungssystem im dem Verzeichnis mit den CRM-Webdateien an. Für den späteren Produktivbetrieb ist das nicht notwendig, da dann die Silverlight Anwendung ja von dem Webserver geladen wird und der Zugriff somit erlaubt ist.

Als Vorlage verwende ich die Beispieldatei von http://msdn.microsoft.com/en-us/library/cc197955%28VS.95%29.aspx .. doch da habe ich mich leider zu früh gefreut. Diese Beispieldatei funktioniert nicht so wie gewünscht und muss noch etwas modifiziert werden.

Finale Version der clientclientaccesspolicy.xml


<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="*">
        <domain uri="*"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

AusweisApp .. Sicher für 24 Stunden

Posted in Allgemein on November 15th, 2010 by chris – Be the first to comment

Gerade mal 24 Stunden nach Veröffentlichung der neuen AusweisApp für die elektronischen Personalausweise gibt es bereits den ersten Hack .. wie lange wird es wohl bei der nächsten Version dauern ?

http://www.3sat.de/mediathek/?mode=play&obj=21655

Stasi Reloaded

Posted in Allgemein on November 15th, 2010 by chris – Be the first to comment

Wenn Big Brother bei der Stasi gearbeitet hätte wäre vermutlich etwas ganz ähnliches dabei herausgekommen .. Heute ist die Überwachung allerdings ein toller neuer Cloud-Dienst .. Internet Eyes

Hier kann sich jeder Anmelden und bei der Überwachung von Geschäften mithelfen und bei Verdacht Alarm schlagen .. wer im Monat am meisten Ladendiebe erwischt bekommt eine Prämie, das ganze erinnert schon ziemlich an eine Mischung aus einer Gameshow und Reality-TV. Immerhin es wundert vermutlich keinen dass dieser Dienst gerade in England entstanden ist, gibt es doch hier doch hier mehr Überwachungskameras pro Kopf als in irgend einem anderen Land ..

Aber ist das jetzt ein Beitrag zur allgemeinen Weltverbesserung ?? Gut gemeint ist das Konzept vielleicht .. zumindest auf den ersten Blick .. Doch wenn man mal genauer hinschaut dann droht hier der nahezu vollständige Verlust der Privatsphäre … jeder Überwacht jeden .. und das vielleicht bald auch noch Weltweit. Eine Überwachung von der die Stasi vermutlich nur träumen konnte. Oder ist es vielleicht gar keine Überwachung mehr wenn jeder mitmachen darf ?

Naja etwas positives hat es dann vielleicht doch noch, man kann vermutlich viel Geld bei Polizei und Geheimdiensten sparen da sich Überwachungen bequem vom Büro aus erledigen lassen .. das Geld kann dann woanders ausgegeben werden und wir können alle den Politikern dabei zusehen. Auch Stalker können demnächst ganz bequem ihren Promis nachspionieren und vermutlich werden die Aufenthaltsorte dann auch direkt über Twitter publiziert .. Terroristen können sich auch freuen, denn noch nie war es Leichter eine Umgebung so lange und so unauffällig zu beobachten um den nächsten Anschlag zu planen und man kann auch gleich dem Terroristen-Kumpel beim gelungenen Anschlag zusehen .. aber vielleicht kann ja auch jemand anders den Anschlag vorher entdecken ..

Ob unsere Welt dadurch sicherer wird ? Wir werden es ja sehen ..

Neue Features in Dynamics CRM 2011 (Beta) – Teams

Posted in Microsoft Dynamics CRM on Oktober 27th, 2010 by chris – Be the first to comment

Teams erhalten in Dynamics CRM 2011 eine größere Bedeutung. Neben der Tatsache, dass Teams jetzt auch Besitzer von Datensätzen sein können was in vielen Anwendungsszenarien sehr nützlich ist, gibt es auch die Möglichkeit der Zuweisung an Teams die jetzt analog zu den Warteschlangen im CRM existiert. Als weitere Neuerung können den Teams auch Sicherheitsrollen hinzugefügt werden, damit kann je nach Verwendung und Anforderung die Verwaltung der Benutzerrechte vereinfacht werden.

Neue Features in Dynamics CRM 2011 (Beta) – Serientermine

Posted in Microsoft Dynamics CRM on Oktober 27th, 2010 by chris – Be the first to comment

Endlich sind sie da … mit Dynamics CRM 2011 ist es endlich möglich Serientermine im CRM zu verwalten und mit Outlook zu synchronisieren. Dieses Feature wurde lange vermisst.

Ausgehend von CRM kann man die Serientermine über den Button “Add New Activity” in der zugehörigen Dropdown Liste erstellen oder in der Ansicht Activities etwas versteckt in dem DropDown Menü zu “New Apppointment”.


Diese Serientermine werden in den Outlook Client als Serientermine Synchronisiert. Das Hochstufen von Serienterminen scheint ebenfalls möglich zu sein in meine Testumgebung erhalte ich hier allerdings noch Fehler. Die Synchronisation von Änderungen funktioniert jedoch fehlerfrei.

Das ist alles nur ge-cloud .. Dynamics Airlift 2010 in Leipzig

Posted in Allgemein, Microsoft Dynamics CRM on Oktober 27th, 2010 by chris – Be the first to comment

 

Es war mal wieder so weit .. Deutschlads Dynamics Entwickler wurden von Microsoft zum Airlift nach Leipzig gerufen und sie kamen zahlreich. Die Location war mal wieder exzellent, Microsoft weiß halt wie man sich um seine Partner kümmert.

Neben den neuesten Strategien und Neuerungen rund um die Dynamics Produkte wurde auch Windows Phone 7 vorgestellt. Im Focus standen insbesondere der bald bevorstehende Start von Dynamics CRM 2011 und das Thema Cloud.

 

Ich fühle mich ein wenig überwacht ..

Eine nette Spielerei, die aber unter Datenschutzaspekten kritisch zu betrachten ist, sind die Neuen Badges. Auf diesen befindet sich ein Barcode mit meiner Teilnehmernummer der beim Besuch der einzelnen Vorträge gescannt wird. Die offizielle Begründung hierfür ist, dass so die Veranstaltungen besser ausgewertet werden können. Meiner Meinung nach würde ein schlichtes zählen der Teilnehmer da auch ausreichen ..

 

Zum Aufwärmen erst mal Windows Phone 7

Zum Beginn der Veranstaltung wurde erst mal Windows Phone 7 ausgiebig vorgestellt. Gegenüber dem iPhone und Android Geräten ist hier der schlichte Aufbau der Startseite als Kacheln das größte Unterscheidungsmerkmal. Von Microsoft als Vorteil angepriesen wird der Markt jetzt zeigen ob das ein Vorteil ist oder ob sich die etwas Bunteren Geräte am Markt behaupten werden. Eine echte und vor allem Nützliche Innovation ist die Tatsache, dass sich auch bei einem Gesperrten Gerät die Kamera in einem Modus Aufrufen lässt der nur das Fotografieren zulässt. Diese Funktion werden wir hoffentlich auch bald auf den Geräten der Konkurrenz finden …

 

Die Kernthemen .. Dynamics CRM 2011 ..

Dynamics CRM 2011 hat es mittlerweile in die Beta-Phase geschafft und das Produkt nimmt langsam Formen an. Als erstes fällt hier die geänderte Optik auf, die sich an SharePoint 2010 und Office 2010 anlehnt .. gerade für die Benutzer die alle drei Produkte gemeinsam verwenden ist das angenehm da sich das Trio dann wie eine große Anwendung anfühlt.

Gerade die neuen Dashboard- und Visualisierungsfunktionen verdienen ein großes Lob, da sich die Benutzer hier schnell eigene Darstellungen für eine bessere Übersicht erstellen können.

Das neue Solution-Konzept ermöglicht es Anwendungen zu Verpacken und über einen Zentralen Marketplace zu verteilen, so erhält der Anwender die Möglichkeit neue Erweiterungen einfach und schnell zu Installieren und zukünftig auch zu kaufen.

Die Outlook Integration wurde massiv überarbeitet anstelle von eingeblendeten HTML Seiten werden jetzt vollwertige Outlook-Objekte und Listen verwendet. So fühlt sich die Anwendung nicht nur wie ein Teil von Outlook an sondern es stehen auch viele aus Outlook bekannte Hilfsmittel wie die bedingte Formatierung von Listeneinträgen zur Verfügung.

 

.. und die Cloud

Seitens Microsoft wurde die Unternehmensstrategie klar in Richtung Cloud vorangetrieben. Microsoft sieht hier einen stark wachsenden Zukunftsmarkt, der nicht nur auf den PC begrenzt ist sondern auch weitere Geräte wie Smartphones mit einbinden soll. Mit Azure, Office Online und Dynamics CRM online ist Microsoft ebenfalls in diesem Markt vertreten.

 

 

 

Aufbau eines SharePoint 2010 Extranet Portals – Teil 2

Posted in Microsoft SharePoint on September 24th, 2010 by chris – 3 Comments

Nachdem im ersten Teil das SharePoint Portal grundlegend aufgebaut wurde geht es jetzt weiter mit etwas Feintuning …

Die Tatsache dass sowohl die Anmeldung über Windows-Authentifizierung als auch Formularbasiert mit einer eigenen Benutzerdatenbank möglich ist, ist schon mal eine schöne Sache, aber die Anmeldeseite ist noch etwas verbesserungswürdig.

Die Interne Seite ..

Auf der Internen Seite wollen wir eigentlich nur die Windows-Anmeldung nutzen und die Anmeldeseite soll eigentlich übersprungen werden.

Um das zu realisieren erstellen wir eine Kopie der Anmeldeseite, diese finden wir auf dem SharePoint-Server im Ordner C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\IDENTITYMODEL\LOGIN\ hier kopieren wir die Datei default.aspx und nennen die Neue Datei default_intern.aspx.

Diese Datei öffnen wir mit einem Editor (z.B. Notepad.exe) und fügen vor dem letzten <asp:Content> Tag etwas JavaScript Code ein, der die Auswahl automatisch auf Windows-Anmeldung setzt und den Benutzer sofort weiterleitet.

<script language=”javascript” type=”text/javascript”>

document.getElementById(‘ctl00_PlaceHolderMain_ClaimsLogonSelector’).value = ‘Windows’;

document.getElementById(‘ctl00_PlaceHolderMain_ClaimsLogonSelector’).onchange();

</script>

Anschließend navigieren wir in der Zentraladministration zu Sicherheit > Authentifizierungsanbieter angeben und wählen dort die Zone Standard aus.

Die Option URL der Anmeldeseite setzen wir hier auf eine Benutzerdefinierte Anmeldeseite und geben den Pfad ~/_login/default_intern.aspx an.

Wenn wir jetzt unseren SharePoint über die Interne Adresse öffnen werden wir direkt auf die SharePoint Seite weitergeleitet und der Benutzer merkt nichts mehr von der Anmeldeseite.

.. und die Externe Seite

Auf der Externen Seite benötigen wir beide Anmeldearten, so dass wir die Anmeldeseite nicht einfach überspringen können. Allerdings ist die Normale Anmeldeseite mit den Optionen Windows-Authentifizierung und Formularauthentifizierung nicht wirklich geeignet um externen Kunden den Zugriff auf das Portal zu ermöglichen. Hier wäre eine etwas sprechendere Auswahl wie “Login für Kunden” und “Login für Mitarbeiter” sinnvoller.

Auch hier erstellen wir wieder eine Kopie der Anmeldeseite und nennen die Datei default_extern.aspx, diese datei wird für die Zone Extranet als Anmeldeseite hinterlegt.

In unserer neuen Anmeldeseite blenden wir zuerst den Text und das Auswahlfeld aus, indem wir die Elemente <SharePoint:EncodedLiteral runat=”server” EncodeMethod=”HtmlEncode” Id=”ClaimsLogonPageMessage” /> und <SharepointIdentity:LogonSelector ID=”ClaimsLogonSelector” runat=”server” /> in ein eigenes DIV-Element schachteln und dieses über style=”display:none” ausblenden.

Hinter dem DIV-Element fügen wir den folgenden Abschnitt ein, der uns zwei Links bereitstellt, die auf die entsprechenden Anmeldungen verzweigen:

<script language=”javascript” type=”text/javascript”>

function LoginCustomer()

{

document.getElementById(‘ctl00_PlaceHolderMain_ClaimsLogonSelector’).value = ‘Forms’;

document.getElementById(‘ctl00_PlaceHolderMain_ClaimsLogonSelector’).onchange();

}

function LoginUser()

{

document.getElementById(‘ctl00_PlaceHolderMain_ClaimsLogonSelector’).value = ‘Windows’;

document.getElementById(‘ctl00_PlaceHolderMain_ClaimsLogonSelector’).onchange();

}

</script>

<br/>

<div onclick=”javascript:LoginCustomer();”style=”cursor:pointer;”>

<table> <tr>

<td> <img src=”/_layouts/images/ICONGO02.GIF” /> </td>

<td> <span>Login für Kunden</span> </td>

</tr> </table>

</div>

<br/>

<div onclick=”javascript:LoginUser();”style=”cursor:pointer;”>

<table> <tr>

<td> <img src=”/_layouts/images/ICONGO02.GIF” /> </td>

<td> <span>Login für Mitarbeiter</span> </td>

</tr> </table>

</div>

Unsere Neue Anmeldeseite sieht jetzt etwas freundlicher aus:

Einfach aber wirksam – Performance Tuning für Microsoft SQL Server 2008 durch passende NTFS Formatierung

Posted in Microsoft SQL Server on September 23rd, 2010 by chris – 2 Comments

Durch eine einfache Maßnahme kann die Performance eines SQL Server 2008 (R2) erheblich gesteigert werden. Da der SQL Server seine Daten in Blöcken von 64kB ablegt lohnt es sich die Partition mit den Datenbankdateien bei der NTFS Formatierung auf eine Blockgröße von 64k einzustellen … so ist bei einem Zugriff des SQL Servers pro Datenblock nur ein Zugriff auf das Dateisystem notwendig und nicht wie bei der Standardeinstellung von 4kB 16 Zugriffe auf Datenblöcke die wohlmöglich noch wild auf der Festplatte verstreut sind.

Nach angeben von Microsoft ist eine Performance-Steigerung von bis zu 30 % möglich, also eine Maßnahme die sich lohnt.