Archiv für den Monat: Februar 2013

Werkzeugkasten 2012

In guter Tradition hier etwas verspätet mein Werkzeugkasten für 2012.

Ich stelle dir hier Werkzeuge und Programme vor, mit denen ich gut klarkomme. Evtl. stoße ich dich auf ein Programm, was du noch nicht kennst, was dich aber produktiver macht. Wenn ja freut mich das. Ein Hinweis aber: Ich bekomme von keinem der hier vorgestellten Anbieter irgendetwas für diese Liste. Diese Meinungen hier sind nicht gekauft, die sind durch Wochenlanges Ausprobieren, rumfummeln, reinfrickeln, usw. erarbeitet. Wollte das nur vorher klarstellen, auch wenn es sich manchmal wie ein Pressetext liest.

Die Schwerpunkte “auf Arbeit” dieses Jahr sind zweigeteilt: PHP und MySQL, sowie Continous-Interation und Frameworks

  • Zend Studio
    Wie beim letzten Jahr bleibt Zend Studio die IDE meiner Wahl. Auch harte Konkurrenz durch Netbeans und PHPStorm (in dieser Reihenfolge) konnte der High-End-IDE nichts anhaben. Sicher glänzt Netbeans durch viele kostenlose Features – privat setze ich nur auf Netbeans, weil mir das Studio da zu teuer ist –, aber die gewohnte “alles-geht”-Mentalität und das “out-of-the-box” Prinzip – vor allem im Bereich debuggen von PHP-Scripten – hat mich auf’s neue Überzeugt. PHPStorm habe ich getestet – dank einer geschenkten Lizenz sogar über einen längeren Zeitraum – allerdings konnte es sich nicht gegen das Zend Studio oder Netbeans behaupten; aber ich habe bestimmt nur die falschen Projekte und die falschen Ansprüche Zwinkerndes Smiley.
  • Zend Server (CE)
    Alles aus einem Installer – Apache und MySQL-Server – und alles Updatefähig per Mausklick – noch immer überzeugt mich das “easy-going” Prinzip vom Zend Server; wahrscheinlich, weil das Studio auch besser damit zusammenarbeitet oder weil ich einfach zu faul bin, mir jede Quelle selbst zu kompilieren. Basis meiner lokalen Entwicklungsumgebung bleibt der ZendServer (CE, oder heute free-edition).
  • SVN, Vercue, Subversion Edge
    Yep, die Versionskontrolle ist ebenfalls wieder dabei. Wir wurden professioneller, haben die selbst ge”apt-get”tetten Quellen durch eine fertige kostenlose Lösung auf Serverseite namens Subversion Edge ersetzt und sind alle zufrieden. Ich, weil ich nun von überall per Browser an die Repo-Verwaltung komme, meine Kollegen, weil die das nun auch können, mein Chef, weil alle gut drauf sind und es ihn (fast) nichts gekostet hat – ausser ein paar Nerven beim Serveradministrieren.
    Vercue verrichtet weiterhin seinen Dienst im Hintergrund und informiert uns Entwickler darüber, dass ein anderer mal wieder was neuen commited hat. Sehr nützlich!
  • Git und Stash
    Leider kamen wir aus Zeitgründen noch nicht dazu, git mehr Aufmerksamkeit wie das reine “teste mal an” zu geben, aber wir sind zuversichtlich, bald die ersten Projekte mit dem Verteilten Versionssystem zu beginnen. Auf Serverseite hilft uns dabei bestimmt Stash, welches ich persönlich mit meinen Privatprojekten als Bitbucket kenne und schätze.
  • FileZilla
    Ohne Worte, oder? Ein FTP-Tool hat jeder, FileZilla ist meins.
  • Outlook, MS Office
    Jajajajaja, ruhe im Saal Zwinkerndes Smiley Im Business kommst du ohne Office-Packet nicht weit und für mich als Windows-ianer ist Outlook einfach das beste Mailprogramm, wenn man damit auch etwas mehr wie “nur” E-Mail machen möchte.
  • Zend Toolbar
    Essentiell zum debuggen, single-click-install beim ZendServer, einfacher geht’s nicht mit der Zend Toolbar. Für den Chrome könnte Zend wirklich auch mal eine Toolbar mitliefern. Die ist nämlich nicht dabei, die muss man sich aus dem Forum downloaden. Geht aber problemlos und kostet höchstens 5 Minuten.
  • Chrome, IE, Firefox, rest
    Hier die erste gravierende Änderung zu 2011: Firefox ist nicht mehr der Primärbrowser. Zu lahm, zu schwer, zu … neee-lass-mal … Beruflich wie privat ist der Primäre Browser nun Chrome geworden, schnell, schmal, und alles sieht genauso aus wie im Fox. Ist ja schließlich 2013, da sollte das auch so sein, die Browserkriege sind beendet. BEENDET! Platz 2 ist der IE, Firefox ist noch da, aber nur zum Testen, Opera ist verschwunden, weil nicht gebraucht … gibt’s noch irgendwelche nennenswerten Browser? (Ich setz Safari mit Chrome gleich, weil fast gleiche Engine).
  • Web Developer Tools
    Ja, wichtig. Mal eben die Parameter einer Form ansehen? *Klick* Da sind Sie. Top Addon, auch für Chrome, leider nicht für IE, aber was ist nicht ist …
  • MySQL Studio
    Das MySQL Studio wird mir immer wichtiger. Nicht nur zur Analyse und Debuggen von komplexen Querys hervorragend geeignet, sondern auch, um zwei mysql-dump (jeweils knappe 300MB) miteinander zu vergleichen und die Frage zu beantworten: Hat sich was an der Tabellenstruktur getan? Wenn ja, was? Und das ganze bitte Grafisch! Und anschließend bitte eine “Alter”-SQL File exportieren. Genial!
  • Notepad2, Notepadd++
    Einen davon solltest du auch auf dem System haben, es lohnt sich Zwinkerndes Smiley “Mal eben” was kleines, oder “mal eben” ein .sql durchsuchen, dabei aber Syntax-Highlighing und Code-Folding haben wollen? Kein Problem, downloaden, installieren, Arbeitszeit sparen!
  • RegEx Editor
    Ein selten geniales und simples Tool, mit dem ich problemlos auch die komplexesten Regulären Ausrücke testen und optimieren kann. Hat mir schon so manche schlaflose Nacht erspart. Grade, wenn man sich manchmal nicht mehr ganz so sicher ist, ob der neue RegEx auch diesen und jenen Fall “covert” kann man es mit diesem Tool sehr schnell prüfen. Top und kostenlos!
  • Sysinternals und WSCC
    Keine Geheimnisse mehr in Windows. Profi-Tools für Profi-Fragen und mit dem WSCC sogar ein GUI-Updater.
  • KeePass
    Mein unersetzlicher Begleiter mit allen meinen Passwörtern. Wie sonst könnte ich mir alle Kundenpasswörter auf allen Seiten merken, ohne die Sicherheit zu gefährden? Ich brauche nur noch das (elend lange) Passwort für KeePass und gut ist. Ein STRG+ALT+A und ich bin im System des Kunden. Perfekt!
  • Screenpresso
    Hab noch nichts besseres gefunden und ich suche wirklich immer nach guten Tools. Auch das Sniping-Tool von Win7 kann leider nicht alles, was mit Screenpresso problemlos geht.
  • Launchy ist weg
    Yep, Launchy ist weg, ich mach nun alles via Taskbar oder der Suche von Win7.
  • Spotify
    iTunes ist weg, Spotify ist da. iTunes war so “nett”, mir alle meine Songs neu zu “taggen”, was zu einem heillosen Chaos führte. Bei Spotify habe ich das Problem nicht und zusätzlich kann ich in neue Alben länger reinhören wie z.B. bei Amazon und mir ein Bild davon machen, ob ich es kaufe oder nicht. So manchen Album wäre nicht in meiner Sammlung ohne diese Funkttion. Leider bin ich nur “free” Member und muss Werbung ertragen, aber solange kein Justin Bieber dudelt ist alles in Ordnung Zwinkerndes Smiley
  • Social Networks
    Ja, die Produktivitätskiller schlechthin, die bösen, bösen Social-Netwörks wie Twitter, Google+, Facebook oder wie-auch-immer. Letztes mal hatte ich dafür TweetDeck, dieses mal hatte ich schlicht keine Lust. Keine Lust, jede Stunde Twitter zu checken, keinen Bock, Stundenlang auf G+ rumzuklicken, Facebook auch nur zwei Minuten daddeln und wieder weg. Ich brauche das nicht, und daher brauche ich kein Tool mehr dafür.
    Nicht falsch verstehen, ich mache immer noch mit, aber mehr passiv, ich lese mit, kommentiere kaum, schreibe so gut wie nichts (außer neue Blog Posts natürlich) und Twitter prüfe ich zweimal am Tag per Windows Phone – da fällt mir ein, ein Tool kommt in die Werkzeugkiste: Peregrine, so heißt der Twitter-Client auf meinem WP7. Das war’s schon von wegen Social … kleiner Nachtrag: Die Newsfindung erledige ich hauptsächlich per Twitter, direkt dahinter kommen die klassischen RSS-Feeds einiger Newsseiten, die ich direkt in Outlook lese, also auch hier kein Tool für RSS.
  • Windows7
    Bin immer noch Gehirngewaschen, bin immer noch bei den Proprietären Abzockern aus Redmond, immer noch beim “Klicki-Bunti” Fenster, immer noch bei der Virenschleuder, bei der Malware-Verbreitungsplattform, immer noch beim bösen, bösen Windows, bei dem wir alle nicht mehr sein wollen und auch nicht sein dürfen.
    Weißt du was: Bin ich doch!
    Und ich bin zufrieden!
    Weil alles geht, so wie es soll!
    Ja, ich kenne Linux, hab LinuxMint14 installiert und obwohl diese Distri wirklich toll aussieht und sich selbst für mich gut “anfühlt” … es bleibt leider dabei, dass ein falscher “apt-get” mal wieder meine ganze X-Oberfläche zerstört hat und ich – als Pinguin-Laie – das nicht mehr hinbekomme. Ich hätte echt Angst, wenn das mein Produktivsystem wäre.
  • PHPUnit, Selenium, LiveTest, …
    Qualitätssicherungstools stehen bei mir dieses Jahr ganz weit oben in der Gunst. Bei neuen Projekten versuche ich mich an Test-Driven-Development, was zeitlich bedingt nicht immer funktioniert. Aber der Sinn und Zweck ist verstanden und Workarounds für ein schnelles bereitstellen in den Projekten sind ebenfalls erarbeitet und funktionieren gut.
  • Codesniffer, Messdetector, …
    Und auch diese Tools dürfen nicht fehlen. Ein großer kritischer Systemausfall beginnt mit kleinen Schludereien auf Code-Ebene. Diese kleinen Helfer erinnern mich daran, wo ich zu schnell arbeite und besser auf die Bremse drücken sollte.
  • Jenkins, Continous-Development
    Und da ich – wie alle Entwickler – ja zur Gattung der Faultiere gehöre, was sich wiederholende Arbeiten gehört, macht mein persönlicher Jenkins alle QA-Sachen für mich automatisiert … nun ja, zumindest für die ganz neuen Projekte, die alten Legacy-Projekte dafür in Angriff zu nehmen ist … schwierig. Weniger vom fachlichen Standpunkt aus, mehr vom Zeitlichen Standpunkt. Aber wir arbeiten dran Zwinkerndes Smiley.
    Sehr cool ist auch, dass sich Jenkins ins Zend Studio integriert und mich die Fehlermeldungen dort per Klick direkt an die entsprechende Codestelle führen. Perfekt!
  • Zend Framework, Backend-Framework
    Mein persönliches Framework für PHP. Ich habe Symfony ausprobiert, ich arbeite bei manch Kundenprojekt mit CodeIgniter, ich habe PIMF ausprobiert, sogar FLOW habe ich mir angesehen. Steckengeblieben bin ich beim Zend Framework. Klar, Zend Studio, Zend Server, da liegt das nahe, aber die ganze Art und Weise des MVC liegt mir und ich komme intuitiv zurecht. Für mich heißt das, Zend Framework und ich liegen auf einer Wellenlänge und das heißt, dass ich damit Spaß habe und Produktiv arbeiten kann … und darauf kommt es doch an.
    ZF setze ich bei neuen Sachen wenn es geht als „Full-Stack” ein, bei einigen Legacy-Projekten läuft es als Library für ein paar Aufgaben und wird per Autoloader eingebunden. Praktisch, wenn ein Framework beides kann.
    Derzeit bin ich noch in Version 1 unterwegs, der Lernweg zur Version 2 ist schon geplant, auch vor Ralf’s Buch Zwinkerndes Smiley
  • Bootstrap, Frontend-Framework
    Wenn das Zend Framework mein Backend-Framework der Wahl ist, dann wurde Twitter Bootstrap mein Frontend-Framework, mit dem ich bestens zurecht komme. Habe mir auch HTML5Boilerplate angesehen und 960 Grid System, auch hierbei kann ich aber nur eines nehmen, am besten komme ich mit Twitters Gedanken klar.
  • Zend Certified Engineer (ZCE) PHP
    Ne, ich bin’s noch nicht, aber der Voucher liegt bereit und ich lerne fleißig. Dabei bleiben leider manche anderen Sachen liegen und ich experimentiere nicht so viel mit neuen Frameworks rum. Bald…

Und da gibt es nun auch noch den Privaten Schwerpunkt, der liegt neben PHP und allen oben genannten Sachen derzeit bei C#.

  • VisualStudio (Express)
    Klar, wer C# macht, der sollte auch Microsofts IDE benutzen. Wer schon mal C++ programmiert hat (so wie ich einst), der weiß einfach, dass VS die beste IDE der Welt ist, wenn man zu den “echten” Programmiersprachen kommt. Das Microsoft die IDE in einer benutzbaren Version kostenlos hergibt ist umso erfreulicher.
    Schade, das Microsoft (noch) kein VisualStudio für PHP geplant hat … aber die Hoffnung stirbt zuletzt Zwinkerndes Smiley

Ich denke, das waren die wichtigsten Sachen, die kleineren Tools und Helfer erwähne ich nicht, das würde zu groß werden. Trotzdem wurde die Liste ja schon recht lang.

Wie sieht deine Liste aus?

Unit Testing in C# mit Visual Studio 2010 Express und NUnit

Privat erstelle ich meine Projekte seit neuestem mit C#. Da ich ein Windows Phone mein eigen nenne und da irgendwann auch mal gern eine App für schreiben möchte, dachte ich, es wäre ganz gut, sich da mal wieder auf den neuesten Stand zu bringen und wieder aktiv in dieser Sprache zu programmieren. Denn nur, wenn du C# codest, lernst du C#. Gut und schön und mein aktives Projekt komplett neu in C# geschrieben. Es ist zwar noch nicht fertig, aber schon überkommt mich ein beklemmendes Gefühl. Es fehlt was. Nur was?

Nach kurzem Nachdenken wird mir klar: Ein neues PHP-Projekt würde ich ganz anders starten. Ich würde Tests schreiben. Na klar, meinem C#-Projekt fehlt das Unit Testing.

Nach kurzer Suche wird mir ganz anders: C# zu unit-testen geht zwar, aber nicht mit Visual C# Express 2010 … aber genau diese kostenlose IDE setze ich doch ein! Aber wie ich immer so schön zu sagen pflege: Geht nicht, gibt’s nicht (kost‘ nur mehr #hehe).

Nach ein paar Stunden rumfummeln und vielen anderen Einträgen folgt hier meine Schritt-für-Schritt anleitung zum Unit Testen mit C# mit Visual C# Express 2010 mit Mausklick (aber ohne Sahne 😉 ):

  1. Visual C# Express 2010 muss installiert sein, idealerweise hast du auch schon ein Projekt.
  2. Du lädst dir eine aktuelle Version von NUnit von der NUnit Homepage www.nunit.org runter.
  3. In deiner Projektmappe legst du nun ein neues leeres C# Projekt an (ProjektnameTest zum Beispiel)
  4. Nun im Menü unter „Extras“ -> „Einstellungen“ die Option „Experteneinstellungen“ wählen
  5. Damit wird dann der Menüeintrag „Externe Tools“ (unter „Extras“) überhaupt sichtbar.
  6. Dort dann NUnit wie folgt eintragen:
    NUnit als externes Tool in Visual C#
    Schlecht sichtbar, aber ich verlinke auf nunit-x86.exe, sonst funktioniert das bei mir nicht, da ich ein 64-Bit System habe.

So, euer System ist bereit, unter „Extras“ habt ihr nun einen neuen Menüpunkt „NUnit“, der euch das aktuelle Projekt testet, also euer Testprojekt. Achte darauf, dass du vorher auch immer das Testprojekt neu erstellen läßt, da NUnit immer die Assembly und die exe zu rate zieht und wenn die nicht auf dem aktuellem Stand ist kommen verfälschte Ergebnisse heraus.

Bei den Tests ist es wichtig, die aus PHP bekannten „Testsuiten“ mit dem Attribut [TestFixure] im (Test-)Code zu kennzeichnen, die Tests selbst als [Test], sonst funktioniert das Ganze nicht und NUnit meldet, es gäbe keine Tests zum Ausführen!

Für den Start hier mal ein kleines Beispiel für dich. Sicherlich stimmen noch nicht alle Namen und Bezeichner und die Test machen auch noch nicht viel Sinn, aber es soll ja mehr als eine Art „Quickstart“ gemeint sein, ein Grundgerüst zum Verständnis:

namespace apps.presnac
{
  using NUnit.Framework;

  [TestFixture]
  public class KeysTest
  {
    [Test]
    public void testingFileDefs()
    {
      FileDefinitions clsFiledefs = new FileDefinitions();
      FileDefinition[] filedefs = clsFiledefs.getFileDefinitions();

      Assert.AreEqual(filedefs.Length, 57);
    }

    [Test]
    public void testWillFail()
    {
      Assert.AreEqual(1, 2);
    }
  }
}

namespace UnitTesting
{
  public class deCHKTesting
  {
    public static void Main()
    {
      apps.presnac.KeysTest testingKeys = new apps.presnac.KeysTest();
      testingKeys.testingFileDefs();
      testingKeys.testWillFail();
    }
  }
}

Ja, in diesem Beispiel geht es um mein Grundgerüst zu meinem Projekt deCHK, was bald als neue Version komplett neu in C# geschrieben erscheinen wird.

Den unteren Block, die Klasse deCHKTesting mit der main()-Methode brauchst du, damit dein Projekt überhaupt eine ausführbare Datei erstellen kann, die dann von NUnit analysiert und zum testen herangezogen werden kann.

Und anschließend ein Blick auf die Testergebnisse:

nunit-testergebnisse

Also, Unit-testing in C# mit Visual Studio Express ist möglich, man muss nur 2 kleine Kniffe kennen (wie komme ich ans Tools Menü und die beiden Attribute im Code, um Tests zu markieren) und schon steht den kontrollierten Funktionssicherheitsnachweisen nichts mehr im Wege 😉 .

Was ich sehr unschön finde ist die Tatsache, dass es in Visual Studio nicht möglich ist, eine Standardvorgehensweise wie Unit Tests direkt in IDE zu integrieren. Vor allem da NUnit hier der Marktführer für .Net ist fällt es mir schwer, meine Tests nicht direkt in meiner IDE zu sehen und per Doppelklick auf einen aufgetretenen Fehler direkt zum zuständigen Code zu gelangen. Hier sollte Microsoft nachbessern, damit künftige C#-Entwickler auch in den Genuß von „Test-Driven-Development“ direkt in der VS-IDE kommen.

Ansonsten wünsche ich dir noch viel Erfolg beim Unit-Testen deines C#-Codes.