phpcode

Doxygen: Dokumentation aus Quellcode generieren

Heute habe ich mir bei der Arbeit das Programm “Doxygen” angeschaut, welches wir nun nach guten Ergebnissen, wahrscheinlich immer nutzen werden. Doch was ist Doxygen?
Doxygen ist ein Programm welches in C++ geschrieben ist und lokal ausgeführt werden kann, um aus Quellcode Dokumentationen zu erstellen. Das Programm scannt die Dateien welche sich in einem ausgewählten Verzeichnis befinden und listet die Funktionen (etc.) auf und liest die Kommentare zu den Funktionen, welche z.B. eine Beschreibung, einen Autor oder andere beinhalten.

Vor allem für grössere Projekte ist dieses Programm meiner Meinung nach sowieso Pflicht, um die Übersicht auf Funktionen zu behalten und auch schnell nachschlagen zu können, vor allem halt auch als nicht beteiligter oder “Neuling” im Projekt.

Doxygen generiert uns also mit dem “Doxywizard” z.B. mehrere HTML-Dateien, welche wir dann gemütlich auf z.B. unseren Web-Server hochladen können.

Doch Doxygen kann nicht nur für PHP Projekte verwendet werden, nein, Doxygen verwendet viele verschiedene Programmiersprachen. Die aktuell Unterstützten Sprachen sind folgende: C++, C, Java, Objective-C, Python, IDL (Corba and Microsoft flavors), Fortran, VHDL, PHP und C#.

Um Doxygen richtig verwenden zu können, muss der eigene Code Kommentiert werden (am besten in englisch). Dies sieht dann z.B. so aus:

/**
* Beschreibung
*
* @author Max Mustermann
* @since Version 1.0
*
* @param string $string1 beschreibung
* @param bool $string2 beschreibung
* @return string beschreibung
*/
function something($string1, $string2) {
  return $stringX
}

All das wird dann von Doxygen gelesen und so ins Resultat, also die Dokumentation eingefügt.

Hier könnt ihr euch Doxygen herunterladen.

TYPO3 und PHPUnit: Code Testen (+ Hello World)

Das automatisierte Testen von Code wird immer wie beliebter. Deshalb habe ich diese Woche bei 4eyes die Aufgabe erhalten, mir das ganze mal anzusehen und gleich Tests in TYPO3 zu schreiben um eine Extension zu testen.

Anders als mit Selenium, wird hier jedoch direkt der (PHP) Code getestet, also bevor schon die fertigen Resultate da sind, testet man was zwischen Start und ende passiert. So kann man mit PHPUnit z.B. testen ob eine bestimmte Funktion im Code ein bestimmtes Resultat zurück liefert.

Nachdem ich die Funktionsweise dann auch verstanden habe und das Testen möglich war (nach ein paar Startschwierigkeiten), schrieb ich zuerst mal einen kleinen Hello World Test. Doch bevor wir zum Test kommen, zeige ich euch wie ihr alles richtig einrichtet.

Installation

Die Extension PHPUnit (extkey: phpunit) herunterladen und installieren. Hier findet ihr die Extension auf Typo3.org, klick.

Nach der Installation erstellt ihr in einer eurer Extensions einen Ordner namens “Tests”. Der Pfad wäre also:

typo3conf/ext/deineExtension/Tests

Nun erstellt ihr im gerade erstellten Ordner ein neues PHP File mit folgendem Namensschema:

tx-extKey_HelloWorld_testcase.php

Wichtig ist hierbei eigentlich nur das “_testcase” am ende, da dies PHPUnit sagt, dass es sich hier im ein Test File handelt (PHPUnit scannt alle ext Verzeichnise automatisch).

Nun füllen wir das PHP File mit dem standardmässig benötigten Code:

<?php
require_once 'PHPUnit/Framework.php';

class tx_extKey_HelloWorld_testcase extends tx_phpunit_testcase {

}

?>

Lösung: RTE lädt nach Update auf TYPO3 4.4 nicht mehr

Als ich kürzlich die TYPO3 Installation eines Kunden von TYPO3 4.3.3 auf 4.4.1 geupdated habe, merkte ich beim standardmässigen Testen der Seite, dass der RTE (Rich-Text Editor) im Backend nicht mehr geladen wurde.

Nach einer kurzen Google suche fand ich auch schon die Ursache dieses eigentlich kleinen Problems. Und zwar tritt dieser Fehler auf, wenn die Extension ‘date2calendar‘ installiert ist.

Der RTE wurde nämlich in der neuen Version 4.4 komplett überarbeitet und mit ExtJS umgesetzt. Ausserdem wird die genannte Extension gar nicht mehr benötigt, da sie schon im voraus im Core eingebaut ist.

Extension deinstallieren und der RTE funktioniert wieder! :)

Selenium und https (SSL)

Normalerweise wird einer Unbekannten SSL Verbindung nicht getraut, weshalb man beim Testen mit phpunit an dieser Stelle scheitert. Um das ganze nun zum laufen zu bringen, benötigen wir ein neues Firefox Profil, mit welchem wir mit Selenium Testen. Standardmässig erstellt Selenium ein Temporäres Firefox Profil, dies klappt jedoch nicht da der Verbindung wie gesagt nicht vertraut wird.

Mit einem neuen Profil kann man nun zuerst Firefox mit diesem Profil starten, die Seite aufrufen und der Verbindung trauen. Diese Einstellung wird dann im Firefox Profil gespeichert.

Und so gehts:
1. Alle Firefox Fenster schliessen.

2. Firefox mit der folgenden Kommandozeile Ausführen (Ausführen: Windows Taste + R):
firefox.exe -ProfileManager -no-remote

3. Ein neues Profil erstellen (und haken setzen bei “Nicht Fragen beim Starten”, ansonsten bleibt Selenium hängen).
4. Jetzt durch das Profil Setup gehen und alles Einrichten. (Das Profil am besten auf C:\Selenium oder so verlagern, kurze Pfade sind empfehlenswert!)
5. Ist das Profil eingerichtet, startet man Firefox ganz normal und geht auf seine mit SSL geschützte Seite. Dort Vertraut man nun der SSL Verbindung. Danach kann Firefox geschlossen werden.

6. In der BATCH-Datei, welche wir zum Starten benötigen nun die Zeilen so bearbeiten:

cd C:\Selenium\selenium-server-1.0.3 (Pfad zu Selenium Server)
#firefox
java -jar selenium-server.jar -firefoxProfileTemplate c:\selenium (Pfad zum Firefox Profil)

Nun startet Selenium Firefox mit dem soeben erstellen Profil, anstatt schnell ein eigenes einzurichten.

Das wars!

Java RPG: Dragonjia

In der Schule haben wir vor kurzem eine Arbeit Abgeschlossen, bei welcher jeder Schüler sein eigenes Java Projekt Programmieren musste. Dies konnte entweder ein Spiel sein oder ein Tool wie z.B. ein Taschenrechner. Das ganze musste jedoch mindestens 250 Zeilen Code haben, was ich mit meinen fast 500 Zeilen locker erreichte. Neben dieser Anforderung gab es natürlich noch die Anforderung Sachen zu Verwenden die wir im ersten Jahr nun gelernt hatten, sowie musste man seinen Quellcode 100%ig verstehen, was mir auch keine Mühe machte da ich alles komplett selber geschrieben habe.

Für mein Spiel gab es schlussendlich eine 5.5, also gar nicht mal schlecht ;) Ich habe mich aber entschieden wenn ich mal Zeit und Lust habe noch etwas weiter am Spiel zu Programmieren, da ich noch mehr draus machen möchte, denn leider reichte die Zeit bis zum Abgabetermin nicht aus etwas grösseres zu machen, da meine Idee schon sehr Umfangreich war.

Das Spiel werde ich übrigens noch nicht veröffentlichen, da es noch lange nicht Fertig ist und wahrscheinlich den meisten kaum Spass machen würde ;)

Wie auch immer… hier werde ich euch natürlich, falls es neuigkeiten gibt, davon Berichten. Sobald der Zeitpunkt gekommen ist werde ich es dann auch mal veröffentlichen.

Noch eine Anmerkung: Das Spiel ist ein Text basiertes Spiel, also nichts mit 3D und so :P

Tabellen oder divs?

Wer sich ein Design bzw. ein Layout für eine Webseite zusammenbasteln will, der hat entweder die Möglichkeit das ganze professionell und schön, also mit divs, oder schnell und einfach, mit Tabellen zu erstellen.
Man kann darüber streiten, jedoch gewinnen für mich eindeutig die divs. Das ganze hat auch seine Gründe, z.B. sind divs viel flexibler und man kann auch mehr damit machen.

Doch warum wählen viele Leute ein Tabellen Layout?
Da ich selbst nie mit Tabellen gearbeitet hatte und ich mit Tabellen ehrlich gesagt nicht so vertraut bin, wollte ich auch nie umsteigen. Jedoch für Leute die weniger Erfahrung in HTML und Co. haben, ist ein Tabellen Layout recht simpel, da man dies theoretisch auch schnell im WYSIWYG-Editor basteln kann.

Der Vorteil von divs?
Mit einem div hat man unzählige Möglichkeiten und nichts ist im Vorhinein definiert. Jedoch braucht man wie gesagt mit dem Umgang von divs etwas mehr Erfahrung, da es mehr Kenntnisse braucht. Mit divs hat man, im Gegensatz zu Tabellen, einen schönen und übersichtlichen Quellcode, welchen man schnell versteht.

Warum keine Tabelle?
Ja, Tabellen sind schnell gemacht und es ist einfach ein schnelles Layout zu erstellen, jedoch bleiben viele Möglichkeiten, welche man mit divs hätte, weg. Aber was auch noch gegen Tabellen spricht, ist der Quellcode. Ein Tabellen Layout kann sehr komplexe Strukturen haben wo man dann kaum mehr durchblickt.

Schlussendlich ist es jedem seine Sache, wer jedoch mehr will, der sollte sich vielleicht mal hinsetzen und die ganze div-Geschichte mal genauer ansehen ;)

HTML: Image Maps – Image Mapping

Mit JavaScript kann man viele Effekte auf seine Webseite bringen, jedoch bringt auch das eher langweilige HTML ein paar nette Sachen mit, welche einem einiges an JavaScript ersparen können. Und zwar geht es um Image Maps, also ums Mappen von Bildern. Zuerst aber eine kurze Erklärung was Image Maps überhaupt sind.

Mit Image-Maps ist es möglich, Bereiche auf einem einzigen Bild einzuteilen und z.B. eine Verlinkung auf einem bestimmten Punkt auf dem Bild hinzuzufügen. So könnte man theoretisch eine Navigation aus einem Bild erstellen und die einzelnen Links mit einem Image Mapping verlinken – aber dies wäre sehr unflexibel.

Offiziell wird Image-Map folgendermassen beschrieben:

Image maps allow authors to specify regions of an image or object and assign a specific action to each region (e.g., retrieve a document, run a program, etc.) When the region is activated by the user, the action is executed. 

Um so einen Image-Map zu erstellen, wird zuerst natürlich ein Bild benötigt, welches man mappen will.
Das Bild wird dann mit per HTML eingebunden und man gibt dem Bild einen Map:

<img usemap="#map" src="bild.jpg" />

“#map” ist hierbei der Name der Map, welche wir gleich definieren werden. Dieses HTML Attribut wird benötigt damit der Map funktioniert. Für valides HTML wird noch das alt und title-Attribut benötigt.

Der Mapping Part, welcher durch den oben genannten HTML-Tag aufgerufen wird, wird in einem eigenen Teil definiert und sieht so aus:

<map name="map">
    <area shape="rect" coords="11,10,59,29"href="http://www.google.ch" alt="Google CH" title="Google Schweiz" />
    <area shape="circle" coords="3,15,7" href="http://www.google.de" alt="Google DE" title="Google Deutschland" />
    <area shape="poly" coords="15,46,69,50,13,14" href="http://www.google.at" alt="Google AT" title="Google Österreich" />
</map>

Im img-Attribut wird also mit ‘usemap=”#map”‘ auf die Map ‘#map’ zugegriffen, welche wir (siehe Code oben) definieren.
Die Bereiche in denen was passiert (in unserem Beispiel sind es jetzt verlinkungen), werden mit Koordinaten angegeben und erhalten eine Form. Es gibt neben “default” (der restliche, undefinierte Bereich) 3 Formen fürs Mapping – rect (Viereck), circle (Kreis) und poly (Polynom). Diese werden (siehe oben) mit shape=”gewünschte form” angegeben.

Zu den verschiedenen Formen nun noch eine kurze Erklärung, wie das ganze mit den Koordinaten aussieht.

Viereck (shape=”rect”) Koordinaten werden definiert für: x1,y1,x2,y2
x1 = linke obere Ecke, Pixel von links
y1 = linke obere Ecke, Pixel von oben
x2 = rechte untere Ecke, Pixel von links
y2 = rechte untere Ecke, Pixel von oben

Kreis (shape=”circle”) Koordinaten werden definiert für: x,y,r
x = Mittelpunkt, Pixel von links
y = Mittelpunkt, Pixel von oben
r = Radius in Pixel

Polygon (shape=”poly”) Koordinaten werden definiert für: x1,y1,x2,y2 … xn,yn
x = Pixel einer Ecke von links
y = Pixel einer Ecke von oben
Es können so viele Ecken definieren wie gewünscht. Von der letzten definierten Ecke muss man sich einfach eine Linie zur ersten definierten Ecke hinzu denken, welche das Polygon schliesst.


(Quelle: Selfthtml)

Windows: Bootmenü bearbeiten und Standard System wählen

Wer mehrere Systeme auf dem Computer hat, wird normalerweise über Windows gefragt welches System gebootet werden soll. Um das Standard-System auszuwählen, oder die Zeit in welcher man seine Auswahl treffen kann, welches System nun gebootet wird, kann man direkt und unkompliziert in Windows selbst bearbeiten. Benötigt dafür sind nur Adminrechte.

Die Einstellung findet ihr in [Systemsteuerung, System, Einstellungen ändern, Erweitert, Starten und Wiederherstellen (Einstellungen...)].

Um den Masterboot Record zu bearbeiten hilft euch womöglich dies hier weiter.

Mit Batch Dateien verschieben und aufräumen

Wer häufig unordnung auf seinem (Windows) Computer hat und zu faul ist das ganze Aufzuräumen, dem hilft Batch weiter. Mit einer Batch Datei und wenigen Zeilen Code, wird einem das mühsame Aufräumen nun erheblich leichter gemacht. Einfach die Batch Datei ausführen und schon räumt der Computer für euch auf, bzw. macht halt dass, was ihr in die Batch Datei geschrieben habt.

Obwohl ich kein Batch Profi bin, habe ich mir kürzlich eine kleine Batch Datei geschrieben. Die Datei räumt meinen “Downloads” Ordner (Windows Vista/7) auf, bzw. verschiebt die Dateien und Ordner so wie sie sind in einen neuen Ordner, löscht den Downloads Ordner und erstellt ihn wieder neu.

Mein Code sieht folgendermassen aus:

XCOPY D:\Downloads D:\ablage\temp /E /S
RD D:\Downloads /S /Q
md D:\Downloads

Auf Zeile 1 wird der Inhalt vom Downloads Ordner in meinen gewünschten temp Ordner kopiert. Auf Zeile 2 wird der Ordner “Downloads” gelöscht und auf Zeile 3 wieder neu erstellt.

Wenn ihr den Inhalt lieber verschieben wollt, könnt ihr das mit “move” machen:

MOVE D:\Downloads\*.* D:\ablage\temp\

Sicherheit in WordPress Blog erhöhen

Wer sich Gedanken über die Sicherheit in seinem WordPress Blog macht (zurecht!), der sollte folgende Punkte beachten, damit der eigene Blog so sicher wie möglich läuft. Hier also ein paar Anweisungen, Tipps und Tricks etc.

Aktuelle WordPress Version

Der eigene Blog sollte jeweils mit der aktuellsten WordPress Version laufen, da in neueren Versionen wahrscheinlich wieder Sicherheitslücken geschlossen wurden und so mit einer neuen Version die Sicherheit erhöht wird.

Plugins

Achtet bei den Plugins welche ihr installiert, ob es bekannte Probleme oder Sicherheitslücken gibt und erkundigt euch etwas. Häufig schaffen es Hacker dank Sicherheitslücken in Plugins, in euer System einzudringen. Hier gilt auch, jeweils die neuste Version zu verwenden.

Kein “Admin” User

Wenn ihr einen Blog einrichtet oder bereits eingerichtet habt, existiert zu beginn der User “Admin” (Name des Users). Erstellt euch einen zweiten User mit Admin Rechten und löscht den ersten User namens Admin, da er auch ein Sicherheitsrisiko sein kann.

Sichere Passwörter

Verwendet immer absolut sichere Passwörter, nehmt hierzu einen Passwort Generator.

Datenbank Präfix

Der Tabellenpräfix (Table prefix) für WordPress in euere mySQL Datenbank sollte nicht den Standardwert “wp_” haben, am besten erfindet ihr etwas völlig neues.

CHMOD Rechte

Die Verzeichnisse bzw. Dateien müssen zur Sicherheit folgende chmod Rechte besitzen:

Root | 755

wp-includes/ | 755

.htaccess | 644

wp-admin/index.php | 644

wp-admin/js/ | 755

wp-content/themes/ | 755

wp-content/plugins/ | 755

wp-admin/ | 755

wp-content/ | 755

Für absolute Sicherheit verwendet ihr am besten das Plugin WP Security Scan, welches noch weiteres zur Sicherheit beiträgt.

Powered by WordPress | Buy cheap Sprint phones at BestInCellPhones.com | Thanks to Verizon cell phones, MMORPG and Fettverbrennung