Martin Lantzsch
Software Entwickler
3. Dezember 2011

Morse Beeper

3. Dezember 2011 - Geschrieben von Martin - Ein Kommentar

Eben habe ich ein wenig mit der Console.Beep Funktion von C# gespielt und folgendes ist dabei rausgekommen:

Man kann Text ins Feld eingeben, welcher nach einem klick auf „Übersetzten“ in Morse Code übersetzt wird. Alternativ kann über die 3 Knöpfe „Kurz“, „Lang“ und „Pause“ selbst etwas zusammen gemorst werden. Bisher werden nur Buchstaben unterstützt, falls jemand will kann aber gern auch noch Zahlen implementieren.

Hier kann die .exe heruntergeladen werden: MorseBeeper.exe

Aber wie gesagt, nur eine Spielerei von mir, ich übernehme keine Garantie dafür, das der produzierte Morse Code fehlerfrei ist!

24. November 2011

Kein Kommentar

24. November 2011 - Geschrieben von Martin - 4 Kommentare

Anfänger wird immer und überall eingebleut „Kommentiert alles“, „Schreibt viele Kommentare, damit auch andere euren Code verstehen“.

Sorry, aber das ist Schwachsinn! Wenn mein Code schon so schlimm ist, das ich kommentiere muss was ich mache, sollte ich lieber zurück an ans Papier und alles noch mal überdenken. Code kann sprechen. Code kann sich selbst erklären. Wer sagt denn, das ich „kryptische“ Funktionsnamen vergeben oder lauter Abkürzungen schreiben muss? Am Ende holt es mich doch eh wieder ein, denn

  • Code lesen ist ansträngender
  • Klassenexplorer nahezu sinnlos
  • ständig am Suchen der entsprechenden Funktionen und Methoden um nachzuvollziehen was gemacht wird
  • Einarbeiten in den Code nur möglich wenn man alle Kommentare liest und versteht!

Warum also

// erzeuge neues Fenster Objekt aus dem System Objekt s
$win = $s->cwin();

da schreibt man doch gescheiter

$window = $system->createNewWindow();

Wer nun noch sagt aber der Kommentar ist auf Deutsch den versteh ich wenigstens, dem kann ich nur sagen – falscher Job ;-)

Das ganze soll aber nicht heißen, das man gar nichts mehr Kommentieren sollte. Stellen, die etwas Tricky oder vielleicht noch nicht ganz ausgereift sind, können gern mit einem kurzen und knackigen Kommentar versehen werden, der das Anliegen gut rüberbringt.

13. November 2011

Hobby Browsergame Entwicklung – noch sinnvoll?

13. November 2011 - Geschrieben von Martin - 7 Kommentare

Wie die meisten hier sicher wissen entwickle ich mit Elan Hobbymäßig Browsergames und bin auch ziemlich aktiv in der Szene. Zumindest war ich das bisher immer. In letzter Zeit hingegen frage ich mich immer öfter ob es das überhaupt „bringt“. Ich meine es gibt so viele kommerzielle Browsergame Firmen – gut, ich kenne zwei an der Zahl – die ein ganzes Großraumbüro voller Entwickler haben, die Tag ein, Tag aus nichts anderes machen als Browsergames zu programmieren, Designer die Bilder einer Qualität machen die mich selbst mit den Ohren schnackeln lässt.

Die Browsergame Zielgruppe von heute (meiner Erfahrung nach Kinder zwischen 10 und 16) fahren voll auf so was ab. Spielinhalt der so primitiv wie nur irgendwie möglich sein kann, bombasitische realitätsfremde Bilder und Integration zu Fratzenbuch und Co mit an Bord.

Bei uns Hobby Entwicklern sieht es ganz anders aus. Wir Schustern an unseren Spielen ein paar Stunden die Woche, malen Bilder mit den selben Händen aus denen auch vorher der Code entsprang und wir betreiben Linux Server die wir uns gerade so von unserem Einkommen leisten können.

Doch wir stampfen Spiele aus dem Boden, die Spaß machen – vielleicht sind sie nicht so schön anzusehen, tut uns leid, wir sind nun mal keine Grafiker doch wir haben eine Idee, eine Vision, ein Ziel. Und das lautet nicht so viel Kohle mit den Nutzern wie nur irgendwie möglich zu machen, sondern ein Spiel an den Mann zu bringen das sich lohnt zu Spielen.

Aus diesem Grund, JA es lohnt sich Hobbymäßig Browsergames zu entwickeln. Einerseits hat die Welt dann wieder Spiele die sich lohnen zu spielen, andererseits lernt man dabei sehr viel, da dieses „Geschäft“ sehr Facettenreich ist.

9. November 2011

Joomla eigenes Basis Template – Teil 1

9. November 2011 - Geschrieben von Martin - Ein Kommentar

In der folgenden Serie werde ich euch anhand eines Praxisbeispiels zeigen wie man sich sein eigenes „Basis“ Template für Joomla schmiedet. Dieses Template kann dann später als Grundlage für eigene Entwicklungen verwendet werden. Meine verwendete Joomla Version ist übrigens 1.5, in wie fern man das auf andere Versionen abwälzen kann, weiß ich nicht.

Die Joomla Template Struktur
Die Templates werden bei Joomla – wie sollte es auch anders sein – im Unterordner „templates“ des root Verzeichnisses abgelegt. Jedes Template bekommt seinen eigenen Ordner in den später alle Stylesheets, JavaScript Dateien, Bilder und natürlich die Views kommen. Als Ausgangspunkt legen wir uns folgende Ordner an:

- templates
-- basis_template
--- css
--- images

Natürlich nützen uns die Ordner allein noch nichts, deshalb kommen hierzu noch folgende Dateien:

- templates
-- basis_template
--- css
---- template.css
--- images
-- index.php
-- templateDetails.xml

In den CSS Ordner kommt das Stylesheet namens „template.css“, in das Root Verzeichnis packen wir die „index.php“, welche später das HTML Gerüst beinhält und die „templateDetails.xml“, die Joomla benötigt um mit dem Template arbeiten zu können. Der images Ordner bleibt erst mal leer.

Das HTML Grundgerüst
Ich gehe jetzt einfach mal davon aus, das meine Leser ein Grundverständnis von HTML mitbringen, wenn nicht, solltet ihr euch erst mal in dessen Thematik einarbeiten.

Wir füllen nun die „index.php“ mit folgendem Inhalt:

<?php defined( '_JEXEC' ) or die( 'Restricted access' );?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >
    <head>
        <jdoc:include type="head" />
        <link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/system/css/system.css" type="text/css" />
        <link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/system/css/general.css" type="text/css" />
        <link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/template.css" type="text/css" />
    </head>
    <body>
        <div id="wrapper">
            <div id="header">
                <h1><?php $conf =& JFactory::getConfig(); echo $conf->getValue('config.sitename'); ?></h1>
            </div>
            <div id="sidebar">
                <jdoc:include type="modules" name="sidebar" />
            </div>
            <div id="content">
                <jdoc:include type="component" />
            </div>
            <div id="footer">
                <jdoc:include type="modules" name="footer" />
            </div>
        </div>
    </body>
</html>

Ist euch das zu schnell gegangen? Gut, dann noch mal langsam.

<?php defined( '_JEXEC' ) or die( 'Restricted access' );?>

Dieses PHP Konstrukt verbietet den direkten Zugriff auf das „pure“ Template, indem es die Ausführung abbricht, wenn die Konstante „_JSEXEC“ nicht definiert ist.

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >

Hier definieren wir den HTML Tag und geben ihm die Systemsprache mit, bzw. die Sprache, die der User im Joomla gerade eingestellt hat.

<jdoc:include type="head" />

Dieser Pseudo HTML Tag der Joomla Template Engine bindet alle Geschichten wie title Tag, JS Files, etc. automatisch ein.

<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/system/css/system.css" type="text/css" />

Hier binden wir das System Stylesheet ein. Besonders ist der PHP Teil „$this->baseurl“, hier wird die URL zum aktuellen Joomla ausgegeben, gut zu wissen wenn man später selbst noch etwas einbinden möchte.

<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/template.css" type="text/css" />

Hier wird das Herzstück unseres Templates geladen. Das Stylesheet. Eigentlich wie oben, nur wird hier noch der Name des Templates verwendet um den richtigen Ordner zu finden „echo $this->template“

<jdoc:include type="modules" name="header" />

Der altbekannte Pseudo Tag mit anderen Attributen. Hier Laden wir den typ modules mit dem Name header. Das heißt, wir laden alle Module die im System an der Position „header“ Registriert sind.

<jdoc:include type="component" />

Hier rufen wir die Inhaltskomponente der aktuellen Seite auf. Also z.B. „com_content“, „com_contacts“, etc..

Was wir bisher haben
Jetzt haben wir ein eigentlich bereits Funktionsfähiges Template. Doch es fehlt noch die „tempalteDetails.xml“, die mit einer manifest.xml zu vergleichen ist. Hier werden alle verwendeten Dateien aufgeführt, im Template verwendete Positionen registriert, Authorangaben gespeichert und noch ein paar Schmankerl mehr. Doch das machen wir im nächsten Teil, der im Anschluss erscheint.

Joomla eigenes Basis Template – Teil 2

7. September 2011

Android SDK unter Windows Installieren

7. September 2011 - Geschrieben von Martin - 2 Kommentare

Wer unter Windows für Android entwickeln will muss ein paar Dinge beachten, um das SDK zum laufen zu bekommen.

  • Eclipse Classic installieren
  • Android SDK Installieren (und benötigte Pakete herunterladen)
  • Eclipse Android Developer Plugin installieren
    Falls es zu Abhängigkeitsfehlern kommt das Eclipse Helios Repo via Window -> Preferences -> Install/Update -> Available Software Sites hinzufügen
    http://download.eclipse.org/releases/helios/

  • Unter Window -> Preferences -> Android folgende SDK Location verwenden
    C:\PROGRA~1\Android\android-sdk

    Unter x64 Windows diesen hier

    C:\PROGRA~2\Android\android-sdk

    Denn der Pfad zum SDK darf keine Leerzeichen enthalten, ansonsten funktioniert der Android Emulator nicht.

21. Januar 2011

Netbeans – immer für eine Überraschung gut

21. Januar 2011 - Geschrieben von Martin - 7 Kommentare


Netbeans überrascht mich doch immer wieder, eben habe ich ein Template entworfen, welches ich in selben Zug auch gleich mit Classes gefüllt habe und zack zeigt mir Netbeans diese im CSS Editor. Sogar mit Hervorhebung, wenn sie bereits niedergeschrieben wurden.

23. Dezember 2010

Chrome von Surfern für Surfer

23. Dezember 2010 - Geschrieben von Martin - 2 Kommentare

Google Chrome wird zwar oft als Datenkrake niedergemacht, ist meiner Meinung nach aber einer der besten Webbrowser. Er bietet alle Features, die man zum Surfen im Web braucht und nicht nur das, alles ist an der richtigen Stelle. Es gibt keine überladenen Menüs, keine Platzverwenderischen Favoriten Leisten… Nichts, und das ist gerade das tolle an Chrome. Man könnte fast meinen der Browser passt sich an einen an, so einfach und schnell geht das surfen mit ihm von der Hand. Fast schon unheimlich.


Erweiterungen? Gibt es tausende, aber ich mache nur von wenigen Gebrauch. Und das beste? Ganz klar, sie fügen sich schön neben dem Menü ein und so geht kein Wertvoller Platz verloren. Klar, das viele Erweiterungen nicht so toll aussehen nervt mich schon ein wenig aber dafür ist es ganz leicht neue zu erstellen, da es sich nur um JavaScript handelt :)


Eigentlich gibt es zu Chrome nicht viel zu sagen, denn wie schon dargelegt es gibt nicht sonderlich viel. Wobei, die Entwickler Tools möchte ich nicht unerwähnt lassen. Vom Element Browser, über Ladezeit Anzeigen bis hin zum JavaScript Debugger alles an Board. Selbst in einem neuen Fenster kann man ihn öffnen, spätestens jetzt sollten Dual oder sogar Tripple Head Besitzer Hellhörig werden.

Da bliebe nur noch die Sache mit der Datenkrake, was will man machen und Hey! Wie viele von euch sind mit eingeloggtem Facebook Account unterwegs ;-) (Für alle Unwissenden: Facebook loggt die von euch besuchten Seiten mit, die Facebook Connect einsetzen).

Ach übrigens, frohes und gesegnetes Fest euch allen.

9. Dezember 2010

SVN Repo bei Commit nach htdocs kopieren

9. Dezember 2010 - Geschrieben von Martin - Keine Kommentare

Oft arbeitet man im Team an einer Webanwendung und würde gerne Testern den aktuellen Stand der Entwicklung geben. Um das nicht allzu umständlich zu machen, ist es hilfreich immer das aktuelle SVN Repo im WebRoot des Server abzulegen.

Hier kommt uns die Hook Schnittstelle von Subversion entgegen, welche erlaubt an bestimmten Events eigene Shell Scripte ausführen kann (wie z.B. nach dem Commiten).

Zu finden sind diese unter

/[SVNREPO]/hooks/

Wir öffnen nun den Hook, der nach dem Commiten ausgeführt wird:

cd /[SVNREPO]/hooks/
nano post-commit.tmpl

in dieser Datei bewegen wir uns nun mit dem Zeiger ganz runter und fügen folgenden Code ein:

svn checkout file:///[SVNREPO]/[DIRNAME] /var/www/[DIRNAME]
cd /var/www/[DIRNAME]
svn update

also z.B.

svn checkout file:///svnrepos/resigame /var/www/resigame
cd /var/www/resigame
svn update

Nun speichern wir es mittels [STRG] + [O] ab und benennen die Datei um (damit sie vom SVN erkannt wird):

cp post-commit.tmpl post-commit

und nun noch ausführbar machen (ist ja ein Shell Script ;))

chmod +x post-commit