Kategorien
Apache Webserver PHP SEO Webdeveloper Tools

Profiling mit XDebug und Webgrind

Wenn die Performance einer Webseite nachgibt, stellt man sich oft die Frage, an welche Funktion/Modul liegt der Performanceverlust? Die Lösung ist das Profiling einer Webseite.

Profiling beschäftigt sich der Analyse der Funktionsaufrufe eine Webseite. Es kann dadurch analysiert werden, welche Teile sehr lange brauchen oder welche Funtionen doppelt aufgerufen werden.

Profiling sollte nicht auf einem Produktivsystem ausgeführt werden, weil die Performance einbricht und Ausgaben sichtbar sind. Übrigends: Wer seine Webseite schneller macht, SEO optimiert gleichzeitig.

Kategorien
PHP Webdeveloper Tools

Installieren von XDebug unter Netbeans

XDebug ermöglicht es ein Programm zur Laufzeit zu debuggen und Step by Step.

Dazu sollte als erstes das folgende Tool verwendet werden für die Installation um die richtige Version zu installieren:

  1. XDebug Installations Hilfe Tool
  2. Zur Kontrolle kann nach der Installation das Tool noch mal verwendet werden und es sollte unter Xdebug installed: 2.x anzeigen
  3. php.ini Einstellungen anpassen:
    xdebug.remote_enable=onxdebug.remote_handler=dbgp
    xdebug.remote_host=localhost
    xdebug.remote_port=9000
    xdebug.remote_log=" \xampp\htdocs\xError.log"
  4. Danach sollte geteste werden, ob der Port 9000 freigegeben ist mit dem folgenden Script:
    $address = '127.0.0.1';
     $port = 9000;
     $sock = socket_create(AF_INET, SOCK_STREAM, 0);
     socket_bind($sock, $address, $port) or die('Unable to bind');
     socket_listen($sock);
     $client = socket_accept($sock);
     echo "connection established: $client";
     socket_close($client);
     socket_close($sock);
  5. Danach kann in Netbeans mit Debug Projekt (STRG+F5) und einem Breakpoint das passende Projekt debugt werden. Wenn es nicht klappt, muss die URL im Browser manuell angepasst werden:http://localhost/class.php?XDEBUG_SESSION_START=netbeans-xdebug
Kategorien
jQuery

jQuery UI Autocomplete mit extraParams für zusätzliche GET Variablen

In jQuery UI gibt es eine sehr gute Autocomplete Funktion, die ich auf der Seite CD Shop Berlin eingebaut habe (Schnellsuche oben links). Dabei werden beim Eintippen Vorschläge unterbreitet.

$(document).ready(function() {
 $("input#suche").autocomplete(
 {
 autoFocus: false,
 delay:300,
 minLength: 3,
 select: function(event, ui) {document.advanced_search.submit();},
 source: function(request, response) {
 $.ajax({
 url: "autocomplete.php",
 dataType: "json",
 data: {
 term : $('#schnellsuche').val(),
 verkauf : $('input[name=verkauf]').is(':checked'), },
 success: function(data) {
 response(data);
 }
 });
 }
 }
 );
});

Dabei ist zu beachten, dass der Parameter extraParams von jQuery UI 1.8 aktuell ignoriert wird und man dies über den eingebauten Ajax Request lösen muss.

Serverseitige stehen dann die Variablen mit $_GET[‚term‘], $_GET[‚verkauf‘]  zur Verfügung.

 

Kategorien
PHP

richtige Rechte für Dateien zum Speichern von Skript Input

Wenn man schreibenden Zugriff auf Dateien wie z.B. .txt oder .dat Dateien aus einem Skript heraus hat, sollten diese

  1. vom Skript angelegt worden sein, nicht manuell bei FTP. Damit ist sichergestellt , dass der Besitzer kein FTP Account ist.
  2. die Schreibrechte 644 haben, damit sie nicht von einem anderen Account überschrieben werden können oder durch den automatischen Upload einer IDE überschrieben werden.

Bsp:

if(!file_put_contents ($log_file ,""))
 {
 chmod ($log_file, 0644);
 }

So können Fehler wie dieses vermieden werden:

Warning: file_put_contents(log.txt) [function.file-put-contents]: failed to open stream: Permission denied in class.php on line x

Warning: chmod() [function.chmod]: Operation not permitted in class.php on line x

Kategorien
Android

Tutorial Installation des Android SDKs mit Eclipse unter Windows 7

Für die Android Entwicklung unter Windoes sollte bevorzugt Eclipse als IDE benutzt werden, weil Netbeans doch einige Probleme in der Vergangenheit mit dem Andorid SDK hatte.

Installation von Eclipse

  1. Download von Eclipse (Eclipse IDE for Java Developers)
  2. entpacken des Archivs. Dabei ist darauf zu achten, dies nicht in das Programm-Verzeichnis von Windoes zu tun, weil dort die Schreibrechte Probleme machen bei der Installation des ADT Plugins
  3. Installation von Java Runtime Enviroment
  4. starten der eclipse.exe und es läuft (ohne Installation)
  5. Testprojekt anlegen und ausführen: Bsp: main.java:
public class main {
    public static void main(String[] args) {
        System.out.println("Hello word");
    }
}

Kategorien
jQuery

jQuery: Ist eine Checkbox checked

Ohne eine ID vergeben zu müssen und mit Hilfe des name-Attributs funktioniert das mit jQuery so:

$checked = $('input[name=myName]').is(':checked');
Kategorien
SEO

On-Page SEO Checklist

Für eine Basis-SEO einer Webseite sollten die folgende Punkte beachtet werden. Die Checkliste wird kontinuierlich erweitert und nur eine Gedankenstütze für mich.

  • URLs aufhübschen, html Endung wenn möglich
  • img mit alt und title-Tag versorgen, title länger und anders als alt-Tag
  • Links mit title-Tag versorgen, nicht zu viel Text (höchstens 3 Wörter)
  • Überschriftenhierachie checken, nur eine h1
  • h1, title, description, Links zur Seite  mit Keyword füllen
  • Titel 70 Zeichen, damit von Google nicht gekürzt
  • Description 150-160 Zeichen, soll zum klicken animieren, Keywords weit vorn im Text
  • Description solle im Text vorkommen
  • Javascript Link für Impressum
function javascriptLink(url)
{
    window.location.href = "/" + url;
}
  • www-Umleitung
  • Umleitung der alten indexierten Seiten
  • kein doppelter Content
  • mehrfache Verlinkung der wichtigen Seiten
  • mehrere Domains auf die Seite vorhanden? Umleitung einrichten (doppelter Content)
  • Sitemap
  • css, javascript Dateien vereinigen, Ladezeit verringern
Kategorien
JavaScript Web Frontend

Google Maps JavaScript API V3 und Utility Library V3 Tutorial

Google Maps Karten sind auf fast jeder Webseite aufzufinden. Die neueste Version Google Maps JavaScript API V3 bietet:

  • erweiterte Unterstützung für mobile Geräte
  • Integration von Google Street View
  • verbesserte Performance
  • Weiterentwicklungen  in Zukunft, da Version V2 als veraltet erklärt wurde seitens Google
  • es wird kein API Schlüssel mehr benötigt, wie bei V2
Kategorien
JavaScript Webdeveloper Tools

Javascript Debbuging mit Firebug

Javascript ist nicht einfach zu programmieren und zu debuggen. Die einfachste Möglichkeit Variablen zu überwachen ist diese mit alert auszugeben.

alert($var);

Die Methode stößt natürlich bei mehreren Variablen und Schleifen an seine Grenzen, weil es zu einer Klick-Orgie kommt.

Die beste und einfachste Möglichkeit bietet Firebug, ein Plugin für Firefox, welches jeder Web Developer standardmäßig installiert haben sollte. Damit lassen sich mit dem console.log Befehl Objekte, Arrays und Variablen auf der Firebug Konsole ausgeben.

console.log($array);

Weitere Funktionen sind:

  • Performance Messung von Javascript Funktionen
  • Stack Tracing inklusive der Input Variablen der Funktionen auf dem Stack mit console.trace()
  • Object Inspection mit console.dir()
Kategorien
JavaScript Web Frontend

Google Earth API

Google bietet seit Jahren seinen freien Service Google Earth an, mit dem man die Möglichkeit hat, Daten auf einem Erdball  und einer detailierten 3D Erdoberfläche zu visualisieren.
Für mein nesues Projekt wo-bin-ich-jetzt.de, einen weltweiten GEO-Informationsservice, habe ich Google Earth eingebunden.


Sehenswürdigkeiten in Berlin
Die zentrale Developer Seite mit reichhaltigen Ressourcen bietet einen sehr guten Überblick über die API und einen Developer Guide und eine Google Earth API Reference.
Der User muss ähnlich wie bei Flash ein Plugin installieren, um Google Earth Daten anschauen zu können. Für die Entwicklung muss ein Google Maps API Key beantragt werden und dann kann es losgehen.

Probleme mit Google Earth

Wieso wird mein Marker nicht angezeigt?

Das kann daran liegen, dass der Zoom Faktor in der Ansicht so hoch ist, dass der Marker zwar da ist, aber nicht sichtbar. Aushilfe bringt setScale(10.0) für den 10 fachen Zoomfaktor:

var icon = ge.createIcon('');
 icon.setHref('http://maps.google.com/mapfiles/kml/paddle/red-circle.png');
 var style = ge.createStyle(''); //create a new style
 style.getIconStyle().setIcon(icon); //apply the icon to the style
 style.getIconStyle().setScale(10.0); //
 placemark.setStyleSelector(style); //apply the style to the placemark

Long als Variablen Name für Longitude (Breitengrad)

Der Fehler ist schnell gemacht, aber man sollte nie eine Variable long benennen, weil damit der Datentyp Long interpretiert wird, besser longitude verwenden.