PHP debugging in der Javascript console

Eine Aufgabe die einem immer mal wieder über den weg läuft ist das man bei einem Fertigen Produkt, nachträglich etwas debuggen muss. Nun kann man nicht einfach an der Live Version herum doktern und irgendetwas ausgeben. Hier kann einem die JavaScript console helfen. Diese ist für den normalen Nutzern nicht sichtbar und somit wunderbar geeignet für diesen Job.  Hier mal ein kleines beispiel wie eine solche debug Klasse aus sehen könnte.

 

 

class DebugConsole {
    public static function debug($name, $var = null) {
        echo '<script type="text/javascript">'.PHP_EOL ;

        /// this is for IE and other browsers w/o console
        echo 'if (!window.console) console = {};';
        echo 'console.log = console.log || function(){};';
        /// end of IE    

        echo 'console.log("'.$name.'");'.PHP_EOL ;    

        if (!empty($var)) {
            if (is_object($var) || is_array($var)) {
                $object = json_encode($var);
                echo 'var object'.preg_replace('~[^A-Z|0-9]~i',"_",$name).' = \''.str_replace("'","\'",$object).'\';'.PHP_EOL ;
                echo 'var val'.preg_replace('~[^A-Z|0-9]~i',"_",$name).' = eval("(" + object'.preg_replace('~[^A-Z|0-9]~i',"_",$name).' + ")" );'.PHP_EOL ;
                echo 'console.log(val'.preg_replace('~[^A-Z|0-9]~i',"_",$name).');'.PHP_EOL ;    

            } else {
                echo 'console.log("'.str_replace('"','\\"',$var).'");'.PHP_EOL ;
            }
        }
        echo '</script>'.PHP_EOL ;
    }
}


Remote Desktop Server unter Linux

Oft kommt Heutzutage auch in Firmen Linux Server zum Einsatz, wäre es dann nicht schön wen man auch dort ein Remote Desktop Verbindung aufbauen Könnte? Kein Problem dank xrdp.

 

Herunterladen

Wir gehen auf die Seite von xrpd (http://www.xrdp.org/) und laden uns die aktuelle Version Herunter und speichern sie Local.

 

Installation

terminalAsRootNun öffnen wir ein Terminal Fenster und navigieren ins Download Verzeichnis und melden uns als root an.

 

 

 

 

 

 

 

 

 

 

 

 

 

tarIm Anschluss entpacken wir das heruntergeladene tar Packet.

 

 

 

 

 

 

 

 

 

 

Bevor nun aber mit der Installation anfangen können müssen wir noch sicher stellenden das einige Pakete installiert sind. Dazu führen wir folgenden yum Befehl aus, sodass fehlende Pakete installiert werden.

yum

 

Nun können wir mit der eigentlichen Installation beginnen. Hierzu müssen wir erst einmal die in das zuvor entpacke Verzeichnis wechseln.

 

changedir

 

bootHier sehen wir eine ausführbare Datei und zwar bootstrap. Diese führen wir mir ./bootstrap aus.

 

 

 

 

 

 

 

 

 

 

 

 

 

configuareIm anschluss führen wir die configure aus und zwar mit ./configure

 

Jetzt müssen wir das ganze nur noch kompilieren und installieren. Dies machen wir mit

 

make

 

make install

 

 

 

 

 

 

friewallWenn die Installation fertig ist müssen wir die Firewall anpassen damit der Server auch von Außen erreichbar ist. Hierzu öffnen wir die Firewall seetings unter System –> Adminisration –> Firewall.

 

Hier führen wir den port 3389 unter Andere Ports sowohl für udp als auch tcp hinzu. Dann auf Anwenden klicken um die Einstellungen zu übernehmen.

 

 

 

 

 

 

Nun müssen wir noch dafür sorgen, dass er beim System Start geladen wird. Dazu müssen wir die xrdp.sh Datei ins das init.d Verzeichnis kopieren und den Service hinzufügen.

 

cp /etc/xrdp/xrdp.sh /etc/init.d/

chkconfig –add xrdp.sh

 

Jetzt können wir das System Neustarten oder den Service manuell starten um unsere Einstellungen zu testen.

 

/etc/xrdp/xrdp.sh start

 

 

rdpverbindung


Ajax file upload mit jQuery

Um das hochladen von Dateien ohne eine neue Seite aufzurufen benötigen wir ein bisschen Hilfe. Hierzu benutzen wir die JavaScript Libary jQuery. Es ist auch ohne möglich jedoch Erleichtert jQuery einem das leben enorm.

 

Zunächst brauchen wir ein html form. Jedoch ersetzen wir den üblichen submit button durch einen normalen button.

 

<form id='uploader' enctype='multipart/form-data'>
<input name='file' type='file' />
<input type='button' value='Upload' />
</form>
<progress></progress> 

 

Um nun die Datei an den Server zu schicken, müssen wir das click event des buttons abfangen und de Datei per ajax an das php script zu schicken. Hierzu holen wir uns die form daten und speichern sie Temporär in einer variable. Anschließend benutzen wir das ajax Objekt von jQuery um die daten zu versenden.

 

$(':button').click(function(){
            var formData = new FormData($('#uploader')[0]);
            $.ajax({
                url: 'upload.php',  //server script to process data
                type: 'POST',
                xhr: function() {  // custom xhr
                    myXhr = $.ajaxSettings.xhr();
                    if(myXhr.upload){ // check if upload property exists
                        myXhr.upload.addEventListener('progress',progressHandlingFunction, false); 
                        // for handling the progress of the upload
                    }
                    return myXhr;
                },
                //Ajax events
                //beforeSend: beforeSendHandler,
                //success: completeHandler,
                //error: errorHandler,
                // Form data
                data: formData,
                //Options to tell JQuery not to process data or worry about content-type
                cache: false,
                contentType: false,
                processData: false
            });
        });

 

Das php Skript sieht wie folgt aus:

 

<?php

$jahr = date('Y');
$mon = date('m');

$uploaddir = 'uploads'.DIRECTORY_SEPARATOR.$jahr.DIRECTORY_SEPARATOR.$mon.DIRECTORY_SEPARATOR;


if (! file_exists($uploaddir)) {
    mkdir($uploaddir);
}  

$uploadfile = $uploaddir . basename($_FILES['file']['name']);

//move_uploaded_file ist die Standard PHP-Funktion um Dateien auf dem Server zu verarbeiten
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
  echo str_replace("\\", "/", $uploadfile);
} else {
  // Als echo keinesfalls false benutzen. Führt zu Konflikten mit dem Ajax-Request
  echo "error";
}

?>


Developer PC

Developer PCBei der Zusammenstellung meines neun PC’s Mitte 2012 war es mir wichtig das er für nächsten Zeit für Alles gerüstet ist. Zudem sollte er möglichst günstig sein. Auf dieser Grundlage habe ich angefangen das System zusammen zu stellen, habe Produkttests gelesen und bin schlussendlich auf Folgenden Konfiguration gekommen.

AMD FX-8150 3600 AM3+ BOX € 179,90
GIGABYTE GA-990FXA-UD5 € 167,90
Kingston HyperX DIMM 16 GB DDR3-1866 Quad-Kit  € 119,90
be quiet! Dark Power Pro 10 750W ATX23 € 149,90
Zalman Z9 ATX € 43,99
Corsair ForceGT 2,5″ SSD 120 GB SSD € 112,90
Zota1.2 D5 X GTX560 Ti 448 Cores R € 219,90

Gesamtsumme


€ 994,39

 

Ich habe mich für den AMD entschieden, weil er der einzige Prozessor ist echte 8 Kerne hat, was beim Multithreaded Programmen enorm von Vorteil ist. Er basiert auf der leistungsstarken Bulldozer-Architektur von AMD. Kommt aus aus der Server Baureihe. Als sokel kommt ein am3+ zum Einsatz. Standardmäßig ist er mit 3,6 GHz getaktet. Bei großer singelcore Auslastung ist er aber in der Lage einzelne Kerne auszuschalten und dafür die anderen Kerne Zu übertaten. Des weiteren besitzt er 8 MB L2 und L3 cache, was den den Austausch zwischen CPU und Ram vermindert und somit das System schneller macht. Die 16 GB Kingsten Hyper X sprechen denk ich mal für sich selbst.

Für das Gigabyte Board habe ich mich entschieden, da es durchweg gut Bewertungen hatte und ich bis jetzt nur Gute Erfahrungen mit Gigabyte gemacht habe. Die Ausstattung des Boards kann sich sehen lassen. Um das Board mit dem Prozessor zu betreiben muss man jedoch ein BIOS update durchführen. Mit dem ausgelieferten BIOS ist es leider nicht Möglich. Somit muss man bedenken das man erst einmal einen älteren Prozessor verbauen um das update einzuspielen.

Die SSD verleiht den System quasi Flügel. Der Zugriff auf die Daten ist einfach Unglaublich schnell.

Nach dem alles zusammen gebaut ist und Windows installier ist komme ich unter Windows 7 auf folgende Leistungsindex:

Windows 7 Leistungsindex

Jedoch ist Windows 7 zwar noch aktuell aber die Zukunft wird auf Windows 8 Hinauslaufen und dafür ist das System ausgelegt, weshalb es mich nicht wundert das der Leistungsindex hier höher ausfällt.Windows 8 Leistungsindex

Die CPU arbeitet wunder bar und verteilt die last auf die ihm zu Verfügung stehende 8 Kerne.cpu auslastung

Developer PC zusammenbauDen einzigen Fehler den ich beim zusammen stellen gemacht habe war es die Boxed Edition des Prozessors genommen zu haben. Der Standard Lüfter ist einfach nur Laut was bei längerer Arbeit ziemlich schnell anfängt zu nerven. Weshalb ich mir kurzer Zeit nach einem anderen Lüfter umgesehen habe. Nach einiger Recherche ist meine Wahl auf den Noctua NH-U9B gefallen.  Seit dem dieser ein meinem Rechner Verbaut ist das einzige was man ab und an hört das drehen meiner anderen Festplatten.