100 Tage

Meine ersten 100 Tage in einer neuen Firma sind schon etwas länger her, aber ich möchte dies zum Anlass nehmen, ein paar Erfahrungen zu teilen. Mein Auftrag: Entwicklungsleitung. 20 Entwickler (C/Python/Ruby on Rails/Linux)

Nach einer Analyse der vorhandenen Entwicklungsprozesse kam ich zu dem Ergebnis, dass fachlich getrennte Teams dazu neigen gegeneinander zu arbeiten (der jeweils andere ist Schuld wenn etwas nicht funktioniert). Eine Arbeitsorganisation in den Teams maßgeblich allein vom Teamleiter abhängt und eine übergreifende Planung und Organisation nur funktionieren kann, wenn man streng hierarchisch organisiert ist.
Weiterlesen

omniorb und Visual Studio

omniORB ist ein beliebter ORB der in den meisten Linux Distributionen einfach installierbar ist. Unter Windows sieht es das eher schlecht aus. Windows Binaries werden entweder nicht mitgeliefert oder sind schlichtweg unpassend. Ich stand vor genau diesem Problem und habe omniORB auf Windows mit Visual Studio selbst gebaut.

Ich benutze im Folgenden:

Installation

Python 2

Wer bereits Python 2.6 oder 2.7 installiert hat, kann direkt zum nächsten Punkt springen.

Ansonsten, bitte Python 2.7.6 Windows X86-64 Installer herunterladen und installieren nach c:\Python27. (Installation bitte für alle)

Cygwin

Die Datei setup-x86_64.exe herunterladen und nach c:\cygwin installieren. Bei der Paketwauswahl würde ich bash, vim, make, diffutils und gcc gleich mitnehmen.

omniORB

Einfach das aktuelle omniORB Quellcode-only Paket herunterladen.
Das Entpacken kann man u.a. im cygwin machen (tar xjf omniORB-4.1.7.tar.bz2)

Vorbereiten und Bauen

Letzte Vorbereitungen

Man entpacke omniORB nach c:\dev, somit liegt er dann unter c:\dev\omniORB-4.1.7. Dort editiert man config\config.mk. Alle Zeilen mit platform müssen auskommentiert sein, also ein # als erstes Zeichen haben. Am Ende fügt man folgende Zeile ein platform = x86_win64_vs_10 (ohne Hashmark am Anfang). Dann kopiert man mk\platforms\x86_win32_vs_10.mk nach mk\platforms\x86_win64_vs_10.mk und öffnet mk\platforms\x86_win64_vs_10.mk im Editor.

  • Zeile 27 wird einkommentiert und muss nun lauten: PYTHON = /cygdrive/c/Python27/python
  • ab Zeile 32 muss in den Linkeroptionen -MACHINE:X64 hinzugefügt werden

Die Zeilen 27-54 sehen dann in etwa wie folgt aus:

PYTHON = /cygdrive/c/Python27/python


# Use the following set of flags to build and use multithreaded DLLs
#
MSVC_DLL_CXXNODEBUGFLAGS       = -MD -EHs -GS -GR -Zi -nologo
MSVC_DLL_CXXLINKNODEBUGOPTIONS = -nologo -manifest -DEBUG -MACHINE:X64
MSVC_DLL_CNODEBUGFLAGS         = -MD -GS -GR -Zi -nologo
MSVC_DLL_CLINKNODEBUGOPTIONS   = -nologo -manifest -DEBUG -MACHINE:X64
#
MSVC_DLL_CXXDEBUGFLAGS         = -MDd -EHs -RTC1 -GS -GR -Zi -nologo
MSVC_DLL_CXXLINKDEBUGOPTIONS   = -nologo -manifest -DEBUG  -MACHINE:X64
MSVC_DLL_CDEBUGFLAGS           = -MDd -RTC1 -GS -GR -Zd -Zi -nologo
MSVC_DLL_CLINKDEBUGOPTIONS     = -nologo -manifest -DEBUG  -MACHINE:X64
#
# Or
#
# Use the following set of flags to build and use multithread static libraries
#
MSVC_STATICLIB_CXXNODEBUGFLAGS       = -MT -EHs -GS -GR -Zi -nologo
MSVC_STATICLIB_CXXLINKNODEBUGOPTIONS = -nologo -manifest -DEBUG  -MACHINE:X64
MSVC_STATICLIB_CNODEBUGFLAGS         = -MT -GS -GR -Zi -nologo
MSVC_STATICLIB_CLINKNODEBUGOPTIONS   = -nologo -manifest -DEBUG  -MACHINE:X64

MSVC_STATICLIB_CXXDEBUGFLAGS         = -MTd -EHs -RTC1 -GS -GR -Zi -nologo
MSVC_STATICLIB_CXXLINKDEBUGOPTIONS   = -nologo -manifest -DEBUG  -MACHINE:X64
MSVC_STATICLIB_CDEBUGFLAGS           = -MTd -RTC1 -GS -GR -Zi -nologo
MSVC_STATICLIB_CLINKDEBUGOPTIONS     = -nologo -manifest -DEBUG -MACHINE:X64

Speichern.

Bauen

Öffne “Visual Studio x64 Win64 Command Prompt” über das Startmenü und
geben folgendes ein:

SET PATH=%PATH%;c:/cygwin/bin
cd c:\dev\omniORB-4.1.7\src
make export

Nun sollte das Bauen losgehen … das Bauen endete bei mit leider mit einem Fehler (LNK1123).

Fehler beheben

Folgende Dateien habe ich umbenannt (in cvtres.exe.disable)

c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\cvtres.exe
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe

Danach wurden auch die dlls beim Linken korrekt erzeugt.

Weiter geht’s

Nochmal das Bauen anwerfen und die Bibliotheken sind da :) – Siehe bin\x86_win32

Beispiele bauen

Gleich nach dem Bauen kann man die Beispiele bauen lassen:

cd examples
make export

Die Beispiele sind dann unter bin\x86_win32\ zu finden.

Beispiele ausführen

Lokales Echo

C:\dev\omniORB-4.1.7\cd bin\x86_win32\
C:\dev\omniORB-4.1.7\bin\x86_win32>eg1
I said, "Hello!".
The Echo object replied, "Hello!".

C:\dev\omniORB-4.1.7\bin\x86_win32>

Client-Server Echo

Wir benötigen ein zweites Kommandozeilen Fenster das auch auf C:\dev\omniORB-4.1.7\bin\x86_win32> zeigt.

Fenster 1:

C:\dev\omniORB-4.1.7\bin\x86_win32>eg2_impl.exe > ior.txt 

Fenster 2:
Hier benötigen wir den String der in die Datei ior.txt reingeschrieben wurde. Dazu öffnet man diese am Besten mit einem Editor und kopiert den Text.

C:\dev\omniORB-4.1.7\bin\x86_win32>eg2_clt.exe IOR:01000.... 

Die Ausgabe sieht dann in etwa so aus:

I said, "Hello!".
The Echo object replied, "Hello!".
I said, "Hello!".
The Echo object replied, "Hello!".
I said, "Hello!".
The Echo object replied, "Hello!".
I said, "Hello!".
The Echo object replied, "Hello!".
I said, "Hello!".
The Echo object replied, "Hello!".
I said, "Hello!".
The Echo object replied, "Hello!".
I said, "Hello!".
The Echo object replied, "Hello!".
I said, "Hello!".
The Echo object replied, "Hello!".
I said, "Hello!".
The Echo object replied, "Hello!".
I said, "Hello!".
The Echo object replied, "Hello!".

Fertig.
Viel Spaß!

Fragen / FAQ / Links

Für Fragen oder Anregungen bin ich jederzeit offen :)

Geholfen haben mir folgende Antworten auf Stackoverflow

Emails verschlüsseln mit Thunderbird unter Windows

Kurzmitteilung

Das schon in die Jahre gekommene Tutorial zur E-Mail-Verschlüsselung unter Windows musste mal aktualisiert werden. Im Zuge dessen, habe ich auch gleich eine permanente Adresse dafür geschaffen: http://blog.ch-becker.de/emails-verschluesseln-mit-thunderbird-unter-windows.

Clean Code Days 2013

Vom 10.-12.09. finden in Dresden die Clean Code Days statt. Mehr als 50 Vorträge werden dort rund um CCD gehalten. Am 12.09. ist Workshoptag, dort werden nochmals Themen vertieft und es bleibt Zeit für mehr Gespräche.
Ich werden selbst einen Vortrag zum Thema “Und plötzlich bleiben Kosten gleich” halten.

Also, bis bald in Dresden.

Siehe auch

Clean Code mit mbeddr

Ich hatte ja bereits von Markus Völter berichtet. Mittlerweile sind wir soweit, dass wir ein System mit mbeddr realisieren wollen. Inbesondere der abbildende Editor in Jetbrains MPS macht vielen möglich und erfordert aber auch Umdenken. Insbesondere wenn man vorher mit Eclipse gearbeitet hat und noch mehr, wenn Notepad++ der Editor der Wahl war ;)

Mit relativ wenig Aufwand (1Tag) kann man schon einiges an eigener DSL zusammenbauen und sinnvoll einsetzen. Alles wird geprüft. Verstöße gegen (nun via Code) festgelegte Regeln sind schlicht nicht machbar. Alles muss sofort richtig sein. Hört sich gruselig an? Ich finde nicht.
Ganz oft wird in der Softwareentwicklung nur ausprobiert und man ein Prototyp gebaut. Leider ist dann keine Zeit mehr und der Prototyp geht live. Dann kann man es auch gleich richtig machen. Finde ich. Findet Scrum auch. Clean Code wäre das im Übrigen auch.

Stay tuned.

Ach ja, der heise Developer Podcast 39 sei empfohlen. (Markus Völter zu Besuch)