Basis Theme für WordPress

15. Dezember 2011, 13:23 von Tobi | Keine Kommentare

Es existieren verschiedene Möglichkeiten ein eigenes Themes für WordPress zu entwickeln. Vom komplett eigenen Aufbau über die Verwendung von Frameworks und die Modifikation bestehender Themes, ist so gut wie alles möglich. Eine sinnvolle Alternative ist das WordPress Basis Theme.

Wie der Name schon vermuten lässt, stellt das Basis Theme ein schlankes Grundgerüst für einen einfachen Start bereit. Die Vorlage lässt sich leicht den eigenen Bedürfnissen anpassen und bietet auch schon einige wichtige Grundfunktionen.

Das Basis Theme wird regelmäßig aktualisiert und ist bereits in HTML5 verfasst. Auch CSS3 Media Queries, um das Design automatisch auf mobile Endgeräte anzupassen, sind bereits definiert.

Download WordPress Basis Theme (automatisch die aktuellste Vesion)
Homepage des WordPress Basis Theme

RailsInstaller 2 für Windows

28. September 2011, 17:16 von Tobi | Keine Kommentare

Vor ein paar Monaten habe ich beschrieben, wie ihr Ruby on Rails 3 unter Windows von Hand installieren könnt.

Mittlerweile ist Version 2 des RailsInstallers erschienen. Im Regelfall würde ich das Tool der manuellen Installation von Ruby on Rails 3 vorziehen. Neben dem Update auf Ruby 1.9.2 ist in der neuen Version auch bereits Rails 3.1 enthalten. Außerdem ist TinyTDS enthalten, wodurch mittels FreeTDS eine MSSQL-Datenbank genutzt werden kann. Alternativ kann auch das integrierte SQLite in Version 3.7.3 verwendet werden.

Download RailsInstaller

Java 7: Verbesserungen an der Programmiersprache

17. August 2011, 22:55 von Tobi | Keine Kommentare

Nach mehr als fünf Jahren Entwicklungszeit erschien vor kurzem Java in Vesion 7. Insgesamt enthält die neue Version rund 9.500 Verbesserungen. Nachfolgend eine Liste der wichtigsten Neuerungen:

  • neue API für Dateisystem-Operationen (NIO.2)
  • neue API für Multi-Core-Systeme
  • neuer Garbage Collector (G1)
  • verbesserten Unterstützung von dynamischen Programmiersprachen (Ruby, Python und Javascript)
  • Unterstützung von Unicode 6.0
  • Überarbeitung zahlreicher Bibliotheken

Eine detaillierte Übersicht aller Neuerungen findet ihr in den Release Notes.

Programmieren in Java soll leichter werden

Zu den oben genannten großen Änderungen kommen noch einige kleinere Verbesserungen, die vor allem das Programmieren in Java erleichtern sollen. Nachfolgend ein paar Beispiele.

Numerische Literale lassen sich nun neben der dezimalen (36), hexadezimalen (0×24) sowie oktalen (044) auch in der binären (0b100100) Schreibweise definieren.

public static final float PI = 3.141592f;
int decimal = 36;
int hex = 0x24;
int octal = 044;
int binary = 0b100100;

Zur besseren Lesbarkeit dürfen numerische Literale nun mit Unterstrichen versehen werden. Allerdings nicht am Anfang oder am Ende und an zweideutigen Stellen, wie beispielsweise vor oder nach dem “x” in der hexadezimalen Schreibweise. Der Compiler entfernt beim Parsen die Unterstriche.

int longBinary = 0b1001_0011_0110_1011;
int longHex = 0xAA33_BE41;
int million = 1_000_000;

Das Anlegen von Objekten mit generischen Parametern wurde durch die Einführung des Diamond-Operators (<>) erleichtert. Auf der rechten Seite muss die Zuweisung nicht mehr wiederholt werden. Dadurch spart man sich Tipparbeit und der Quellcode wird kürzer und übersichtlicher.

HashMap<String, List<Integer>> map = new HashMap<String, List<Integer>>();
HashMap<String, List<Integer>> map = new HashMap<>(); // kürzere Schreibweise
ArrayList<String> liste = new ArrayList<String>();
ArrayList<String> liste = new ArrayList<>() // kürzere Schreibweise;

Switch-Case-Anweisungen funktionieren ab Java 7 neben primitiven Datentypen nun auch mit Zeichenketten. Dabei wird der String im Switch-Ausdruck mit der Methode “equals” mit dem Case-Fall verglichen. Anschließend gibt er die entsprechende Zahl zurück.

public static int getDay(String day) {
	int dayNumber = 0;
	if (day == null) { return dayNumber; }
	switch (day.toLowerCase()) {
			case "montag":      dayNumber = 1; break;
			case "dienstag":    dayNumber = 2; break;
			case "mittwoch":    dayNumber = 3; break;
			case "donnerstag":  dayNumber = 4; break;
			case "freitag":     dayNumber = 5; break;
			case "samstag":     dayNumber = 6; break;
			case "sonntag":     dayNumber = 7; break;
			default:            dayNumber = 0; break;
	}
	return dayNumber;
}

Bei den Exceptions gibt es nun die Möglichkeit mehrere Exceptions in einem Catch-Block zu fangen. Zwischen den verschiedenen Typen steht dann jeweils ein OR-Zeichen (|). Sehr hilfreich um eine Aneinanderreihung von Catch-Blöcken zu vermeiden.

try{
// ...
} catch (IOException e) {
    System.out.println("Operation xyz fehlgeschlagen: " + e);
} catch (ParseException e) {
    System.out.println("Operation xyz fehlgeschlagen: " + e);
}

try {
// ...
} catch (IOException | ParseException e) {
    System.out.println("Operation xyz fehlgeschlagen: " + e);
}

IE cached AJAX-Requests

10. Juni 2011, 17:16 von Tobi | 1 Kommentar

Beim Test eines AJAX-Requests ist mir aufgefallen, dass dieser im IE nicht immer funktionierte. Nach kurzer Fehlersuche habe ich herausgefunden, dass der Internet Explorer AJAX-Requests ziemlich aggressiv cached. Bei jQuery gibt es die Möglichkeit das Caching für den AJAX-Aufruf explizit zu deaktivieren:

$.ajax({
    url: "ajax.php",
    type: "GET",
    data: ({id : this.getAttribute('id')}),
    cache: false
}

PHP: cURL als Alternative für allow_url_fopen

26. Mai 2011, 17:18 von Tobi | 7 Kommentare

Gestern bekam ich eine Mail von meinem Webhoster, dass ab sofort die aktuellste PHP-Version 5.3.6 zur Verfügung steht. Die neue Version ist nun direkt als Modul in Apache integriert, anstatt wie früher als CGI-Programm. Dadurch sollen sich spürbare Geschwindigkeitsverbesserungen ergeben. Tatsächlich muss ich sagen, dass mein Blog deutlich schneller lädt, vor allem der Admin-Bereich.

Allerdings wurde aus Sicherheitsgründen auch die Funktion “allow_url_fopen” standardmäßig deaktiviert. Damit funktioniert mein kürzlich vorgestelltes Skript zum RSS-Feeds auslesen leider nicht mehr. Den Code habe ich auch zum Anzeigen der “Hartware News” in der Sidebar ganz unten auf der Startseite verwendet. Also was tun? Zurück auf die alte PHP-Version und die bessere Performance herschenken? Nein, kommt nicht in Frage. Also musste mein Skript angepasst werden. War sogar deutlich einfacher als ich anfangs dachte.

Anstatt des bisherigen Codes zum Laden des RSS-Feeds

$xml =simplexml_load_file('http://www.hartware.net/xml/news.rdf

hier die Lösung mit cURL:

$url = "http://www.hartware.de/xml/news.rdf";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$xml_raw = curl_exec($ch);
curl_close($ch);
$xml = simplexml_load_string($xml_raw)

RSS-Feeds mit PHP auslesen

10. Mai 2011, 16:30 von Tobi | 10 Kommentare

Nachfolgend ein kleiner Codeschnipsel, wie man einen RSS-Feed mit PHP ausliest. Mit dem gleichen Code sind auch die “Hartware News” in der Sidebar ganz unten auf der Startseite meines Blogs realisiert. Die Ausgabe könnt ihr natürlich mit HTML formatieren und an euer Design anpassen.

// Feed einlesen
if( !$xml = simplexml_load_file('http://www.hartware.net/xml/news.rdf') ) {
    die('Fehler beim Einlesen der XML Datei!');
}

// Ausgabe Array
$out = array();

// auszulesende Datensaetze
$i = 5;

// Items vorhanden?
if( !isset($xml->channel[0]->item) ) {
	die('Keine Items vorhanden!');
}

// Items holen
foreach($xml->channel[0]->item as $item) {
	if( $i-- == 0 ) {
		break;
	}

	$out[] = array(
		'title'        => (string) $item->title,
		'description'  => (string) $item->description,
		'link'         => (string) $item->guid,
		'date'         => date('d.m.Y H:i', strtotime((string) $item->pubDate))
	);
}

// Eintraege ausgeben
foreach ($out as $value) {
	echo $value['title'].$value['description'].$value['link'];
}

MySQL Workbench – Datenbankdesign, Modellierung, Erstellung und Bearbeitung

6. Mai 2011, 20:51 von Tobi | 1 Kommentar

MySQL Workbench ist eine umfangreiche Software für Entwickler und Datenbankadministratoren, welche unter anderem Datenbankdesign, Modellierung, Erstellung und Bearbeitung von MySQL-Datenbanken unterstützt. Die kostenlose “Community Version” von MySQL Workbench ist für Windows, Linux und Mac OS verfügbar. Unter Windows wird ein installiertes .NET Framework 4.0 von Microsoft benötigt.

Das letzte Mal habe ich die Software vor rund drei Jahren eingesetzt. Damals war MySQL Workbench noch ziemlich instabil und war auch sehr langsam. Seitdem hat sich viel getan. Die aktuellste Version wurde optisch komplett neu gestaltet und es kamen viele neue Funktionen hinzu. Auch die Stabilität und Performance ist mittlerweile auf einem ganz anderen Niveau. Wirklich geniale Software, die sich jeder anschauen sollte, der sie noch nicht kennt

Anbei noch zwei Screenshots, um die Möglichkeiten zu verdeutlichen.

Download MySQL Workbench

Burp Suite – abfangen und modifizieren von HTTP-Headern

6. April 2011, 14:59 von Tobi | Keine Kommentare

Das kostenlose Java-Tool Burp Suite bietet verschiedene Möglichkeiten, um Web-Applikationen auf Sicherheitslücken zu überprüfen. Sehr interessant für selbst programmierte Skripte ist die integrierte Proxy-Funktionalität. Der interaktive HTTP(S)-Proxy schaltet sich zwischen Browser und Server. Somit kann der gesamte Datenverkehr untersucht, analysiert und modifiziert werden. Beispielsweise lassen sich HTTP-Header oder POST-Daten abfangen, ändern und anschließend an den Server weiterschicken.

Dazu muss lediglich Burp Suite gestartet und im Browser als Proxy “localhost” mit Port 8080 eintgetragen sein. Nun kann man die gewünschte Homepage ansurfen und die gesamte Kommunikation verfolgen bzw. ändern.

Download Burp Suite

Linksammlung – PHP Frameworks

5. Februar 2011, 08:52 von Tobi | 6 Kommentare

Nachfolgend eine Linksammlung mit verschiedenen PHP Frameworks. Die bekannteren Frameworks sind fett markiert.

Meine Favoriten sind das “Adventure PHP Framework” und “Kohana”. Beide Frameworks sind relativ schlank, bieten aber trotzdem sehr viele durchdachte Funktionen. Zudem verfügen beide über eine gute Dokumentation und die Entwicklung schreitet stetig voran.

Seite 1 von 212