PHP 5.3

1. August 2008

1 Kommentar

Heute erschien PHP 5.3 alpha1. Ich habe bisher nur die Doku dazu gelesen, aber das was dazu kommt bringt Spaß! :)

Namespaces

Mit Hilfe von Namespaces lassen sich Klassen zusätzlich Ordnen und sich so Kollisionen vermeiden. Mehr kann ich nicht dazu schreiben im Moment, da die Doku scheinbar schon wieder veraltetet ist, ich hoffe jedoch nicht, dass das wie in der aktuellen Doku umgesetzt wird, denn das ist Quark. Python hat das cool gelöst, wieso nicht davon ein bisschen abschauen?

Zusätzliche magische Methoden

Mit __call lassen sich bereits nicht-existente Funktionen von Objekten abfangen, nun funktioniert das auch mit statischen Funktionen. Hurra!
Die Methdoe __invoke erlaubt Objekte wie Funktionen zu behandeln.

Late static Binding

Mit dem neuen “static” Keyword soll das verkorkste Handling bei vererbten statischen Methoden korrigiert werden. Mehr dazu sowie ein gutes Beispiel findet sich auch in der Doku.

Echte anonyme Funktion

Seit PHP4 gibt es create_function, eine lieblose Methode um anonyme Funktionen zu erstellen. Mag praktisch sein, die Beispiele und die merkwürdige Handhabung haben mich jedoch bisher davon abgehalten. Mit 5.3 bekommt PHP ähnliche Funktionen wie Javascript:

$lambda = function () {
    echo "Hello World!\n";
};

Was mich verwundert: entgegen der restlichen PHP-Syntax brauchen anonyme Funktionen nach dem schließenden } ein Semikolon.
Quelle des Beispiels und einige weiteren Informationen

Auf diese Funktion freue ich mich am meisten (:

Nowdoc

Keine große Neuerung ist die Nowdoc genannte Syntax. Ähnlich der Heredoc mit dem Unterschied, dass Variablen im Text nicht ersetzt werden. siehe Doku

¬ geschrieben von Michael in PHP

Ferien!!!!

1. August 2008

4 Kommentare

Juhu! :mrgreen:

¬ geschrieben von Michael in Allgemein

KDE 4

1. August 2008

0 Kommentare

Bisher war ich kein Fan von KDE, Version 3 ist IMO zu Windows-like. Vor wenigen Tagen wurde Version 4.1 veröffentlicht welche nun stabil laufen soll. Zeit für einen Test!

Ich verwende gerade die Live-CD “KDE Four Live”. Das Ganze basiert auf openSuse und ist deshalb vor allem von vorne bis hinten perfekt designt. Die Geschwindigkeit ist verblüffend, normalerweise sind Live-CDs ziemlich träge, hier lässt sich gerade flüssig arbeiten. Diesen Beitrag schreib’ ich mit Konqueror, ein ganz netter Browser aber kein Ersatz für Opera.

Der Start lief problemlos, mein Monitor und die passende Auflösung (1680*1050px vertragen manche Distros nicht) wurde richtig erkannt, jedoch wurde das Bild ein bisschen nach rechts geschoben, was sich jedoch mit Yast problemlos beheben lies.

Der Desktop ist ungewohnt, die Widgets machen jedoch sehr viel Spaß und laden zum Spielen ein. :)

Im neuen KDE kommt nicht mehr Konqueror als Datei-Manager zum Einsatz sondern der schlankere Dolphin. Die 3-Spalten-Ansicht ist gut gelungen, die Selektion per Hover eine gute Idee aber doch sehr gewöhnungsbedürftig, jedoch spart man sich die Strg-Taste.

Schön ist die Integration der Programme: wenn ich in Konqueror einen Download starte landet dieser direkt im Download-Manager-Programm welches ich über ein Dashboard(Desktop)-Widget überwachen kann. Cool!

Ich werd’ jetzt noch ein bisschen mehr herumspielen, vielleicht wechsel ich bald von Gnome nach KDE. :-)

¬ geschrieben von Michael in Allgemein

Ubuntu: Auf die neuste Compiz-Version aktualisieren

26. Juli 2008

1 Kommentar

Die Ubuntu-Entwickler sind (im Vergleich) meist sehr flott beim Updaten auf neue Versionen, wegen dem Feature-Freeze hat man aber dann doch nie wirklich die neusten Versionen. Hat zwar seine guten Gründe aber auch Nachteile. Über Tombuntu bin ich auf das PPA eines Launchpad-Users gestoßen welches die neuste Compiz-Version bereit hält.

Die Einrichtung war schnell erledigt und sofort wollte Ubuntu auf die neuste Version updaten. Eine Minute später lag Compiz komplett fertig zum Spielen bereit. :)

Was neu ist? Der Einstellungseditor (ccsm) erkennt Konflikte besser und man kann nun seinen Würfel deformieren:
Im Würfel
Außerhalb des Würfels mit abgehobenen Fenstern

Ubuntu rules 8)

¬ geschrieben von Michael in Allgemein

I love jQuery

6. Juli 2008

0 Kommentare

Bisher vor kurzem war ich noch Anfänger des Prototype-Frameworks: Sparte Zeit und machte vor allem die Arbeit mit Javascript bequemer. Ich bin öfters auf jQuery gestoßen, welches ich jedoch wegen der scheinbar schwereren Einarbeitung links liegen gelassen hab. Vor knapp zwei Wochen in der Langeweile probierte ich dann noch mal etwas mehr damit herum und bin mittlerweile begeistert!

Prototype ist kurz. jQuery ist noch viel kürzer. Beispiel? Ajax!

/* Prototype */
new Ajax.Request('./index.php', {
    method: 'get',
    parameters: { action: 'getPage', page: 'test' },
    onSuccess: function(transport)
    {
        $('content').innerHTML = transport.responseText;
    }
}
 
/* jQuery */
$.get('./index.php', { action: 'getPage', page: 'test' }, function(data) {
    $('#content').html(data);
});

Geht sicherlich noch kürzer! :D

Zusätzlich für jQuery sprechen auch das gigantische Plugin-Repository sowie die gefühlt größere Entwicklergemeinde.

Noch ein nettes Snippet zum Abschluss. Wie färbt man Tabellenzellen abwechselnd anders? Ja, man kann zusätzlichen PHP-Code nehmen, aber was ist, wenn man keine dynamische Sprache nutzt?

$('tr').each(function(i, item) {
    if ( i % 2 == 0 ) $(item).addClass('row2'); /* Jeder zweiten Zelle die Klasse row2 hinzufügen */
});

So könnte das dann aussehen:

¬ geschrieben von Michael in Allgemein

Hot-To: Shoutcast Server unter Debian/Linux einrichten

6. Juli 2008

19 Kommentare

Ja, ich bin zurück! :D

Ich bin gerade dabei einen Server für einen Webradio-Sender einzurichten. Neben dem Webserver darf natürlich auch das eigentliche Radio nicht fehlen. Die Installation eine Shoutcast-Servers lässt sich zwar recht schnell erledigen, doch wie steuert man diesen am Besten? Dazu jedoch später mehr. ;)

Zuerst einmal (falls noch nicht getan) per SSH mit dem Server verbinden. Bei virtuellen Maschinen am Besten auch machen, Copy&Paste macht mehr Spaß. ;)
Als nächstes als root anmelden, bei Debian geht das mit “su”, bei Ubuntu Servern mit “sudo su”. Nun die Folgenden Befehle nacheinander eingeben, um ein tempäres Verzeichnis für den Server anzulegen und diesen herunterzuladen.

cd ~
mkdir shoutcast
cd shoutcast
wget http://yp.shoutcast.com/downloads/sc1-9-8/sc_serv_1.9.8_Linux.tar.gz
tar -xzf sc_serv_1.9.8_Linux.tar.gz

Mit der Eingabe von “ls” kann nun geprüft werden, ob die Dateien “sc_serv” (der eigentliche Server) und die “sc_serv.conf” (Konfiguration) vorhanden sind. Nun müssen die beiden Dateien an die richtigen Orte kopiert werden:

cp sc_serv /usr/bin/sc_serv
cp sc_serv.conf /etc/sc_serv.conf

Nun geht es ans Konfigurieren! Vor dem Start des Servers müssen noch ein paar Werte in der sc_serv.conf bearbeitet werden. Dazu die Datei mit dem bevorzugten Editor (bei mir nano) öffnen.

nano /etc/sc_serv.conf

Nun nach den Folgenden Werten suchen und wie beschrieben anpassen:

; Folgender Wert wird von den Moderatoren benötigt, damit diese über den Server streamen können
Password=xxx
 
; In diese Datei soll geloggt werden
LogFile=/var/log/sc_serv.log
 
; Diese beiden Werte müssen auf 0 stehen, da sonst die Konsole zugemüllt wird. ;)
RealTime=0
ScreenLog=0

Als letzter Schritt muss der Server noch start und beendbar sein. Starten geht sehr simpel, doch wie beendet man ihn? Unter Debian gibt es dazu die init.d-Skripte. Ich habe für Shoutcast mal eines erstellt. Meine Bash-Kenntnisse sind leider nicht die Besten, für Verbesserungsvorschläge bin ich nicht undankbar. ;)

Diese Datei als “/etc/init.d/shoutcast” speichern:

#!/bin/sh
 
test -f /usr/bin/sc_serv || exit 0
 
case "$1" in
        start)
                echo "Starte SHOUTcast..."
                /usr/bin/sc_serv /etc/sc_serv.conf &
                ;;
        stop)
                echo "Stoppe SHOUTcast..."
 
                export sc_pid=`ps -C sc_serv -o pid --no-headers`
                if test -n "$sc_pid"; then
                        kill -9 $sc_pid
                fi
                ;;
        restart)
                echo "Starte SHOUTcast neu..."
                kill -9 `ps -C sc_serv -o pid --no-headers`
                /usr/bin/sc_serv /etc/sc_serv.conf &
                ;;
        *)
                echo "usage: shoutcast"
                echo "$0 {start | stop | restart}"
                exit 1
                ;;
esac

Nun kann der Server bequem gestartet und gestoppt werden:

/etc/init.d/shoutcast start
/etc/init.d/shoutcast stop

Zu guter Letzt kann noch das temporäre Verzeichnis vom Anfang gelöscht werden:

rm -R ~/shoutcast

Das war’s schon! :)

¬ geschrieben von Michael in Tutorials

Reif für die Klapse

10. Juni 2008

0 Kommentare

Du hast einen Stift in der Hand. Nun frage ich dich nach einen Ball. Du behauptest daraufhin, es gibt den Stift nicht und schießt dir ne Kugel in den Kopf. Logisch, oder?

Bescheutertes Beispiel? So was hatte ich gestern mit PHP:

Fatal error: Class ‘Incubator’ not found in /opt/lampp/htdocs/infoman/library/ext/stringparser_bbcode.class.php on line 567

Dabei sieht die genannte Zeile so aus:

$node =& new StringParser_BBCode_Node_Element ($this->_cpos);

Langsam werd’ ich echt meschugge o_O

// Edit:
Lösung gefunden: aus =& einfach = machen und es geht. Sachen gibt’s…

¬ geschrieben von Michael in Allgemein

Wordpress Fluency Admin

6. Juni 2008

1 Kommentar

Über einen anderen Blog (URL finde ich leider nicht mehr), bin ich auf das Fluency Design für Wordpress gestoßen. Kein Design für den Blog selbst - sondern fürs Wordpress Admincenter. Was das bringen soll?

In Wordpress 2.5 wurde die Administration neu gestaltet. Es wurde heller und viel Platz verschwendet: der Header doppelt so groß aber weniger Links und der Editor hat eine feste Größe, bei einem Breitbildschirm eine ziemliche Platzverschwendung. Fluency Admin behebt diese Macken und gibt Wordpress ein komplett neues (sehr hübsches) Design.

Klick mich!

Das Plugin ist sehr konsequent und verändert wirklich jede Ecke:

¬ geschrieben von Michael in Allgemein

Theme von BenediktRB • Powered by Wordpress • Abonniere den RSS Feed