12. April 2011

E-Mail Header auslesen

Mal wieder ein paar technische Grundlagen, die ich hier zum besten geben möchte :)

E-Mails... wahrscheinlich jeder meiner Leser kennt sie,
versendet haufenweise davon und erhält wahrscheinlich nochmal soviel als Spam ^^

Doch wie sieht eine E-Mail eigentlich aus? Wie ist sie aufgebaut?

Da ich mir das E-Mail Konzept natürlich nicht selber ausgedacht und aufgebaut habe,
brauche ich das Rad nicht zwei mal erfinden, sondern poste einfach das bereits verfügbare Wissen aus Wikipedia:


Eine Internet-E-Mail besteht aus dem Header-Abschnitt (von englisch für: „Kopfzeile“) und dem Body (dem eigentlichen Inhalt der Nachricht). Der Header enthält als Pflichtangabe lediglich eine Absenderangabe und das Datum der Erstellung der E-Mail. Darüber hinaus kann der Header einer E-Mail eine Reihe optionaler Angaben enthalten. In der Regel finden sich Informationen über den Weg, den die E-Mail genommen hat, über den Inhalt der Nachricht und deren Format sowie Angaben zu den Empfängern.
Der Header enthält keine für die technische Zustellung einer E-Mail notwendigen Informationen. Absender und Empfänger werden durch den Envelope Sender und Envelope To angegeben.
Der Aufbau einer E-Mail ist im RFC 5322 festgelegt – hier wird im Gegensatz zu vorherigen Standards nicht mehr von header gesprochen, sondern header field für den Inhalt einer einzelnen Kopfzeile undheader section für den gesamten Kopfbereich der E-Mail (alle Kopfzeilen zusammen) verwendet, um Verwirrungen zu vermeiden.

Inhaltsverzeichnis

 [Verbergen]

Darstellung und Anzeige [Bearbeiten]

Viele Empfänger interessieren sich nicht oder nur selten für alle Header-Zeilen. Deshalb zeigen die meisten Mail-Clients standardmäßig nur einen kleinen Teil der tatsächlich in der E-Mail enthaltenen Header-Zeilen an. Das sind insbesondere die Zeilen mit den Tags:
  • „From:“ – der Absender
  • „To:“ – der Empfänger
  • „Cc:“ – weitere Empfänger
  • „Subject:“ – der Betreff
  • „Date:“ – der Zeitpunkt der Erstellung
Weitere oder alle Header-Zeilen werden in der Regel nur mit der Wahl spezieller Optionen angezeigt. Diese sind je nach Mail-Client sehr unterschiedlich. Bei einigen Mail-Clients (z. B. mutt) lässt sich konfigurieren, welche Header-Zeilen standardmäßig angezeigt werden. Einige E-Mail-Clients ersetzen die Header-Tags bei der Anzeige durch eine landessprachliche Entsprechung.

Beispielmail [Bearbeiten]

In der folgenden Beispiel-E-Mail werden die Header-Informationen, die von den meisten E-Mail-Programmen angezeigt werden, blau dargestellt. Die zumeist ausgeblendeten Header-Informationen sind orange, der Body ist grau. Die erste Zeile enthält den sogenannten Envelope Sender – sie ist nicht Teil des Headers, geht ihm aber im mbox-Format voraus und wird auch sonst häufig zusammen mit den Header-Zeilen dargestellt; sie wird im Simple Mail Transfer Protocol (SMTP) nicht als Teil der Mailheader, sondern mit einem speziellen Befehl übertragen.
From alex@mailgate.exam.ple Mon Dec 4 17:02:25 2006Envelope Sender
Received: (qmail 12345 invoked by alias); Mon, 04 Dec 2006 13:51:40 +0000
Received: by server1 (Postfix, from userid 1000)
  id D344F45681; Mon, 4 Dec 2006 14:51:39 +0100 (CET)
Mehrere „Received“-Zeilen zeigen den Weg, den die E-Mail vom Sender zum Empfänger genommen hat. Jeder Server, der die Mail weiterleitet, fügt seine Kennung und das Datum am Anfang der E-Mail hinzu.
Date: Mon, 4 Dec 2006 15:51:37 +0100Absendedatum
Subject: Der Sinn des LebensBetreff der E-Mail
Message-ID: <434571BC.8070702@example.net>Eindeutige Zeichenfolge, die diese E-Mail identifiziert
From: Alex Absender Absender
To: Erwin Empfaenger Empfänger
Cc: ErwinsSekretariat Empfänger einer Kopie der E-Mail
Content-Type: text/plain; charset=ISO-8859-1Art und Zeichensatz des Body-Text
In-Reply-To: <134535224@example.com>Diese E-Mail ist eine Antwort auf die E-Mail mit dieser Message-ID
Die erste Leerzeile trennt die Kopfzeilen vom Nachrichtentext
Hallo Erwin,

wir müssen einen Termin vereinbaren.

Bis dann,
Alex
Inhalt („message body“)

Mögliche Einträge im Header [Bearbeiten]

Einträge im E-Mail-Header werden durch einen Zeilenumbruch (CRLF) voneinander getrennt. Der E-Mail-Header wird durch eine Leerzeile (CRLF CRLF) vom E-Mail-Body getrennt.

Date: Absendedatum und Uhrzeit [Bearbeiten]

Pflichtangabe nach RFC 5322. Der Zeitpunkt des Absendens der E-Mail.

From: Absender [Bearbeiten]

Pflichtangabe nach RFC 5322. Eine oder mehrere durch Kommata getrennte E-Mail-Adressen, die den oder die Absender einer E-Mail bezeichnen. Die meisten E-Mail-Clients unterstützen nur einen einzelnen Absender.

Sender: Technischer Absender [Bearbeiten]

Ist der technische Absender ein anderer, als im From-Header bezeichnet, kann dieser im Sender-Header vermerkt werden. Das Sender-Feld darf nur eine einzelne E-Mail-Adresse enthalten. Beispiel: Die E-Mail-Adresse eines Sekretärs, der eine E-Mail nach Diktat des Chefs verschickt, gehört ins Sender-Feld. Die E-Mail-Adresse des Chefs gehört ins From-Feld. Wenn der Verfasser einer E-Mail und der technische Absender identisch sind, sollte das Sender-Feld nicht verwendet werden, sonst sollten beide (From- und Sender-Feld) verwendet werden.

Reply-To: Antwortadresse [Bearbeiten]

Eine oder mehrere durch Kommata getrennte E-Mail-Adressen, an die eine Antwort auf die E-Mail geschickt werden soll (falls unterschiedlich zum From-Feld).

To: Der Empfänger [Bearbeiten]

Eine oder mehrere durch Kommata getrennte E-Mail-Adressen, an die die E-Mail primär gesendet wird. Jedem Adressaten werden auch alle andren E-Mail-Adressen mitgeteilt.

CC: Carbon Copy, die Kopie [Bearbeiten]

Eine oder mehrere durch Kommata getrennte E-Mail-Adressen, an die eine Kopie der E-Mail gesendet wird.
Der Begriff kommt vom früher benutzten Durchschlag. Dabei wurden beim Schreiben mit einem harten Stift oder der Schreibmaschine Kopien erstellt, indem mehrere Papierseiten mit jeweils einem Kohlepapierdazwischen übereinandergelegt wurden.
Beim Schreiben einer E-Mail wird dieses Feld verwendet, um Kopien an einen oder mehrere Empfänger zu senden. Mit einem Eintrag in diesem Feld wird gleichzeitig symbolisiert, dass diese E-Mail sich nicht direkt an diesen Benutzer wendet, sondern lediglich „zur Beachtung“ bzw. „zur Kenntnisnahme“ an ihn versendet wurde. Die Einträge im CC-Feld werden (im Gegensatz zum BCC-Feld) bei allen Empfängern angezeigt und sind somit bekannt.
Umgangssprachlich wird auch ab und an (vornehmlich in den USA) fälschlicherweise „Courtesy Copy“ als Bedeutung für CC benutzt, was soviel wie „Höflichkeitskopie“ bedeutet (courtesy „Höflichkeit“, copy„Kopie“).

BCC: Blind Carbon Copy, die Blindkopie [Bearbeiten]

Das BCC-Feld enthält eine oder mehrere durch Kommata getrennte E-Mail-Adressen, an die eine Kopie der E-Mail gesendet wird, ohne dass dies jedoch für die anderen angegebenen Empfänger sichtbar sein soll („Blindkopie“). Durch eine Blindkopie sollen die Empfänger von Rund-Mails vor der Adressen-Sammlung von bösartigen Diensten wie z. B. Spambots gesichert werden.
Da die Adressaten (also auch die BCC-Adressaten) dem Mailserver vor der Übertragung der E-Mail mitgeteilt werden, kann das Prinzip technisch einfach umgesetzt werden: BCC-Adressaten werden als Empfänger genannt, in der anschließend übermittelten E-Mail entfällt dann die BCC-Zeile oder wird verändert übertragen. Die Handhabung der BCC-Zeile ist aber nicht eindeutig vorgegeben. Je nach Implementierung im verwendeten E-Mail-Programm und der beteiligten Mailserver ergeben sich folgende Möglichkeiten:
  • Die BCC-Zeile wird vor der Übertragung vollständig aus dem Header der E-Mail entfernt. Die Nachricht wird jedoch trotzdem an alle Empfänger übermittelt. Die BCC-Empfänger sehen bei Eingang der E-Mail nicht, dass sie im BCC-Feld geführt wurden. Die Gefahr ist dann größer, dass sie versehentlich an alle Empfänger antworten und damit ihre E-Mail-Adresse und die Tatsache preisgeben, dass sie auch die E-Mail erhalten haben.
  • Die in der To- und CC-Zeile genannten Empfänger erhalten wie oben eine Kopie der E-Mail, aus welcher die BCC-Zeile entfernt wurde. Die in der BCC-Zeile aufgeführten Adressaten hingegen erhalten eine Kopie, in der die BCC-Zeile erhalten bleibt. Je nach E-Mail-Programm erhält entweder jeder BCC-Adressat eine Kopie, in der nur seine E-Mail-Adresse steht, oder alle Empfänger erhalten die gleiche BCC-Zeile. In letzterem Fall ist es Empfängern einer Blindkopie möglich, alle anderen BCC-Adressaten zu sehen.
  • Der Inhalt der BCC-Zeile wird bei der Übertragung entfernt. Personen, welche die E-Mail via BCC bekommen, können sich nicht gegenseitig identifizieren. Allen Empfängern wird aber signalisiert, dass die E-Mail zusätzlich als Blindkopie versendet wurde.
Während E-Mail-Programme und Server üblicherweise nach der ersten Variante vorgehen, sollte man sich im Zweifelsfall nicht darauf verlassen.

Subject: Der Betreff [Bearbeiten]

Das Subject (im Deutschen auch Betreff) stellt eine Beziehung des Senders und/oder des Empfängers zu einer Sache, erforderlichen Aktion oder zu einem Ereignis her. Es ist für den Empfänger eine wichtige Kurzinformation über den Inhalt der Mail und sollte daher nicht fehlen. In Anbetracht der steigenden Anzahl unerwünschter E-Mails (UBE/UCE/Spam) wächst die Bedeutung des Betreff-Felds, denn oft lassen sich unerwünschte Nachrichten bereits am Betreff erkennen.

Weitere Header-Zeilen [Bearbeiten]

Wesentlich sind weiterhin folgende Header-Zeilen:
  • Zeichensatz der E-Mail (z. B. „charset=utf-8“), damit der Empfänger auch Fremdsprachen oder Sonderzeichen im Text richtig angezeigt bekommt.
  • Content-Type, falls nicht nur reiner Text verwendet wird, bei HTML z. B. „text/html“
    • Bei gesetztem Content-Type ist auch der Mime-Type zu senden, z. B. „MIME-Version: 1.0“
Weitere Informationen werden automatisch in den Header eingefügt, sowohl vom Mailprogramm (Mail User Agent) des Absenders als auch von den an der Leitung der Mail beteiligten Mailservern (Mail Transfer Agents). So lässt sich in der Regel an den Received-Zeilen die Reihenfolge und Adresse aller am Versand beteiligten Mailserver ablesen. Weiterhin erscheinen gegebenenfalls Informationen über eine erfolgteViren-Prüfung oder Spam-Klassifizierung oder -Filterung in den Header-Zeilen der E-Mail.

Authentizität von Header-Informationen [Bearbeiten]

Wie alle Teile einer E-Mail-Nachricht werden auch Header-Zeilen nicht auf inhaltliche Korrektheit geprüft. Die dort angezeigten Informationen sind fälschbar. So setzen findige Spam-Versender in der Regel fingierte Header-Zeilen ein, um die wirkliche Herkunft der E-Mail zu verschleiern oder um Spam-Filter in die Irre zu führen, damit ihre Mails ungefiltert zugestellt werden. Dazu gehören Header-Zeilen, die auf ein legitimes Standard-Mailprogramm (und damit einen menschlichen Absender) hindeuten sollen oder auch Header-Zeilen, die eine bereits erfolgte Spamprüfung vorspiegeln, in der Hoffnung, die Mail werde dann vom Spam-Filter ungeprüft weitergeleitet.



Für mich war die Festlegung der Blind- und Carbon Copy wichtig,
der Rest aber auch überaus interessant ^^


Nun haben wir wieder was gelernt,
vielen Dank für zuhören (lesen), bis zum nächsten Mal

- the incredible Leitman

11. April 2011

Bitmaps in .net vergleichen

...funktioniert nicht xD

Naja, zumindest nicht direkt.
Die "Equals"-Methode sowie der Vergleichsoperator verwenden lediglich Referenzen,
der Inhalt wird dabei nicht berücksichtigt :-s


Jedoch, komplett hilflos ist man nicht ;)

Eine Möglichkeit ist, die Bilder in Bytearrays auszulesen
und diese, zuerst nach Größe, dann Byte für Byte zu vergleichen.

Klingt nicht ziemlich effizient,
denke ist es auch nicht -.-
Aber solange ich keine optimalere Möglichkeit gefunden habe, werde ich wohl bei diesem Weg bleiben müssen.

Codemäßig in Visual C++.net sieht das folgendermaßen aus:


   1:  // compare

   2:  {
   3:      System::IO::MemoryStream ^stream = gcnew System::IO::MemoryStream();
   4:      System::Drawing::Bitmap ^bm = System::Drawing::Bitmap::FromFile("file");
   5:      bm->Save(stream, System::Drawing::Imaging::ImageFormat::Bmp);
   6:      stream->Flush();
   7:      array ^arr = stream->ToArray();
   8:   
   9:      stream = gcnew System::IO::MemoryStream();
  10:      bm = System::Drawing::Bitmap::FromFile("otherfile");
  11:      bm->Save(stream, System::Drawing::Imaging::ImageFormat::Bmp);
  12:      stream->Flush();
  13:      array ^arr2 = stream->ToArray();
  14:   
  15:      if (arr->Length != arr2->Length)
  16:      {
  17:          // sure not equal
  18:      }
  19:      else
  20:      {
  21:          int length = arr->Length;
  22:          for (int i = 0; i < length; ++i)
  23:          {
  24:              if (arr[i] != arr2[i])
  25:              {
  26:                  // not equal
  27:                  break;
  28:              }
  29:          }
  30:      }
  31:  }



Mit obigen code snippet ist es jedoch leider nur möglich,
zu vergleichen ob die Bilder komplett ident sind.
Für Ähnlichkeiten oder um herauszufinden, ob sich in einem bestimmten Bild ein anderes befindet bietet sich eine so genannte "pattern recognition" an.
(Erster Google Link auf tutorials.de)


Viel Erfolg und happy coding :D

the incredible Leitman

7. April 2011

How do I change the mouse cursor to a hourglass?

... in a dotnet Form?


Das ist die leichte Frage ;)


this.Cursor = Cursors.WaitCursor;

To change it back to normal after the application has stopped loading:


this.Cursor = Cursors.Default;

As IntelliSense points out, you can change the mouse cursor to various shapes (crosshair, hand, help, etc.).




... gut, wie gesagt, das war leicht ;)
Aber wie sieht das Ganze aus, wenn man das aus einer statischen Methode machen möchte oder eben außerhalb eines .net control containers?



Cursor.Current = Cursors.WaitCursor; 
Cursor.Current = Cursors.Default;

(wie üblich in VC++ .net werden aus . einfach :: )


oder alternativ:

Application.UseWaitCursor = true;
// Do stuff
Application.UseWaitCursor = false;

... okay, das war jetzt auch nicht viel schwerer xD

Ich hoffe, wenigstens iiiiirgendwem damit geholfen zu haben
und sei es bloß mir selbst, wenn ich das wieder mal vergessen sollte und nachschlagen möchte ^^


happy coding
incredible Leitman

4. April 2011

gemanagte Referenzen in einer nicht gemanagten Klasse speichern


Wenn man C++ CLI und normales C++ in einem Projekt zusammen einsetzt, tauchen früher oder später scheinbar unlösbare Probleme auf. Bei einem Videoplayer den wir zur Zeit programmieren, war es nun soweit.
Um den Programmcode etwas zu entschlacken und den darunter liegenden Algorithmus zur Erstellung eines DirectShow Aufnahmegraphen wieder sichtbar zu machen, wurde es endlich Zeit eine Referenz auf ein gemanagtes Objekt in einer nativen Klasse zu speichern.
Im WPF-Frontend (C#) stellt der Nutzer ein, von welcher Kamera er aufnehmen will und in welches Format das geschehen soll. Diese Konfiguration wird an das Backend (C++) übergeben, in dem schließlich der Aufnahmegraph aufgebaut wird. Dabei kann es sehr viele unterschiedliche Kombination der Konfigurationsparameter geben. Die Art der Kamera (DV, USB, …), die Audioquelle, TimeShift (darüber werde ich bei Gelegenheit auch noch einen Blog-Eintrag schreiben => das war meine Diplomarbeit!) und noch einige mehr spielen hierbei eine Rolle.
Der Aufbau des Aufnahmegraphen erfolgte in einer großen Klasse mit etlichen Funktionen, und immer wieder wurde als Parameter dieser Funktionen ein Parameter vom Typ ICaptureConfiguration^ übergeben. Also habe ich das ganze aufgeflochten und in mehrere Klassen verteilt. Eine abstrakte Basisklasse mit statischen Hilfsfunktionen und einem Interface mit den wichtigsten Methoden, welche dann durch die Detail-Klassen abgedeckt sein müssen. Und um nicht ständig die Konfiguration als Parameter übergeben zu müssen, wird dieser Kontraktur als Member gespeichert.
Doch oh Schreck, was ist das: “Der Typ ICaptureConfiguration^ kann nicht als Membervariable einer nicht C++ CLI Klasse verwendet werden!” Ist ja eigentlich auch logisch, wie soll sonst der Speichermanager der CLR mitbekommen, wann die Referenz nicht mehr gebraucht wird und er das Objekt wieder freigeben kann. Oder noch schlimmer, wenn der Speichermanager des Objekt in seinem Speicher an eine andere Adresse schiebt um Platz zu schaffen, wäre die Referenz plötzlich ungültig! Es gibt nun nur zwei Möglichkeiten: entweder alles auf C++ CLI umstellen, was mindesten 100 Tage oder mehr dauern würde oder aber doch einen Weg finden, die Referenz zu speichern.
Dank google, der MSDN und anderen Seiten ist es mir zum Glück schließlich doch gelungen die Referenz zu speichern. Genau dafür gibt es nämlich das Template gcroot. Es sorgt dafür, dass die zugewiesene Referenz immer erreichbar ist. Da man solch eine Referenz immer mit delete wieder freigeben müsste, ist es besser man nutzt auto_gcroot. Das wird nämlich wie alle Wrapper dieser Art automatisch freigegeben. Im Code sieht das ganze dann in etwa so aus:
#include 
#using 

using namespace System;
...

class CCaptureMgrBase
{
    CCaptureMgrBase(ICaptureConfiguration^ captureConfig)
    {
        m_captureConfig = captureConfig;
    }
    ...
    msclr::auto_gcroot m_captureConfig;
}
Mit –> kann man nun ganz normal auf die Referenz zugreifen und Funktionen aufrufen.
Eine kleine Anmerkung habe ich allerdings noch. Man kann m_captureConfig nicht mehr einfach so an eine Funktion übergeben, welche ein ICaptureConfiguration^ als Parameter erwarte! Dafür muss man nunm_captureConfig.get() aufrufen.
class CCaptureMgrBase
{
    ...
    void Render()
    {
        // geht nicht:
        CCaptureMgrBase::Helper(m_captureConfig);

        // so ist es richtig
        CCaptureMgrBase::Helper(m_captureConfig.get());
    }

    static void Helper(ICaptureConfiguration^ captureConfig) { ... }
}

Beitrag "gestohlen" mit freundlicher Unterstützung vom CPlusSharp Blog

Vielen Dank, mit freundlichen Grüßen
Euer incredible Leitman

3. April 2011

Direktlinks auf zeitliche Positionen in YouTube-Videos

Vor Längerem wurde ein lang ersehntes und sinnvolles Feature auf der Video-Plattform YouTube gelaunched: es ist nun eine direkte Verlinkung einer Stelle in einem Video möglich. Wenn sich also beispielsweise bei 5 Minuten und 29 Sekunden eines 8-minütigen Videos eine Stelle befindet, die sich gut eignet, um eine Aussage zu unterstreichen, dann kann direkt auf diesen Punkt verlinkt werden.

Bloß ich merke mir das leider nie, deswegen erstelle ich nun hier diesen lang veralteten, weitaus verspäteten Post:
Das Ganze sieht so aus, hier der normale Link zum YouTube-Video:
und so kann man direkt zur Minute 0 und Sekunde 40 springen:
also einfach an den normalen YouTube-Link ein “#t=” und dann die Zeit in Minuten und Sekunden anhängen (z.B. “2m29“). Bei 0 Minuten war das “0m” bis vor einiger Zeit nicht notwendig, derzeit ist dies allerdings nicht mehr so.
Das gefällt mir sehr gut, da so ohne lästiges Geschnipsel oder etwaige Urheberrechts-Probleme gezielt Zitate aus Videos verwendet werden können. Viel Spaß beim Direkt-Linken ;)
Blog-Beitrag zum Thema im YouTube-Blog (english)

31. März 2011

dotnet ComboBox SelectedText always returning empty string o.O

Das Property SelectedText einer .Net ComboBox gibt ausschließlich einen leeren String (String::Empty) zurück?

Tja, das wird wohl daran liegen,
dass diese Eigenschaft etwas anderes zurückgibt, als (von mir) erwartet -.-

Aus der Hilfe:
"If DropDownStyle is set to ComboBoxStyle.DropDownList, the return is an
empty string ("")."



Jedenfalls,
um den aktuell selektierten Text einer ComboBox zu erhalten, WENN es eine DropDownList ist,
verwendet man SelectedItem.


Eigentlich keine große Sache...
... wenn man es weiß :-s

dotnet StreamReader - Fehlende Umlaute beim Lesen von Dateien

Folgendes Problem:
Beim Einlesen einer Textdatei mit dem Streamreader-Objekt gehen die deutschen Umlaute verloren. :-o


Der Grund hierfür ist, dass vom System als Standard die Codierung UTF-8 angenommen wird.


Doch die Lösung dazu ist schnell gefunden:
Aus dem bislang folgenden Code zum Einlesen:


StreamReader ^stream = gcnew StreamReader(filename);
while (strLine = stream->ReadLine())
{
      // work
}

dann genügt es, die Initialisierung des StreamReader-Objekts um einen weiteren Parameter zu ergänzen, der die richtige Kodierung aktiviert:

StreamReader ^stream = gcnew StreamReader(filename, System::Text::Encoding::Default);



Bei C# Code ist das Übliche zu beachten: aus gncew wird new, aus :: und -> ein Punkt und die ^ werden weggelassen ;)

1. März 2011

C# lernen – Die besten kostenlosen E-Books und Ressourcen

Ich bin wieder einmal auf einen tollen Post von Carsten (Der Softwareentwickler Blog) gestoßen:


Die von Microsoft erfundene Programmiersprache C# ist eine der beliebtesten Programmiersprachen der heutigen Zeit.
Da ist es kein Wunder, dass sich mittlerweile viele Webseiten, Blogs und auch Buch-Verlage mit dieser Sprache beschäftigen und auch sehr gute Lernangebote manchmal sogar kostenlos anbieten.
Die besten dieser kostenlosen Ressourcen zum Lernen von C# will ich Euch in diesem Artikel vorstellen.



C# – mehr als nur Windows


Die Programmiersprache C# ist dank des .NET-Alternativ-Frameworks Mono nicht nur für Microsoft-Betriebssysteme geeignet. Es ist auch auf den unterschiedlichsten Plattformen wie Linux und dem Mac nutzbar. So ist es z.B. auch in der Spieleentwicklungsumgebung Unity3D möglich mit C# Games für Windows, Mac, iOS und Android zu entwicklen.
Und da ich in meiner Unity3D-KI Reihe eben auch C# nutze, werde ich auch immer häufiger gefragt, wie und wo man am besten C# lernen kann.
Im Folgenden stell ich Euch deshalb drei richtig gute Online-Ressourcen vor mit denen Ihr kostenlos C# lernen könnt und dabei alles Wichtige über die Sprache lernt.


Visual C# 2010 – E-Book und OpenBook


Der Galileo Verlag bietet hier die neueste Fassung seiner C#-Buch-Reihe kostenlos als Download an. Ihr erfahrt in 30 ausführlichen Kapiteln alle wichtigen Techniken von den Grundlagen bis hin zu tiefgreifendem Wissen der Programmiersprache.
Von den Grundlagen wie der Objekorientierung über Multithreading bis hin zu ADO.NET (Datenbanken), LINQ und WPF – hier erfahren Softwareentwickler alles, was man über die Sprache grundlegend wissen muss.
Dabei ist das Buch auf das Vermitteln von Wissen konzipiert.

Guide to CSharp – Online lernen


Der Softwareentwickler Golo Roden hat ein großartiges Projekt ins Leben gerufen. Auf seiner Website “Guide to CSharp” bringt er allen Programmier-Einsteiger sowie auch Fortgeschrittenen die Objektorientere Sprache C# näher.
Ein wahres Mamutwerk hat Golo hier erschaffen, in dem er Euch Schritt für Schritt an die Programmiersprache heranführt. Dabei legt er vorallem Wert darauf, dass er nicht nur die Grundlagen erläutert sondern auch gleichzeitig diese auch tiefausleuchtet und somit auch Fortgeschrittenen Entwicklern durchaus etwas Neues erzählen kann.
Was mir besonders an der Website gefällt ist der Rote Faden, den der Leser durch die verschiedenen Kapitel führt. So erklärt Rodon prima anhand von Beispielen warum und wofür es bestimmte Befehle und Funktionalitäten gibt und welche Vereinfachungen geschaffen wurden.

OpenBook C#


Wer alle Grundlagen verstehen möchte, der sollte sich dieses C# OpenBook vom Galileo-Verlag anschauen. Hier wird verständlich alles Wichtige erläutert, was ein C#-Programmierer von der Sprache kennen und können sollte.
Da dieses Buch schon etwas älter ist, wird hier natürlich nicht auf alle neuen Erweiterungen der Sprache eingegangen (wie im obigen Buch VisualC# 2010), sodass dieses von den hier vorgestellten Büchern meiner Meinung nach am besten für Anfänger geeignet ist.
Wenn Ihr also echte Einsteiger seit, dann würde ich hier unbedingt mal ein reinschnuppern.

Fazit


Wie Ihr seht gibt es echt tolle Online Ressourcen um C# zu lernen. Wenn Ihr aber noch weitere gute kennt, die  hier erwähnt werden sollten, dann könnt Ihr gerne unten ein Kommentar hinterlassen!
Gruß Carsten


(zum original Post gehts hier)

28. Februar 2011

Darkspore Betakey

Betakey zu gewinnen!

(Orginal Gewinnspiel von 4Players.de)

Der innovative Lebensbaukasten Spore trifft auf ein Action-RPG im Sci-Fi-Gewand - heraus kommt DarkSpore! Eine innovative Genremischung, in der ihr außerirdischen Horden kooperativ zeigt, wo der Warpfaktor hängt - allerdings nicht mit Phasern, sondern mit lebendigen Waffen! In Zusammenarbeit mit Publisher Electronic Arts verlosen wir satte 2000 Keys für den aktuellen Betatest.

Die Verlosung findet ihr hier. Ihr müsst einfach nur mit eurem 4Players-Account eingeloggt sein, dann könnt ihr mit einem Klick auf das »Ja, ich möchte mitmachen«-Feld euren persönlichen Betakey abholen. Nachfolgend findet ihr die Informationen von EA zum Ablauf des Betatests:

Willkommen zur Darkspore-Beta! Es erwartet Sie:

  • Das Tutorial (ungefähr 15 Minuten)
  • Kampagnenmodus & PvP
  • Helden-Editor (um ihre Gruppe von Helden zu individualisieren)
  • Zwei Planeten (Zelems Nexus, Nocturna)
  • Zwei PvP-Arenen
Der Ablaufplan der Demo-Beta lautet wie folgt:

  • Samstag, 26. Februar, 3:00 Uhr bis Montag, 28. Februar 8.59 Uhr
  • Samstag, 5. März, 3:00 Uhr bis Montag, 7. März 8.59 Uhr
  • Samstag, 12. März, 3:00 Uhr bis Montag, 14. März, 8.59 Uhr
Um sich für die Darkspore-Beta zu registrieren und sie zu installieren:

  1. Rufen Sie die Beta-Registrierungsseite auf.
  2. Erstellen Sie ein EA-Konto (oder melden Sie sich mit Ihrem bestehenden an), und befolgen Sie die Anweisungen.
  3. Lösen Sie den Beta-Zugangskey ein.
  4. Laden Sie das Installationsprogramm herunter und installieren Sie das Spiel. Wenn Sie Darkspore das erste Mal starten, wird das Spiel alle verfügbaren Updates herunterladen. Die Zeit für das Herunterladen hängt von der Internet-Verbindung ab.



Mindestanforderungen:

Betriebssystem: Win XP oder höher
Prozessor: 3 GHz P4 oder Intel Core 2 Due 2 GHz oder höher
RAM: 2 GB oder mehr
Festplattenspeicher: bis zu 10 GB freier Speicherplatz
Grafikkarte: 256 MB NVIDIA GeForce 8800, ATI X1900 oder höher
Breitband-Internet erforderlich (Achtung: Von einer drahtlosen Verbindung wird abgeraten)



Die Incredible Blog Aktion:


Da ich bereits einen Betakey habe,
jedoch es nach zwei Tagen immer noch nicht geschafft habe, den Installer herunter zu laden (mein Router macht in letzter Zeit Probleme, verlier alle paar Minuten die Verbindung -.-)
werde ich ihn nun weiter - "verschenken" ^.^

Der erste, der hier auf diesen Post einen Kommentar und Kontaktinformationen  unter denen er / sie erreichbar ist hinterlässt bekommt meinen Betakey :)

Viel Spaß,
Euer incredible Leitman


(Orginal Post von Paul, 4Players.de)

16. Februar 2011

Kostenloses E-Book: Leitfaden Game-Design für Spieleentwickler

Wer ein eigenes Computerspiel entwickeln will muss etliches beachten. Und um so größer und umpfangreicher das Spiel werden soll, um so wichtiger wird eine gute Vorplanung.
Eine gute Hilfe kann hier das kostenlose Design Dokument von Sven Sorour sein, das Euch bei der Planung hilft und wichtige Fragen bei der Planung beleuchtet.




Der Weg zum Computerspiel

Jeder der zum Beispiel mit Unity3D ein Computerspiel entwickeln möchte steht vor dem eigentlichen Programmieren und Designen vor ganz anderen Fragen. Worum soll es eigentlich gehen? Was muss ich alles bedenken? Was mache ich zuerst und was zuletzt?
Sven Sorour von game-inventor hat hierzu ein kostenloses E-Book veröffentlicht, das Euch hilft strukturiert an die Spieleentwicklung herangehen zu können. Das E-Book umfasst 37 Seiten und spricht jedes Thema eines Spiels an, das bedacht werden sollte und wirft Fragen auf, die bei der Planung bedacht werden müssen.


E-Book Inhalt

Als erstes werden Fragen zur Spielidee und dem Gameplay aufgeworfen wonach dann die Grafik und die Darstellungsarten beleuchtet werden. Danach werden dann die Audio-Themen Musik und Sound angesprochen. Im darauf folgenden Kapitel kommt dann die GUI, das Benutzer-Interface, dran.
Anschließend wird dann im Kapitel Fünf auf mögliche Entwicklungswerkzeuge eingegangen. Auch wenn natürlich die Auflistung bei weitem nicht umfassend ist und mehr als Beispiel-Aufzählung anzusehen ist, so gibt Sven doch gute Anregungen hierzu, was alles zu bedenken ist und welche Arten von Tools alles beim Entwickeln eines Games zum Einsatz kommen können.
Im sechsten und letzten Kapitel geht es dann schließlich um die eigentliche Projektplanung. Dabei hält er natürlich nicht einen ganzen Vortrag über Projektplanung sondern erklärt kurz in wenigen Worten worum es dabei eigentlich geht.


Fazit und Download

Das Design-Dokument von Sven Sorour behandelt in seinem Dokument alle wichtigen Aspekte eines Computerspiels. Auch wenn er nicht tief jedes einzelne Kapitel beleuchtet, so erhält der Leser doch einen guten Einblick in die Vorbereitung eines eigenen Projektes in der Spieleentwicklung.
Das 37 Seiten umfassende E-Book könnt Ihr kostenlos auf der Sven Sorours Website game-inventor herunterladen: Design Dokument


 (gefunden auf dem Software Entwickler-Blog von Carsten)

12. Februar 2011

Kostenloses 300 Seiten E-Book – Introduction to BLENDER 2.5

Ihr wollt mit Blender 2.5 durchstarten oder denkt zur Zeit noch darüber nach?
Dann hab ich hier ein tolles E-Book für Euch, welches alle Grundlagen der Open Source 3D Modelling Software erklärt!


 

Introduction to BLENDER 3D

Das E-Book “Introduction to BLENDER 3D” stammt von John M. Blain und steht auf seiner Webseite kostenlos zum Download bereit. Das PDF richtet sich vorallem an Blender-Einsteiger und auch an Umsteiger von der alten Blender 2.4x-Version sowie Nutzern anderer 3D Modelling Tools.
Dabei behandelt das E-Book  jedes Thema bzw. jedes einzelne Werkzeug von Blender. Dabei wird jedes Mal dieses auch anhand von Abbildungen demonstriert und deren Auswirkungen gezeigt. Auch wenn das Buch in Englisch geschrieben wurde sind durch die Abbildungen und die sehr einfach und verständlich gehaltenen Texte sehr nachvollziehbar. So ziemlich jedem sollte so schnell klar werden, auf welche Art und Weise ein Tool einzusetzen ist.
Ich war schon sehr überrascht wie toll dabei die Themen behandelt wurden. So wird zum Beispiel beim Thema Modifier jeder einzelne erklärt und demonstriert -echt klasse. Auch alle Grundlagen für das Thema Riggen werden in dem Kapitel Armature verständlich erklärt. In Kombination mit dem Kapitel Animation hat man im Grunde alle Grundlagen, um z.B. Game-Charaktere zu Animieren.
Aber es geht auch noch weiter. Auch Fluid Simulation und Partikel werden erläutert. Und natürlich auch Grundlagenthemen wie Texturen (mit u.a. UV Texture Mapping), Lightning bis hin zu Grundlagen der Game Engine und des Video Sequence Editor.

E-Book Download

Wenn Ihr neugierig geworden seid, dann könnt Ihr hier das E-Book downloaden: Introduction to Blender.
Als Ergänzung zu diesem E-Book kann Euch noch ein weiteres E-Book empfehlen, welches ebenfalls umsonst ist und sich mit Low-Poly-Design in Blender beschäftigt: kostenloses E-Book Low Poly Modelling in Blender.



(Text 1:1 "geklaut" von Carsten. Beschwerden, Anregungen, weitere Informationen direkt in seinem Softwareentwickler Blog)

11. Februar 2011

Spezial: Ein Ajax-Buch gratis - Wählen Sie ein Buch für Einsteiger oder Profis

AJAX (Asynchronous JavaScript and XML) ist die Web-Technologie für eine neue Generation von Web-Applikationen, die unter den Schlagworten Web 2.0 und Web 3.0 bekannt geworden ist. Die Anwendungen sind in hohem Maße interaktiv und AJAX bildet die Programmierbasis dazu.

Wenn Sie bisher noch keine Erfahrung mit Ajax hatten, ist das Buch "Jetzt lerne ich Ajax" ein idealer Begleiter für das Selbststudium. Für erfahrene Ajax-Programmierer bietet sich das Buch "Ajax Frameworks" aus dem Hause Addison-Wesley an. Es führt den Leser in die Hintergründe von AJAX ein und stellt populäre AJAX-Frameworks vor.

Bis Montag können Sie einen der beiden Titel für 0,00 EUR bestellen. Viel Erfolg damit!

Jetzt lerne ich Ajax für 0,00 EUR

Ajax Frameworks für 0,00 EUR



- terrashop.de

Effektiver und schneller lernen

 3 Tipps, wie Sie effektiver und schneller lernen

(eben per newsletter von Christoph Mogwitz [eBookschreiben.de] reinbekommen)



Heute möchte ich Ihnen drei Tipps vorstellen,
mit denen Sie neu Gelerntes tiefer verinnerlichen können und somit die neuen Informationen länger für Sie nutzbar sind.
Wir alle müssen lernen für unser Internetgeschäft.
Kein Internetunternehmer kann ohne das Lernen von neuen Strategien langfristigen Erfolg erwarten.
Die meisten Internetunternehmer machen sich um das Thema Lernen, im Speziellen wie genau man lernt, keine besonderen Gedanken. Dabei sind einige Tipps so simpel und effektiv, dass Sie Ihre Lerngeschwindigkeit um mindestens 100 % erhöhen können. Lassen Sie
uns zu den drei Tipps kommen, die ich heute mit Ihnen teilen möchte.





1. Schlafen Sie kurz nachdem Sie eine Menge gelernt haben

In jedem guten Buch um das Thema Lernen werden Sie diesen Tipp
finden. Wenn Sie eine Menge an neuen Informationen aufgenommen
haben, ist es eine der besten Strategien, für einen kurzen Napp zu
sorgen, denn diese abwechslungsreiche Aktivität des Gehirns führt
dazu, dass die Informationen tiefer verankert werden können und
somit für Sie langfristig besser abrufbar sind. Im Umkehrschluss
macht es keinen großen Sinn zu lernen, wenn Sie müde sind. Gehen
Sie lieber schlafen und lernen Sie, wenn Sie wieder wach & munter
sind und sich auf die Sache konzentrieren können.


2. Lehren Sie, was Sie gelernt haben


Eine meiner Lieblingsstrategien ist, das, was ich gelernt habe,
sofort zu lehren. Schnappen Sie sich einen Freund oder im Idealfall
Ihre Mastermind-Gruppe, wenn Sie eine haben, und lehren Sie, was
Sie gerade entdeckt haben. Der Prozess des Lehrens ordnet die
Informationen in Ihrem Gehirn in eine klarere Form und dient
außerdem der altbekannten Lernmethode des Wiederholens. Jeder, der
schon einmal etwas gelehrt hat, wird sich dabei ertappen, dass er
während dieses Lehrprozesses selber wieder etwas hinzulernt.
Er entdeckt neue Möglichkeiten, die gelernten Informationen in
verschiedenen Perspektiven darzustellen.  Diese verschiedenen
Perspektiven sorgen letztendlich dafür, dass sie langfristig besser
für Sie abrufbar sind. Wenn Sie besonders wirkungsvoll lehren
wollen, organisieren Sie sich eine Mastermind-Gruppe (eine Gruppe
von Gleichgesinnten mit einem gemeinsamen Ziel), der Sie Ihr frisch
Gelerntes lehren können. Wenn auch die anderen
Mastermind-Teilnehmer daran partizipieren, entsteht dadurch ein
interessanter Informationspool, von dem alle der Gruppe
profitieren. Wie Sie eine Mastermind-Gruppe aufbauen und worauf Sie
achten sollen erfahren Sie hier aus meinem letzten
Neujahrs-Newsletter: http://infomarketer.de/newsletter/Neujahrsreport2011.pdf


3. Legen Sie für jedes neue Konzept, das Sie gelernt haben, eine
Mind-Map an


Mind-Mapping ist eine strukturierte Erfassung von Informationen,
die sehr der Funktionsweise unseres Gehirns ähnelt. Somit können
Informationen, die Sie vor langer Zeit einmal gelernt haben, wieder
schnell abgerufen werden, ohne dass man das Lehrmaterial oder
Notizen noch einmal durchgehen muss. Ich fertige meine Mind-Maps
schon seit Jahren an und jedes Mal, wenn ich mich wieder an ein
Thema zurückerinnern will, dann brauche ich nur die entsprechende
Mind-Map aufzumachen und bin äußerst schnell wieder in den
benötigten Informationen.  Auf bubbl.us können Sie kostenlos
Mind-Maps anfertigen. Wenn Sie mit dem iPhone oder dem iPad
arbeiten wollen, empfehle ich das APP iThought oder googeln Sie
einfach nach einigen kostenlosen Min-Map-Programmen, die als Open
Source Versionen verfügbar sind. Legen Sie doch jetzt gleich Ihre
erste Mind-Map zum Thema "Wie lerne ich richtig" an.  :-)



8. Februar 2011

Developer-Wettbewerb - Three Lines of Code

Microsoft sucht die kreativste selbst programmierte Anwendung für Windows 7. Machen Sie mit und gewinnen Sie mit Ihrem Programm einen Flug nach Las Vegas.

Sie coden mit Leidenschaft? Und benutzen dafür am liebsten Visual Studio 2010? Dann machen Sie mit beim Developer-Wettbewerb von Microsoft („Three Lines of Code“).

Bei dem Gewinnspiel geht es darum, dass Sie ihre Wunschanwendung für Windows 7 mit Hilfe von Microsoft-Software erstellen. Konkret sollen Sie ein Desktop-Programm für Windows 7 erstellen und dabei folgenden Vorgaben erfüllen:

Sie müssen Visual Studio 2010 als Entwicklungsumgebung verwenden. Das dürfte Ihnen nicht wirklich schwer fallen, schließlich ist Visual Studio die perfekte IDE für Developer. Ihre Anwendung müssen Sie zudem entweder mit einer .net-Sprache und auf Basis der .net-Plattform erstellen oder mit dem bewährten Visual C++ realisieren. Sie sind also nicht gezwungen mit .net zu entwickeln sondern können auch als klassischer C++-Code-Hacker loslegen.

Für Ihr Projekt müssen Windows 7-Features müssen verwendet werden. Der Code soll zudem aus möglichst wenig Zeilen bestehen. Denn die wahre Kunst des Programmierens besteht nicht aus seitenlangem Spaghetti-Code sondern aus übersichtlichem, prägnanten, klar strukturierten Quellcode.

Ganz wichtig: Der Einsender muss die Software selbst erstellt haben und die Rechte an allen Bestandteilen besitzen. Denn der Schutz geistigen Eigentums ist wichtig.



Ihr Auftrag

Welche Funktion suchen Sie in Ihrem System vergeblich? Stellen Sie sich der Herausforderung und bauen Sie Ihre eigene verrückte Wunsch-Anwendung. Dabei sollte mindestens eine der vielen neuen Windows 7 Funktionen verwendet werden.
So nehmen Sie teil

Sie wollen mitmachen? Dann folgen Sie einfach diesem Link. Einsendeschluss für Ihre Windows-7-Anwendung ist der 28. Februar 2011.

Gewinne

Das Coden lohnt sich doppelt. Einerseits bekommen Sie eine unverwechselbare Anwendung, andererseits winken tolle Preise. Die Hauptpreise 1-3 für die tollste Anwendung sind:

* Ein Flug nach Las Vegas inklusive Flughafentransfer per Limousine
* Besuch der MIX 2011, der Microsoft-Konferenz für Web-Entwickler
* Sechs Übernachtungen im Mandalay Bay Hotel
* 300 US-Doller in Gambling Chips zum Verzocken
* Helikopterflug zum Grand Canyon inklusive Transfer
Achtung: Die Reise muss im April 2011 stattfinden.

Weitere Preise:

4. Preis: Sony LCD Flat Screen TV KDL-40NX715, Sony Sound System mit BluRay BDV-IZ1000W
5. Preis: Xbox mit Kinect, 1 Controller, 3 Spiele (Kinect Adventures, Kinect Sports, Dance Central)
6. Preis: Ein Windows Phone 7-Smartphone (LG Optimus 7)
7. Preis: Paket mit Mouse, Tastatur, Headset

Unsere Jury prüft alle eingehenden Windows-7-Anwendungen genau und stellt die besten Arbeiten dann online vor.

4. Februar 2011

Der launcher kann keine patch-informationen abrufen. Bitte überprüfen sie ihre internetverbindung

Ich hatte seit Tagen dieses Problem...

Wow über den launcher starten, da popt folgende Fehlermeldung auf:
"Der launcher kann keine patch-informationen abrufen. Bitte überprüfen sie ihre internetverbindung"

Na toll, was tun?

Eigentlich wollte ich ja nur vielleicht ein paar Stunden World of Warcraft spielen
und meinen Goblin Arkan Magier mit epischen Gegenständen ausrüsten ^^

Doch leider lässt mich der launcher wegen oben genannter Fehlermeldung nicht ins Spiel -.-


Nicht, dass ich etwas geändert hätte,
weder an meinem System, an meiner Konfiguration oder sonstwas...
Nein, alles wie gehabt und dennoch kommt dieser Fehler :(


Also habe ich mich anfangs ein wenig auf den offiziellen Blizzard Foren nach einer möglichen Lösung umgesehen (vielleicht hat ein Blauer ja einen guten Tipp)

Gefunden habe ich zwar einige Threads über Google,
wie z.B. den hier
doch geholfen hat das alles nichts -.-

Weder "löschen des wtf und Cache Ordners"
"Deinstallieren des AddOns"
"Reset des Routers"
noch "das checken der realmlist.wtf"

Das seltsame war, nach eine halben Stunde bis Stunde konnte ich den launcher problemlos starten, der hat seine Patch-Informationen abgerufen,
notwendigerweise etwas runtergeladen und ich konnte mich einloggen o.O


Mittlerweile hatte ich das stundenlange Warten und die "Untätigkeit" seitens Blizzard satt
und habe mich ein wenim in den Weiten des Internets auf die Suche nach einer Lösung gemacht.
Und siehe da,
ich glaube ich habe eine gefunden ^.^

(Oder die WoW Entwickler haben etwas gefixed xD)


Die Lösung war trivial, aber dennoch ohne Ansatz schwer zu finden.
Den die Fehlermeldung:
"Der launcher kann keine patch-informationen abrufen. Bitte überprüfen sie ihre internetverbindung"
war für mich unverständlich,
ich konnte schließlich ins Internet und alles, bloß eben mein Blizzard Updater hat nicht funktioniert -.-

So nun genug herum, ich habe einfach mittels Port-forwarding die "notwendigen" Ports an meinem Router freigegeben und voila,
plötzlich lief alles einwandfrei :)

Doof nur, dass diese Ports scheinbar nirgendwo offiziell erwähnt werden
(oder ich es nicht gefunden habe)
und auch in meinem Router Menü für "bekannte Programme" stand zwar etwas von
"World of Warcraft" und "Blizzard" sowie "Battle net" aber nichts vom launcher.

Anbei ein Bild der Konfiguration, die bei mir funktioniert:


Bestimmt gibt es auf eurem Router auch irgendwo eine Einstellung a'la
"Port-forwarding" oder "Port Weiterleitung" oder so ähnlich in der ihr das Konfigurieren könnt.

(Für gewöhnlich erreicht ihr diesen über die Standard Adresse wie etwa http://10.0.0.138/
einfach im webbrowser eingeben)



So, das wars erstmal wieder von mir
wir sehen uns in Azeroth ^^



euer
incredible Leitman

FOR THE HORDE!



EDIT 27.04.2011:
Um weitere Kommentare dieser Art entgegen zu treten eines vorweg:
Ich hatte oben beschriebenes Problem unter Windows XP, SP 3.
Benutzer, die Vista oder Seven verwenden probieren vielleicht erst die Option "als Administrator ausführen", wenn sie die benötigten Rechte dazu haben (rechte Maustaste klick auf das WoW Icon, wenn ich mich recht entsinne)