BigBasti's Blog About Me & my Digital Lifestyle

1Dez/110

SSL Teil 1: Serverseitige Authentifizierung und Zertifikate

SSL ist aktiv

SSL (Secure Socket Layer) sollte wohl den meisten ein Begriff sein, das ist dieses lustige kleine "s" was manchmal hinter dem "http" in der Adresszeile des Browsers auftaucht (siehe Bild). In dieser Serie möchte ich euch erklären wie SSL in der Theorie funktioniert und wie ihr es in euren Applikationen nutzen könnt.

Viele Bekannte Webportale wie Facebook und Google bieten alle ihre Dienste inzwischen komplett über SSL an. Wenn ihr diese Technologie nutzen wollt, müsst ihr verstehen wie diese Funktioniert und was da eigentlich im Hintergrund abläuft.

Dieses kleine "s" hat eine große Wirkung und sorgt dafür, dass die gesamte Kommunikation mit dem Server in verschlüsselter Form abläuft und niemand sehen kann was ihr da so treibt.

In 99% der Fälle sprechen wir hier über SSL über Serverseitige Authentifizierung, was soviel heißt wie der Server muss uns beweisen, dass er der ist für den er sich ausgibt. So wie wir unseren Ausweis vorzeigen müssen wenn wir ein Paket bei der Post abholen müssen weil der Postbote wiedermal zu faul war zu klingeln... Wir müssen der Post beweisen, dass wir der sind für den wir uns ausgeben.

Wie weist sich der Server denn nun aus? Einen Ausweis hat er nicht, aber er hat etwas sehr ähnliches, nämlich ein Zertifikat, das von einer dritten Stelle, nämlich einer CA (Certificate Authority - auf deutsch Zertifizierungsstelle) signiert wurde.

Wenn wir das auf unser Ausweisbeispiel anwenden sieht es ca so aus: Jeder kann sich ein Blatt Papier mit einem Foto drucken wo sein Name draufsteht, aber euer Paket bei der Post werdet ihr damit nicht bekommen, da die Post der Herkunft des "Ausweises" nicht traut, es muss also von anderen Person (der die Post vertraut), die nicht ihr selbst seid, bestätigt werden, dass das wirklich ein echter Ausweis ist und dass das wirklich ihr seid. Im Falle eines Ausweises würde das wohl das Einwohnermeldeamt machen o.ä. diese würden euch einen Ausweis austellen dem andere vertrauen, da sie wissen, dass es aus einer vertrauenswürdigen Quelle kommt.

Wenn ihr euch also zu einem Server verbindet, der SSL nutzen will wird dieser euch also zunächst sein Zertifikat senden (seinen Ausweis) und nun seid ihr in der Pflicht zu entscheiden, ob ihr diesem Zertifikat (und somit dem Server) vertraut oder nicht.

Die (Vertrauens)-Prüfung übernimmt für euch meistens der Browser selbst. Jeder Browser kommt von Haus aus mit einer Liste von CAs  denen er blind vertraut. Diese Liste könnt ihr auch einsehen, sie ist häufig irgendwo in den Einstellungen des Browsers vergraben. Im Firefox findet ihr diese unter Einstellungen -> Erweitert -> Verschlüsselung ->Zertifikate anzeigen -> Zertifizierungstellen. Das sieht dann ca so aus:

Vertrauenswürdige CAs

Das bedeutet, wenn ein Server dem Browser ein Zertifikat schickt, dass von einer dieser CAs signiert wurde, vertraut der Browser dem Server und baut die Verbindung zu ihm auf.

Was passiert denn nun wenn der Server uns ein unsigniertes Zertifikat schickt, oder ein Zertifikat dass von einer CA signiert wurde die dem Browser unbekannt ist?

Dann wird uns der Browser fragen, ob wir uns wirklich sicher sind, dass wir uns sicher sind, dass wir diese Seite wirklich aufrufen wollen. Dieses Fenster habt ihr (im FireFox) vielleicht auch schon gesehen:

Firefox ist misstrauisch

Nun müsst ihr also selbst entscheiden, ob ihr diesem Zertifikat vertraut. Hier sollte man aufpassen, denn wenn es um wichtige Sachen geht wie Online Banking sollte man von dieser Seite die Finger lasse, da es sich eventuell um ein Phishing versuch handeln könnte - diese Meldung ist niemals ein gutes Zeichen.

Wenn ihr hier das Zertifikat also akzeptiert, merkt der FireFox sich das und fragt bei der nächsten Verbindung nicht mehr nach da es für ihn ab nun ein vertrauenswürdiges Zertifikat ist.

Aber nicht nur die Browser haben einen solchen Zertifikate-Speicher, das Betriebssystem selbst hat ebenfalls eine Liste mit CAs denen es Vertrauen schänkt. Diese Liste kann in den Systemeinstellungen gefunden werden und wird sich häufig mit der des Browsers großenteils überschneiden. Unter Windows findest ihr diese unter Systemsteuerung -> Netzwerk und Internet ->Internetoptionen -> Inhalte -> Zertifikate -> Vertrauenswürdige Stammzertifizierungsstellen

Windows Vertrauens CAs

Was steht eigentlich in so einem Zertifikat? Gucken wir doch mal rein:

Was steht in einem Zertifikat?

Jedes Zertifikat enthält diese Informationen:

  • Anwendung (Ist es ein Server oder ein Clientzertifikat?)
  • Wer hat das Zertifikat ausgestellt?
  • Für wen wurde dieses Zertifikat ausgestellt
  • Wielang ist das Zertifikat gültig?
  • Die Signierungskette aller CAs die dieses Zertifikat signiert haben

An Hand dieser Informationen wird entschieden, ob das Zertifikat akzeptiert wird oder nicht.

Zertifikate sind hierbei nichts besonderes, da jeder sich selbst Zertifikate ausstellen kann, es gibts dutzende Tools im Netz die euch Zertifikate generieren können, wie z.B. das kleine Javaprogramm "keytool" dass automatisch mit einem Java SDK mitinstalliert wird. Das Wichtige an einem Zertifikat ist immer seine Signatur, denn erst diese macht ein Zertifikat wertvoll und für andere Vertrauenswürdig.

Teil 1: Serverseitige Authentifizierung und Zertifikate
Teil 2: Beidseitige Authentifizierung
Teil 3: Der SSL Handshake
Teil 4: Serverseitige Authentifizierung mit Java

29Nov/103

Jede Adventswoche ein Microsoft Press E-Book gratis

Wie auch letztes Jahr verschenkt Microsoft Press auch dieses Jahr wieder E-Books. Dabei gibt es jede Adventswoche ein neues E-Book, dass kostenlos heruntergeladen werden kann.

Den Anfang macht heute das Windows 7 Home Premium "Maxibuch", das ca 1000 Seiten umfasst.

Microsoft Windows 7 wird mit "Microsoft Windows 7 Home Premium - Das MAXIBUCH" erst richtig schön. Damit Sie die vielen Möglichkeiten entdecken und verstehen, hat sich das Autorenteam lange mit Windows 7 Home Premium auseinandergesetzt.
Sie erhalten von uns kostenlos eine gelungene und sehr ausführliche Windows 7-Beschreibung!
Wissen aus erster Hand auf über 1.000 Seiten! (PDF, 80.2 MB)
Rechnen Sie unbedingt auch mit Tipps, wie Sie schneller, einfacher und sicherer arbeiten - und Spaß bekommen.

Wer Interesse hat muss lediglich seine E-Mail Adresse auf der Aktionsseite eintragen und bekommt einen Download-link zugeschickt.

Nachtrag:

Anscheinend sind momentan die Server ziemlich ausgelastet:

Entschuldigung.
Unser Downloadserver ist überlastet.
Bitte Versuchen Sie es in wenigen Minuten noch einmal.
Vielen Dank für Ihre Verständnis.

Aber zum Glück hat man die Ganze Woche Zeit um es herunterzuladen. :-)

kick it on dotnet-kicks.de

9Okt/101

Klein aber Fein: Emaroo Projekt und Dokumentverwaltung

Heute bin ich über ein kleines aber sehr hilfreiches Tool gestolpert. Es heißt Emaroo und ist ein Projekt und Dokumentmanager Tool.

Bild 1: Die Oberfläche ist sehr einfach aufgebaut

Die Oberfläche ist sehr simpel aufgebaut und ist nur in Tabs für die verschiedenen Programme unterteilt. Wählt man einen der Tabs aus bekommt man die zuletzt geöffneten Dateien/Projekte für dieses Programm angezeigt.

Von Hier aus kann man das Projekt/das Dokument starten oder den beinhalteten Ordner öffnen. Wenn man das Tool nun an die Taskleiste pinnt (Win7) hat man immer schnellen Zugriff auf wichtige Dokumente.

Folgende Software wird unterstützt:

System Requirements

  • At least one of the following applications (to use their MRU lists):
    • Visual Studio 2008, Visual Studio 2010
    • Expression Blend 4
    • Microsoft Word 2007, Microsoft Word 2010 (32bit), Microsoft Word 2010 (64bit)
    • Microsoft Excel 2007, Microsoft Excel 2010 (32bit), Microsoft Excel 2010 (64bit)
    • Microsoft PowerPoint 2007, Microsoft PowerPoint 2010 (32bit), Microsoft PowerPoint 2010 (64bit)
  • .NET Framework 4
  • Weitere Informationen und Download: http://www.roland-weigelt.de/emaroo/

    29Jun/100

    ScreenShot Helper – erleichert den Umgang mit Bildern in der Windows Zwischenablage

    Heute mal etwas in eigener Sache: Ich habe mal wieder ein kleines Tool für Windows fertiggestellt welches euch das leben etwas erleichern kann. Die Rede ist von ScreenShot Helper.

    Bild 1: Benachrichtigung über eine neue Grafik in der Zwischenablage

    ScreenShot Helper ist dafür gedacht Grafiken, die ihr in die Zwischenablage steckt schnell und einfach zu verarbeiten. Ein Bleispiel: Ihr wollt einem Bekannten einen Fehler oder etwas anderes zeigen, dass auf eurem Bildschirm passiert. Wenn ihr nur die Windows Tools verwendet müsst ihr erst einen Screenshot machen, dann Paint (oder ein anderes Bildprogramm) starten die Grafik dort einfügen, das Bild speichern, nun müsst ihr eine Webseite suchen auf die ihr das hochladen wollt um dann schließlich den Link zu bekommen, den ihr eurem Freund geben könnt.

    Mit ScreenShot Helper wird dieser Vorgang stark vereinfacht. Das Programm erkennt automatisch, dass eine neue Grafik in der Zwischenablage ist und zeigt euch das Fenster aus Bild1. Nun könnt ihr mit einem Klick das Bild speichern oder es mit ebenfalls einem Klick hochladen und bekommt direkt den Link den ihr weiter verteilen könnt.

    Ich bin mir dessen völlig bewusst, dass es sehr viele sehr ähnliche Tools da draußen im Web gibt die diese und noch weitere Funktionalitäten bieten. Ich wollte aber einfach nur ein leichtes schnelles Tool haben, dass genau das macht was ich brauche und dass ich weiter anpassen kann.

    Vielleicht könnt ihr ja auch soetwas gut gebrauchen. Hier gehts zum Programm.

    8Jun/101

    Klasse 3 Smartcard Reader von Kobil geknackt

    Dem Hacker Colibri ist es gelungen einen Smartcard Reader aus dem Hause Cobil zu knacken, der zur Klasse 3 der Reader gehört. Klasse 3 Reader besitzen eine eigene Tastatur und ein eigenes Display und gelten somit als sehr sicher, da die Eingaben nirgends hin übertragen werden müssen und somit nicht unterwegs abgefangen werden können.

    Dieser Reader wurde von dem Bundesamt für Sicherheit in der Informationstechnik (BSI) und von T-Systems zertifiziert und sollen auch für die neuen ePersos von Deutschland benutzt werden. Leider sieht man hier mal wieder wie unsicher diese ganzen Systeme sind!

    Das was ich aber am schockierendsten fand, war das Passwort das von Kobil benutzt wurde: "Geheim?" - wie geil ist das denn?

    Als Zusatzinformation schreibt der Hacker noch, dass es inzwischen ein Update von Kobil gibt, welches diese Lücke schließt. Somit ist der Hack wohl schon veraltet.

    23Mrz/100

    Asynchrone Programmierung (mit der TPL) Teil 2

    Ja, ich weiß, lang ist es her, dass ich den ersten Teil geschrieben habe aber nun (nach nur 5 Monaten) gehts endlich weiter, und diesmal wirds neben der Theorie auch Code geben!

    Wie ihr seht habe ich den Titel etwas abgeändert nun tauchen da drei neue Buchstaben auf die ihr (vielleicht) noch nie gehört habt, diese stehen für Task Parallel Library. Wie der Name es schon sagt, ist es eine Library die es uns ermöglicht parallel zu programmieren, aber dazu später mehr!

    Machen wir erstmal mit ein wenig Theorie weiter. Im ersten Teil haben wir erfahren, dass es nicht automatisch heißt, dass ein Programm schneller wird, wenn man viele Prozessoren im Rechner verbaut hat, und diesen Gedanken möchte ich in dem zweiten Teil noch etwas fortführen.

    Dazu möchte ich ein Beispiel geben. Nehmen wir an wir haben eine Funktion geschrieben, in der eine FOR-Schleife vorkommt die viele Berechnungen anstellt und die Ergebnisse in ein Array Speichert zb so:

    
            static double [] oldWay = new double[10000000];
            public static void doitOldSchool()
            {
                for (int i = 0; i < oldWay.Length; i++)
                {
                    oldWay[i] = (Math.Sin(i) / Math.Cos(i)) * Math.Tan(i) * 12345;
                }
            }
    

    Ich denke so eine Schleife hat schon jeder mal geschrieben, da ist nichts kompliziertes dran, sie funktioniert auch hervorragend und liefert uns ein Ergebnis.

    Die obere Schleife ist natürlich sehr simpel und ein Durchgang ist schnell erledigt, aber die Schleife wird hier 10 Millionen mal durchlaufen - und das ist ne Menge! Stellt euch vor irgendwann später wird diese Schleife um weitere Rechnungen oder Aktionen erweitert, dann könnte sie die Anwendung dauerhaft blockieren und einfrieren lassen.

    Anmerkung: Dies ist nur ein Beispiel, im wahren Leben ist sowas natürlich blöd, da würde die Schleife viel weniger Durchläufe haben, aber dafür einen größeren Body, was die Sache wieder ausgleicht!

    Spätestens wenn die Anwendung merkbar langsamer wird lohnt es sich über Parallelisierung nachzudenken, denn wenn inzwischen eh fast jeder Rechner und Laptop eine Mehrkern CPU hat würde das Programm doch schneller laufen oder?

    Hier muss man aufpassen, denn die Parallelisierung bietet viele Fallen, denn wenn man die obige Schleife parallelisiert wird sie in sehr viele einzelne Threads zerteilt und auf alle CPU Kerne verteilt. Man kann es sich ungefähr so vorstellen, dass jeder Schleifendurchgang einen Einzelnen Thread bekommt.

    Das hört sich eigentlich ganz toll an, aber hier darf man nicht aus den Augen verlieren, dass es auch seine Zeit dauert einen Thread zu erzeugen und dieser erzeugte Thread muss irgendwann auch vernichtet werden. Das heißt also, dass es Zeit kostet einen Thread anzulegen und zu zerstören, und wenn wir uns unsere Schleife so anschauen werden dort ziemlich viele Threads gebildet und auch vernichtet. So kann es vorkommen, dass ein parallel laufendes Programm langsamer ist als sein sequentielles Ebenbild!

    Hier gilt aber ein einfache Regel, es muss sich "lohnen" einen Thread zu erzeugen. Das heißt, dass ein Thread auch was zu tun haben muss, in unserem Beispiel ist die Berechnung so schnell, dass das Erzeugen und Vernichten des Threads länger dauert als die Berechnung!

    Aber das hängt auch noch von der verwendeten Hardware ab, so werden zu Beispiel Threads auf einem 64-Bit System ca. 30% schneller erzeugt als auf einem 32-Bit System. Desweiteren wird die Performance von der Anzahl der CPU-Kerne beeinflusst, denn wenn davon genug da sind können viel mehr Aktionen gleichzeitig laufen was natürlich das Programm beschleunigt.

    Aber gut, genug der Theorie. Nun wollen wir ein bisschen in die Praxis gehen und gucken wie wir mit der Parallelisierung an der Performance der Anwendung schrauben können! Wenn wir die Obige sequentielle Schleife so ausführen benötigt diese knapp 2 Sekunden um alle 10 Millionen Werte zu berechnen:

    Bild 1: Das Ergebnis der Sequentiellen Schleife (Core2Duo @ 2,4 gHz)

    Gar nicht mal schlecht was man in 2 Sekunden alles berechnen kann! Aber das Blöde hierbei ist, dass die Anwendung dann natürlich 2 Sekunden Blockiert ist. Versuchen wir nun mal die Arbeit gerecht auf alle Prozessoren (in diesem Falle 2) zu verteilen!

    Dazu ist aber etwas Vorbereitung nötig. Die TPL wird von Visual Studio 2010 von Haus aus unterstützt, desweiteren wird auch das .NET Framework in der Version 4.0 benötigt, außerdem macht es auch Sinn einen Rechner mit mehr als einem CPU-Kern zu haben ;-) Es müsste auch mit Visual Studio 2008 gehen wenn man das .NET Framework 4 installiert, aber dafür lege ich nicht meine Hand ins Feuer!

    Wenn das erledigt ist könnt ihr ein neues C# Konsolen Projekt anlegen. Alles was wir brauchen befindet sich in dem Namespace System.Threading.Tasks, weswegen wir das importieren sollten!

    Nun wollen wir unsere FOR-Schleife in eine parallele FOR-Schleife umwandeln. Zum Glück ist das einfacher als es sich anhört, da und die TPL alles nötige zur Verfügung stellt! Schreiben wir also die Schleife folgendermaßen um:

    
            static double [] newWay = new double[10000000];
           public static void doitNewSchool()
            {
                Parallel.For(0,                 //From (Startwert)
                            newWay.Length,      //TO   (Endwert)
                            (i) =>              //Initialisierung der Variablen
                            {                   //Code der ausgeführt werden soll
                               newWay[i] = (Math.Sin(i) / Math.Cos(i)) * Math.Tan(i) * 12345;
                            });
            }
    

    Zugegeben, auf den ersten Blick sieht das ganze verwirrend aus, da der Kopf der Schleife sich geändert hat. Aber auf den zweiten Blick erkennt man viel wieder. So beginnt die Schleife ebenfalls mit dem Startwert, gefolgt von der Abbruchbedingung. Nun kommt das neue, denn die TPL verwendet hier die so genannten Lambda Ausdrücke, die mit C# 3.0 Einzug erhielten. So ist es nun möglich ganze Codeblöcke in Parameter Felder zu setzen und vieles mehr.

    Aber man langsam, man beginnt hier mit der Initialisierung der benötigten Variablen in diesem Fall nur eine namens "i", die Initialisierung erfolgt Typenlos in runden Klammern mit dem Pfeil dahinter wird der dazugehörige Codeblock initiiert (Anonyme Methoden). (ihr könnt die Variablen auch Typisieren, wenn ihr aber keinen Typ angibt wird er automatisch bestimmt!)

    Der Inhalt der Schleife bleibt hierbei aber exakt der gleiche, praktisch oder? Aber was passiert nun genau? Naja einfach ausgedrückt wird der Block in viele einzelne Teile zerbrochen die in eigenen Threads dann über die verfügbaren CPU-Kerne verteilt werden. Schließlich werden die Ergebnisse wieder zusammengetragen!

    Bevor wir nun hingehen und die neue Schleife testen will ich euch noch was zeigen. Auf dem Folgenden Screenshot sieht man die CPU-Auslastung während unsere erste sequentielle Schleife läuft:

    Bild 2: CPU-Auslastung während sequentieller Berechnung

    Wie man ganz klar erkennen kann werden beide Kerne belastet! Wie kann das sein? Das Programm ist doch sequentiell! Die Erklärung ist relativ simpel, denn das System (hier Windows 7) erkennt auch, dass da ein Programm einen Kern überlastet und verteilt die Last automatisch auf andere Kerne. Ok, und warum soll ich mir nun die mühe machen und parallel programmieren wenn das System das doch auch so für mich macht?

    Ganz einfach, weil das System es schlecht macht. Hier kann man es nicht erkennen, da der PC nur 2 Kerne hat. Wenn man mehr Kerne hätte würde man erkennen, dass das System, zwar versucht einen Kern zu entlasten und die Arbeit zu verteilen, aber es bezieht nur 1, vielleicht 2 weitere kerne in die Arbeit mit ein, alle anderen dürfen weiter "karten spielen" und auf Arbeit warten. Wenn wir aber unser Programm parallel gestalten, werden alle verfügbaren Kerne ausgenutzt!

    Ok, dann wollen wir mal unsere überarbeitete parallel laufende Schleife mal anschmeißen:

    Bild 3: Parallel laufende Schleife

    Ahja, wie man sieht konnte unsere neue Schleife die Werte in fast der halben Zeit berechnen. Das ist eine enorme Steigerung! Schauen wir uns auch nochmal die CPU-Auslastung an:

    Bild 4: Steile Berge

    Man erkennt sofort, dass die CPU hier sehr viel effizienter genutzt wird, die Auslastung steigt kurz bis an das Maximum an und geht danach direkt wieder runter! Vergleicht man das Bild mit dem Sequentiellen sieht man auch, dass beide Kerne fast gleichstark und auch durchgängig belastet werden. Die last wird perfekt auf die verschiedenen Kerne verteilt!

    Ruft man beide Funktionen hintereinander zur Laufzeit auf, wird der Unterschied noch besser sichtbar:

    Bild 5: 100% Schneller

    Der Unterschied ist gewaltig, man würde den Unterschied noch mehr spüren, wenn man eine Schleife mit einem Größerem Body testen würde, aber das könnt ihr dann ja mal selber irgendwann üben.

    In bild 5 sieht man die Ergebnisse der Berechnung auf einem Windows 7 32 Bit Rechner mit einem Core2Duo mit 2,4 gHz. Schauen wir uns doch mal an, wie die Zahlen abweichen wenn wir ein System haben dass ein paar mehr Kerne hat und im 64 Bit Modus läuft:

    Bild 6: Unglaublich oder?

    Hier sieht man es nochmal ganz deutlich wie überlegen die parallel programmierte Schleife der sequentiellen ist. So sieht die CPU Verteilung aus auf einem 64 Bit System mit 16 Kernen:

    Bild 7: Gegenüberstellung (Zum vergrößern klicken)

    Wie man sieht beansprucht die sequentielle Schleife nur 4 der Prozessoren, und das nicht mal ganz. Die parallele Schleife dagegen hat 15 der 16 Kerne belastet und ist dem entsprechend 10 mal schneller fertig geworden!

    Zum Schluss will ich noch eine kleine Schwäche der Parallelen Variante (wenn man sie Schwäche nennen mag) zeigen. Ich habe hier ganz bewusst eine Schleife genommen, die 10 Millionen mal ausgeführt wird, denn wenn die Schleife kleiner wird, hat man mit der Parallelen Schleife keinen Vorteil mehr!

    Die Erklärung dafür habe ich zu Beginn dieses Artikels gegeben, denn die Thread Erzeugung dauert einfach viel zu lange! So sieht man hier den Ablauf der selben Schleife mit 100.000, 10.000 und 1000 Durchgängen:

    Bild 8: Man muss vorher abwägen

    Man muss sich unbedingt vorher Gedanken machen, ob es sich lohnt einen Prozess zu parallelisieren.

    In dem Nächten Teil, der (ich hoffe) bald kommt werde ich euch dann noch ein paar weitere Gefahren zeigen, und auch Methoden wie man die Parallelisierung noch ein wenig beschleunigen kann, sowie auch weitere Beispiele mit anderen Schleifen und ganzen Codeblöcken!

    Ich hoffe der Artikel hat euch gefallen und freue mich auf euer Feedback!

    Die Demoanwendung gibts hier:

    .

    .

    27Jan/105

    iPad – Apple’s neues Produkt – Mein Eindruck

    Nun kann die Welt endlich wieder ruhig schlafen, Apple hat ihr neues Gerät vorgestellt - das iPad. Dieses soll die Lücke zwischen iPhone/iPod und dem Macbook schließen.

    Quelle: gdgt.com <- Mehr Bilder

    Ich persönlich war auch schon gespannt auf das lang erwartete "Tablet", die Medien überschlugen sich, jeden Tag neue Gerüchte immer wildere Photoshopkreationen.

    Nun ist es da, und ich muss ehrlich sagen, ich bin enttäuscht. Optisch ist das Gerät, das so ähnlich aussieht wie der Bildschirm von einem Allu-Macbook, sehr chic - wie erwartet, aber alles in einem kann man es als einen großen iPod bezeichnen.

    Nun darf man aber nicht, wie bei Apple Geräten üblich, daher kommen und das iPad mit anderen Tablet PCs vergleichen. Das wäre dann der berühmte Äpfel mit Birnen vergleich.

    Ich will erst einmal ausführen, was mir gefallen hat. Das iPad ist ein rundum schönes Gerät, Apple sagt selber es soll primär für "Browsing, Email, Photos, Videos, Musik, Games & eBooks" gut sein. Und nach der Keynote weis ich eins, dafür ist dieses Gerät wie gemacht.

    Es kommt mir der vom iPhone und iPod bekannten Benutzeroberfläche daher, die an den größeren Bildschirm angepasst wurde und um einige neue Funktionen ergänzt wurde wie zB. PopUp Menüs.

    Hut ab, das hat Apple echt drauf, die Bedienung ist super gelungen, ich als iPhone & Macbook Besitzer weiß das echt zu schätzen! Die Mail und Kalender App wurde von Grund auf überarbeitet und sieht richtig chic aus!

    Ein weiteres Feature, dass wohl am wichtigsten ist, ist die Kompatibilität zu den iPhone Apps, denn man kann alle jeztschon verfügbaren Apps installieren und in voller Auflösung genießen. Desweiteren wird das iPad wohl ein starker Konkurent zu dem Kindle von Amazon werden, da das eBook Programm einfach nur grandios aussieht!

    Dazu kommt noch, dass Apple eine Akkulaufzeit von 10 Stunden angibt, das ist beeindruckend!

    Doch leider gibts auch Schattenseiten. Denn das iPad kommt wie auch das iPhone mit dem Safari Mobile daher, das bedeutet, dass man weiterhin keine Flash Unterstützung hat und nur YouTube Videos anschauen kann (über ein Extra Programm). Warum nur? Dieses Gerät schreit einfach danach! Wenn ich allein an die vielen Flash-basierenden Browsergames denke! Gut man kann natürlich argumentieren dass es im Appstore 140.000 Programme & Spiele gibt aber Flash ist heute (leider) immer noch eine der wichtigsten Web Technologien.

    Desweiteren kann man keine Dateien herunterladen und auch keine hochladen, was man zwar nicht oft benötigt aber es dann bitter ist wenn man es mal braucht!

    Weiter fällt auf, dass das iPad "nur" einen Dockconnector Port an der Unterseite hat und einen Kopfhörerstecker - exakt die selben Anschlüsse wie auf dem iPhone, inklusive der lauter/leiser Tasten und dem Stummknopf.

    Warum findet man hier keinen USB-Stecker? Dick genug ist die Seite des iPads (glaube ich) oder wenigstens ein SD-Karten Slot. Diesen kann man zwar mit einem Adapter nachrüsten aber das ist doch Käse!

    Ein weiteres Manko ist, dass es kein "richtiges" Betriebssystem hat. Das iPad OS (?) ist wie auch das iPhone nicht in der Lage mehrere Applikationen zur gleichen Zeit auszuführen (Multitasking). Wobei man diesen Punkt auch als Vorteil sehen kann, da das Gerät dadurch schneller und einfacher zu bedienen ist.

    Genau aus diesem Grund kann man das Gerät auch nicht mit anderen Tablets vergleichen, da diese mit Windows - einem "vollen" Betriebssystem - laufen.

    Leider ist genau hier auch der Nachteil der Windows Tablets, denn ein angepasstes System ist natürlich viel effizienter und einfacher. Doch hat Apple hier wiedereinmal seine Sperrvorrichtungen aufgefahren und unterbietet jegliche Zugriffe auf das Dateisystem, was bedeutet, dass man auch das iPad erst "jailbraken" muss bevor man es "vernünftig" benutzen kann!

    Das Günstigste Model kostet 499 Dollar (also ca 499 Euro im Apple Wechselkurs) und kann nur 16 GB Speicher bieten und hat dazu noch kein 3G Modul integriert! Hier könnte man natürlich wieder sagen man bekommt ein gutes Netbook für das Geld - aber das wären wieder Äpfel und Birnen.

    Apple hat den Zweck des iPads definiert und man muss als Kunde damit leben. Man bekommt nicht mehr und nicht weniger!

    Mein Eindruck ist, dass Apple hier einen großen iPod Touch mit 16 GB Speicher für $500 verkauft. Im Vergleich zu der iPhone Präsentation verspüre ich keinerlei Begeisterung für das Produkt eher im Gegenteil. Aber vielleicht muss man nur eine Weile warten, bis die 2te Version des iPad herauskommt und alles besser macht, wie einst beim iPhone!

    2Dez/090

    Uebersicht mit kostenlosen E-Books gestartet

    Wie ihr erkennen könnt gibt es seit heute oben im Menü einen neuen Knopf namens "E-Book".

    Auf dieser Seite habe ich alle (mir bekannten) kostenlosen E-Books aufgelistet. Das wollte ich schon immer mal machen, habe mir aber erst heute die Zeit dafür genommen!

    Die Liste ist aber auch noch ausbaufähig, und ich bin auf euch angewiesen! Sicher kennt ihr noch anderen kostenlose Bücher, die in den unendlichen Weiten des WWW versteckt sind!

    Da ich meine eigene kleine Sammlung auch gerne ausbauen will, hoffe ich, dass der eine oder andere Tipp von euch reinkommt!

    Wenn das so ist, schreibt mir einfach ne Mail oder einen Kommentar mit dem Link und ich werde das Buch auch in die Liste übernehmen!

    Bitte nur Bücher angeben, die sich mit Anwendungsentwicklung auseinander setzen.

    5Nov/090

    Windows 7 und seine Schönheitsfehler Teil 2: Die Taskleiste

    win7Letzte Woche habe ich unter Windows 7 etwas sehr seltsames beobachtet. Nach dem ich ein kleines Programm geschrieben hatte, dass ich zwischendurch nutzen wollte, wollte ich dieses an die Taskleiste "pinnen", damit ich es immer schnell griffbereit habe!

    win75Bild 1: Links: Wie es sein sollte. Rechts: So sieht das "Problem" aus

    Doch Pustekuchen! Ich konnte das Programm, ja nicht mal eine Verknüpfung, die auf das Programm linkte an die Taskleiste pinnen! Seltsam, denn andere Programme, auch selbstgeschriebene, konnte ich problemlos anpinnen!

    Woran kann das liegen? Alle Optionen, die man von anderen Programmen kennt waren nicht da! Die ganze Jumplist hatte nur den Eintrag "Fenster schließen". Die anderen Optionen wie "Programm an die Taskleiste pinnen" waren alle weg!

    Die erste Vermutung war natürlich, es liegt am Code! - Son Mist - Also habe ich losgelegt und das Programm Stück für Stück von verschiedenen Codeteilen befreit bis ich garkeinen Code mehr im Programm hatte. Aber das "Problem" war immernoch nicht behoben!

    Wie gesagt konnte ich andere Programme, die ich selbst gemacht habe anpinnen, nur dieses eine nicht. Also habe ich das getan, was jeder kompetente Programmierer tun würde, ich befragte Google! :-)

    Leider konnte ich nichts wirklich brauchbares finden, das meinen Fall bestätigte. Schließlich wollte ich schon aufgeben und das Projekt neu anlegen, in der Hoffnung es würde nicht wieder auftauchen.

    Zu meinem Glück habe ich davor ein Skript (an dem ich zur Zeit etwas herum spiel) verwendet, dass dieses Programm  (zusammen mit vielen anderen Dateien) umbenannt hatte. Nun hieß das Programm "ax4b.exe". und Überraschung - ich konnte es anpinnen.

    Es lag am Namen!

    Als ich dem Programm wieder seinen Originalnamen verlieh konnte ich es wieder nicht anpinnen! Achja, das Programm heißt "Uploadhelper.exe"

    Wie es also scheint, sind bestimmte Programme unter Windows 7 von der Fähigkeit befreit sich an die Taskleiste pinnen zu können.

    Wie ich dann nach einer weiteren Internetrecherche herausgefunden habe gibt es einen Registryeintrag namens "AddRemovenames" derhier zu finden ist:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileAssociation\AddRemoveNames

    win76Bild 2: Der Registryeintrag mit den "verbotenen" Namen

    Dieser enthält alle Schlüsselwörter, die alle Programme, die eins dieser Wörter im Namen beinhalten, nicht an die Taskleiste pinnen lässt! Diese Wörter sind:

    Documentation;Help;Install;More Info;Readme;Read me;Read First;Setup;Support;What's New;Remove

    Und da mein Programm das Wort "help" im Namen hatte wurde es von dieser Regel betroffen.

    Es scheint so zu sein, dass Microsoft keine Hilfe oder Setup Programme in der Taskleiste sehen will. Wobei ich wirklich nicht verstehen kann, warum "Documentation" in der Liste steht!

    Also hat man als Entwickler nun die Wahl: Entweder man benennt sein Programm um, oder man löscht den entsprechenden Eintrag aus diesem Registryeintrag. Von dem letzteren würde ich allerdings abraten, da es ein enormer Eingriff in die Benutzereinstellungen wäre, und wer weiß, vielleicht benutzen noch andere Dienste diesen Eintrag und funktionieren dann eventuell nicht mehr!

    Wenn man von dieser Beschränkung nichts weiß, kann es einen schon in den Wahnsinn treiben, denn wer vermutet denn bitte, dass es an dem Namen liegt?

    3Nov/090

    VB.NET: Eigenes Programm mit Windows starten lassen

    Oftmals ist es es von Nöten sein eigenes Programm beim Hochfahren von Windows automatisch starten zu lassen. Dies ist nicht wirklich anspruchsvoll aber dennoch sehr nützlich!

    Windows bietet uns hier 2 Möglichkeiten dieses Vorhaben umzusetzen. Die erste ist es eine Verknüpfung zu unserem Programm zu erstellen und diese dann im Autostart Verzeichnis zu platzieren.

    winstart11Bild 1: Der Windows Autostart Ordner im Startmenü

    Dieser Ordner befindet sich unter dem folgendem Pfad:

    C:\Users\[BENUTZERNAME]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

    Windows führt automatisch alle Dateien aus, die sich in diesem Ordner befinden, nachdem der Startvorgang abgeschlossen ist!

    Die zweite (und meiner Meinung nach), bessere Methode ist es, einen entsprechenden Eintrag in der Registry zu setzen. Dies hat auch den Vorteil, dass man später die Verknüpfung nicht suchen und entfernen muss und dass der Benutzer diese nicht ausversehen löscht.

    Wenn ihr in den dafür vorgesehenen Ordner schaut werdet ihr feststellen, dass dort (wahrscheinlich) auch andere Programme ihr Unwesen treiben.

    winstart2Bild 2: Weitere Autostart Einträge

    Diesen Registry Ordner findet ihr im Regestrierungseditor unter folgendem Pfad:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

    In dem folgenden Codebeispiel werden wir hier einen Eintrag mit dem Verweis auf unser Programm einfügen.

    
        Public Sub LoadOnStartup(ByVal DoOrNot As Boolean)
    
            Dim RegKey As String = "HKEY_CURRENT_USER\Software\" &amp;amp;amp;amp; _
                                   "Microsoft\Windows\CurrentVersion\Run"
            If DoOrNot = True Then
                My.Computer.Registry.SetValue _
                (RegKey, "[PROGRAMMNAME]", My.Application.Info.DirectoryPath &amp;amp;amp;amp; _
                                    "\" &amp;amp;amp;amp; My.Application.Info.AssemblyName &amp;amp;amp;amp; ".exe")
            Else
                My.Computer.Registry.SetValue _
                (RegKey, "[PROGRAMMNAME]", "")
            End If
    
        End Sub
    

    Wie man sieht ist es dank .NET nicht wirklich schwer einen Registryeintrag zu erstellen und zu bearbeiten, denn wenn ihr nicht mehr wollt, dass euer Programm mit Windows gestartet wird, löscht ihr den Eintrag einfach oder gebt statt dem Pfad etwas anderes ein.

    In dem Code verwende ich den Kern-Schlüssen "HKEY_CURRENT_USER" statt des oben erwähnten "HKEY_LOCAL_MACHINE". Dies heißt nur, dass das Programm nur bei dem User Automatisch starten wird, der diesen Code ausführt. Benutzt man allerdings "HKEY_LOCAL_MACHINE" wird das Programm bei allen Benutzern des Computers automatisch gestartet!

    Zur Benutzung: Ruft diese Funktion einfach auf und übergebt True um euer Programm automatisch starten zu lassen, oder False um dies wieder zu unterbinden!

    Da dies nur ein Copy & Paste Beispiel ist, habe ich hierfür kein Demoprojekt angefertigt, ich hoffe ihr könnt mir verzeihen! :-)

    Get Adobe Flash playerPlugin by wpburn.com wordpress themes