Erstes Praxistraining der FHWT

Gestern habe ich am ersten Praxistraining der FHWT teilgenommen. Da es insgesamt auf eine positive Resonanz gestoßen ist, wird es in Zukunft wohl häufiger solche Treffen geben, bei denen die Studenten aber auch andere Interessierte sich Vorträge zu ausgewählten Themen anhören können. Das Thema des gestrigen Tages war “Motivation”. Hierzu zählte sowohl die Eigenmotivation, über die von Herrn gr. Macke referiert wurde, als auch die Motivation der Mitarbeiter, zu der Herr Dr. Gerhold einen Vortrag hielt.

Leider waren mir große Teile aus dem Vortrag zur Motivation von Mitarbeitern schon aus den Vorlesungen (Organisationspsychologie) bekannt, die ich bei Herrn Dr. Gerhold hatte. Dennoch war es wie immer interessant, ihn vortragen zu hören und ihm beim Imitieren der unterschiedlichen Charakterzüge von Menschen zuzuschauen 🙂 Er hielt auch noch den letzten Vortrag zum Thema Mitarbeitergespräche. Das kam mir allerdings auch alles sehr bekannt vor, diesmal jedoch aus der Vorlesung Projektmanagement. Nichtsdestotrotz haben mir die Vorträge von Herrn Dr. Gerhold sehr gut gefallen.

So richtig Neues habe ich gestern leider nur im ersten Vortrag des Tages mitnehmen können. Dabei ging es um die Eigenmotivation und wie man sich selbst zu mehr Leistung anspornen kann. Der wirklich gute Vortrag von Herrn gr. Macke, der hauptsächlich das “magische Rechteck” (Leistung, soziales Umfeld, Gesundheit und Sinn) zum Inhalt hatte, hat mir äußerst gut gefallen. Ich werde auf jeden Fall versuchen, das ein oder andere umzusetzen. So aus der Erinnerung fallen mir nur noch ein paar Punkte ein (vielleicht sollte ich das nächste Mal tatsächlich etwas zu Schreiben mitnehmen ;)):

  • Suche dir jeden Tag etwas, worauf du dich freust, und bewahre diese Freude den Tag über.
  • Nehme dir jeden Tag etwas Kleines vor, das du an deinem Verhalten ändern willst.
  • Frage dich nach dem Sinn, der hinter deinem Tun steckt. Wenn du keinen findest, such dir nen anderen Job 😉
  • Hör auf, ständig zu nörgeln und fang an, selbst etwas zu ändern.

Insgesamt fand ich das Praxis-Training sehr interessant. Leider war nur knapp die Hälfte der geplanten Teilnehmerzahl anwesend und ein angekündigter Dozent konnte aus gesundheitlichen Gründen nicht mehr teilnehmen. Da ich gerne dessen Vorträge zum Thema Wissensmanagement gehört hätte, finde ich das zwar nicht ganz so toll, aber was soll man machen, wenn einem der Zahn abbricht? 🙂 Auch für Verpflegung war bestens gesorgt und die Vorträge waren durchaus unterhaltsam gestaltet, was bei solch praxisnahen Themen und den passenden Übungen sehr förderlich auf die Mitarbeit der Zuhörer gewirkt hat.

Kurz zusammengefasst: sollte es also tatsächlich ein weiteres Praxistraining an der FHWT geben, so werde ich wohl wieder teilnehmen 🙂

C#-Projekt: MySqlClient unter .NET ist extrem langsam

Bei meinem C#-Projekt füge ich teilweise bis zu 30.000 Datensätze in eine MySQL-Tabelle ein und muss diese später auch wieder auslesen. Meine speziell geschriebene Datenbank-Klasse, die diese Aufgaben erledigen soll, benötigt für 2000 Datensätze fast 5 Minuten. Das kann’s nicht sein, dachte ich mir, und somit machte mich auf die Suche nach einer Lösung, um das Ganze zu beschleunigen.

Zahlreiche Tests später (einzelne / mehrere MySqlConnections / MySqlCommands etc.) war es zwar ein wenig schneller (durch die Optimierung meines eigenen Codes) aber der Flaschenhals war eindeutig die MySQL-Datenbank. Nach einer kurzen Suche bei Google, habe ich eine Diskussion im MySQL-Forum gefunden und damit auch die Lösung meines Problems: Meine Tabellen hatten das InnoDB-Format. Nachdem ich eine Testtabelle auf MyISAM umgestellt habe, wurde das Einfügen sofort bedeutend schneller (mindestens Faktor 20, eher mehr).

Da ich auf die “Vorteile” des InnoDB-Formats verzichten kann, stelle ich meine restlichen Tabellen nun auch auf MyISAM um…

Kontaktformular

Habe mal ein kleines Kontaktformular eingerichtet, nachdem mir aufgefallen ist, dass hier nirgendwo eine E-Mail-Adresse von mir steht…

Dazu habe ich das Plugin WP-ContactForm verwendet. Damit kann man recht einfach über das Einfügen eines kleinen Tags (<!–contact form–>) ein nettes Kontaktformular erstellen. Nur die englischen Texte musste ich noch im Quelltext des Plugins nachbearbeiten bzw. übersetzen.

DIN-konformes Literaturverzeichnis mit LaTeX

Ich wollte mich gerade an meinen Praxisbericht im schönen Fach “Systemanalyse und DV-Projektmanagement” setzen, den ich dem Thema “UML im Praxiseinsatz” widmen werde. Doch leider musste ich feststellen, dass das bereits von mit erstellte Literaturverzeichnis nicht ganz meinen jetzigen Vorstellungen entsprach.

Ich hätte gerne eine Liste mit Bezeichnern, die aus dem Kürzel des Autors und dem Jahr der Veröffentlichung zusammengesetzt sind. Internetquellen sollen mit URL und Datum des letzten Aufrufs angegeben werden. Und hinter den Quellenangaben sollen Links eingefügt werden (in der PDF-Datei), die auf die Stelle im Text verweisen, an der die Quelle zitiert wird. Das Ganze soll also so aussehen:

Nach DIN 1505 formatiertes Literaturverzeichnis in LaTeX

Im Text werden die Verweise auf die Quellen wie folgt aussehen:

Beispielverweise auf Quellen in LaTeX

Die Einträge für das Literaturverzeichnis sind schnell mit BibTex erstellt (habe dazu JabRef eingesetzt) und die Style-Dateien, die ich hierzu verwendet habe gibt es bei der HAW Hamburg (da die Website inzwischen offline ist, gibt es hier die Datei: natdin.bst). Diese aktualisierten Styles sorgen für die Ausgabe der URLs und Datumsangaben. Hier mal ein Beispiel für einen von JabRef erzeugten Bibliographie-Eintrag. Internetquellen werden hierbei als “Booklet” referenziert:
@BOOKLET{Macke, title = {Mein Blog}, author = {Stefan Macke}, lastchecked = {09.05.2006}, owner = {macke}, timestamp = {2006.05.09}, url = {http://blog.stefan-macke.de}, urldate = {10.05.2006}, }

Eingebunden wird das Ganze nun wie folgt:

  1. Zunächst einmal muss die BST-Datei an die richtige Stelle kopiert werden: %Installationsverzeichnis_LaTeX%\bibtex\bst\din1505
  2. Dann wird der Stil im LaTeX-Dokument aktiviert:
    \bibliography{Bibliographie} \bibliographystyle{alphadin}
    Hierbei inkludiert der erste Befehl die Datei Bibliographie.bib, die ich mit JabRef angelegt habe, und der zweite setzt den gewünschten Stil (DIN mit alphanumerischen Bezeichnern: die heruntergeladene Datei).
  3. Die Links zu den Kapiteln, in denen die Quellen referenziert werden, werden vom hyperref-Paket erstellt, das mit folgender Syntax eingebunden werden muss, wobei auch die Farben der Texte beliebig verändert werden können:
    \usepackage[ colorlinks=true, linkcolor=red, % einfache interne Verknüpfungen anchorcolor=black,% Ankertext citecolor=green, % Verweise auf Literaturverzeichniseinträge im Text pagecolor=red, % Verknüpfungen zu anderen Seiten urlcolor=cyan, % Farbe der URLs backref, % Back-Links zu den Kapiteln ]{hyperref}

Noch mehr gute Musik

Mensch, was ist denn zur Zeit los? Nicht nur Rise Against haben wie gesagt ein Hammer-Album draußen. Nein, auch Billy Talent haben zugeschlagen. Und zwar schon eine Woche vor Rise Against. Ich kann mich gar nicht entscheiden, welches Album ich hören soll 🙂 Schlimm sowas…

Und dann habe ich noch einen “Geheimtipp”: Ryan’s Hope. Eingängige Melodien und krasse Gitarren. Endlich mal wieder eine Band die richtig gute Soli in die Songs einbaut. Aber auch sonst sind die Songs total abwechslungsreich, sei es beim Tempo oder beim Rhythmus. Mich erinnert der Stil ein wenig an Belvedere, obwohl ich die nicht ganz so sehr mag (aber die sind halt verdammt schnell und haben’s einfach drauf ;-)). Mein erster Eindruck nach einigen Malen Reinhören: super interessant und absolut empfehlenswert!

CD-Tipp: Rise Against – The Sufferer And The Witness

WOW! Mehr kann man nicht zum neuen Knalleralbum von Rise Against sagen, das es seit gestern zu kaufen gibt.

Die drei Songs, die man schon vorab hören konnte, sind zugleich die drei ersten Songs des Albums und ein verdammt guter Einstieg. Besonders “Injection” hat es mir sehr angetan. Super eingeängige Melodie und trotzdem recht hart.

Das kann man insgesamt auch zu den anderen Songs sagen. Durchgängig voller Sound und Hammer-Melodien. Meine zwei Kritikpunkte sind Track 8 (The Approaching Curve), da hier weniger gesungen als gesprochen wird, und Track 11 (Roadside), der wohl in Richtung “Swing Life Away” gehen soll, mir aber melodisch nicht so sehr gefällt (trotz begleitender Frauenstimme)…

Aber insgesamt entspricht das Album vollstens meinen Erwartungen und ich habe für die nächsten Wochen endlich wieder gute Musik 🙂

Gothic 3 in der neuen GameStar

Gestern konnte ich einfach nicht an der neuen GameStar vorbeigehen, auf deren Titelseite unübersehbar Xardas abgebildet ist. Und sie enthält auch einen mehrseitigen Bericht über Gothic 3, das Ende September rauskommen soll.

Und ich muss sagen, dass mich die Vorfreude langsam ganz hibbelig macht 🙂 Was da so beschrieben ist, vom Detailreichtum der Spielwelt (alles per Hand modelliert) über die Tagesabläufe der NPCs bis hin zur verdammt genialen Grafik, hat mich schon sehr beeindruckt. Und das 12-minütige Video, das auf der beiligenden DVD ist, hat mich total umgehauen.

Die Grafik konnte man zwar schon im offiziellen Trailer bestaunen, aber längere Spielszenen gab es dort nicht zu sehen. Die NPCs und Monster und die Landschaft sehen so klasse aus! Am genialsten finde ich die Wasserfälle und Flüsse, deren Wasser z.B. an Brückenpfeilern schäumt etc.

Ich kann nur jedem Gothic-Fan raten, sich das anzuschauen. Ich glaube, es wird Zeit eine Vorbestellung aufzugeben 😉

C#-Projekt: Zugriff auf MySQL

Heute habe ich im Rahmen meines C#-Projektes den Zugriff auf eine MySQL-Datenbank getestet. Dazu ist letztlich nur der MySQL .NET-Connector nötig, den man auf der MySQL-Seite herunterladen kann. Nun muss man nur noch einen Verweis auf die entsprechende DLL einrichten (Mysql.Data.dll) und schon kann man die MySQL-Funktionen nutzen. Hier habe ich mal einen beispielhaften Ablauf einer Datenbankabfrage dokumentiert:
// Verbindung konfigurieren this.mySqlConnectionString = "Server=" + this.mySqlServer + ";" + "Port=" + this.mySqlPort + ";" + "Database=" + this.mySqlDatenbank + ";" + "Uid=" + this.mySqlBenutzer + ";" + "Pwd=" + this.mySqlPasswort + ";"; // Verbindung herstellen try { this.mySqlConn = new MySqlConnection(this.mySqlConnectionString); this.mySqlConn.Open(); } catch (MySqlException ex) { // ... Fehlerbehandlung ... } // Abfrage vorbereiten string sql = "SELECT * FROM test"; MySqlDataReader dataReader = null; MySqlCommand cmd = null; // Abfrage an die Datenbank senden try { cmd = new MySqlCommand(sql, this.mySqlConn); dataReader = cmd.ExecuteReader(); // Ergebnisse ausgeben (hier das Feld "id") while (dataReader.Read()) { Console.WriteLine(dataReader["id"]); } } // offene Handles schließen finally { dataReader.Close(); this.mySqlConn.Close(); }

C#-Projekt: Zugriff auf Excel-Dateien

Der Zugriff auf Excel-Dateien und -Funktionen mit C# ist eigentlich recht einfach. Zunächst muss ein Verweis auf die COM-Bibliothek Microsoft Excel 11.0 Object Library hinzugefügt und dann noch der entsprechende Namespace inkludiert werden mittels:
using Microsoft.Office.Interop.Excel;

Änderungen bei Excel 2007: Es muss die COM-Bibliothek Microsoft Excel 12.0 Object Library verwendet werden.
Änderungen bei Excel 2010: Es muss die COM-Bibliothek Microsoft Excel 14.0 Object Library verwendet werden.

Dann kann man munter drauflos programmieren, vielleicht wie folgt:
// benötigte Objekte vorbereiten Microsoft.Office.Interop.Excel.Application excel = null; Workbook wb = null; try { // Excel starten excel = new Microsoft.Office.Interop.Excel.Application(); excel.Visible = false; // Datei öffnen wb = excel.Workbooks.Open( @"C:\test.xlsx", ExcelKonstanten.UpdateLinks.DontUpdate, ExcelKonstanten.ReadOnly, ExcelKonstanten.Format.Nothing, "", // Passwort "", // WriteResPasswort ExcelKonstanten.IgnoreReadOnlyRecommended, XlPlatform.xlWindows, "", // Trennzeichen ExcelKonstanten.Editable, ExcelKonstanten.DontNotifiy, ExcelKonstanten.Converter.Default, ExcelKonstanten.DontAddToMru, ExcelKonstanten.Local, ExcelKonstanten.CorruptLoad.NormalLoad); // Arbeitsblätter lesen Sheets sheets = wb.Worksheets; // ein Arbeitsblatt auswählen... Worksheet ws = (Worksheet)sheets.get_Item("Tabelle1"); // ...oder eine Zelle Range range = (Range)ws.get_Range("A1", "A1"); // deren Wert auslesen string zellwert = range.Value2.ToString(); Console.WriteLine(zellwert); } catch (Exception e) { Console.WriteLine(e.Message); } finally { wb.Close(false, null, null); excel.Quit(); }
Ich habe mir der Einfachheit halber die Werte, die als Parameter für die Methode Worbook.Workbooks.Open benötigt werden, in eine kleine Hilfsklasse geschrieben. Die Werte habe ich von der Microsoft-Seite.
Weiterlesen…

C#-Projekt: Konfigurationsklasse

Heute habe ich nach knapp zweitägiger Arbeit meine Konfigurationsklasse fertiggestellt, mit der ich in Zukunft die Anwendungen meines C#-Projekts konfigurieren werde. Ich hatte da ja schonmal was erstellt, aber der Zugriff auf die Einstellungen war doch mehr als umständlich und es war auch keine Verschachtelung von Einstellungsbereichen möglich.

Daher habe ich nun eine Konfigurationsklasse geschrieben, die folgende Anforderungen abdeckt:

  • Die Standard-Konfiguration wird aus einer XML-Datei eingelesen
  • Es werden verschachtelte Einstellungen ermöglicht (mehrere Level)
  • Ein einfaches Formular zum Ändern der Einstellungen wird bereitgestellt
  • Nur die geänderten Konfigurationseinstellungen werden in einer separaten Datei gespeichert, der Rest wird aus der Standarddatei übernommen
  • Der Zugriff auf die Einstellungen erfolgt im Quelltext über eine einfache Notation der Form “Bereichname.Unterbereich.Einstellung”

Einen kleinen Screenshot der Oberfläche zum Ändern der Konfiguration gibt’s hier auch schonmal:

Screenshot des Formulars zum Ändern der Konfiguration

Download