Inhalt überspringen

Artikel getagged ‘’

1
Jun

[PHP] Der include path

Oft liest man, dass man bestimmte Verzeichnisse in den sog. include path aufnehmen soll oder im include path irgendwelche scripts ablegen soll und das meist ohne weitere Erklärung. Der Include Path und das Administrieren des Selbigen gehört also mehr oder weniger zu den Grundkenntnissen. Dennoch ist es für viele ein Mysterium.
Da ich gestern ein wenig damit gearbeitet habe, dachte ich, ich blogge mal ein wenig drüber. Warum? Weil ichs kann. Und weil ich eine kleine Hilfestellung zum Thema path im Allgemeinen und dem PHP include path im Speziellen zur Verfügung stellen möchte.

Weiterlesen

4
Mai

[yii] Globale Installation unter Linux

Jaaa, richtig, ich arbeite zur Zeit mit dem yii-Framework. Und ich finde es toll :)

1. Die Installation

ghost@spacebox:~$ sudo -s
root@spacebox:~$ cd /var/www/lib
root@spacebox:/var/www/lib$ svn co http://yii.googlecode.com/svn/trunk/framework yii

2. Updaten des Frameworks

ghost@spacebox:~$ sudo -s
root@spacebox:~$ cd /var/www/lib
root@spacebox:/var/www/lib$ svn up

3. Das Kommandozeilen-Tool im PATH ablegen:

ghost@spacebox:~$ sudo ln -s /var/www/lib/yii/yiic /usr/bin/yii

Absofort steht der Befehl "yii" in der bash zur Verfügung.

4. Anpassen der Applications

Die index.php jeder Application musst angepasst werden, damit das Framework gefunden wird:

<?php
    set_include_path('/var/www/lib/yii');

    define('DIR', dirname(__FILE__));
    define('YII_DEBUG', true);
    define('YII_TRACE_LEVEL', 3);

    $config = DIR . '/app/config/main.php';

    require_once('yii.php');
    Yii::createWebApplication($config)->run();
4
Mai

[Links] HTML/CSS/JS Best Practises

Viel Spaß damit ;)

3
Mai

[Linux] Apache/MySQL/Eclipse PDT unter Ubuntu einrichten

Hier eine kurze Anleitung wie man sich unter einem aktuellen Ubuntu eine Entwicklungsumgebung mit Apache, MySQL und PDT einrichtet.

 

Schritt 1: Das Arbeitsverzeichnis

Zuerst legen wir uns ein Arbeitsverzeichnis an, der Eclipse-Workspace. Hier werden später die Projekte abgelegt. Außerdem dient das Verzeichnis als DocumentRoot für den Apache:

ghost@spacebox:~$ mkdir workspace

Fertig. Langweilig, ich weiß ;)

 

Schritt 2: Der Apache

Installieren des Apachen mit mod_php5:

ghost@spacebox:~$ sudo aptitude install apache2 libapache2-mod-php5

Einrichten der DocumentRoot:

ghost@spacebox:~$ sudo vim /etc/apache2/sites-avilable/default

Es öffnet sich der vim mit der default site, welche wir wie folgt anpassen ([i] zum Bearbeiten):

<VirtualHost *:80>
    DocumentRoot /home/ghost/workspace

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    <Directory /home/ghost/workspace>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    (...)
</VirtualHost>

[esc], ":wq", [enter] speichert und schließt die Datei.

Anschließend muss der Apache reloaded werden, das funktioniert wie folgt:

ghost@spacebox:~$ sudo /etc/init.d/apache reload

Zum Testen legen wir innerhalb des workspace-Verzeichnisses eine index.php an:

ghost@spacebox:~$ cd workspace
ghost@spacebox:~/workspace$ echo 'Hallo Welt!'  > index.php

Im Anschluss dazu rufen wir im Browser die URL "http://localhost/index.php" auf.
Wir erhalten eine weiße Seite und ein "Hallo Welt!".

 

Schritt 3: Der MySQL-Server

Zuerst den MySQL-Server und den Client installieren:

ghost@spacebox:~$sudo aptitude install mysql-client-5.1 mysql-server-5.1

Während der Installation wird man dazu aufgefordert ein root-Passwort für den MySQL-Server festzulegen, dort ein beliebiges Passwort eingeben und selbiges bitte merken ;)

anschließend ein Verbindungstest zum Server:

ghost@spacebox:~$ mysql -h localhost -u root -p

Nach der Eingabe des korrekten Passworts, welches wir eben bei der Installation festgelegt haben, startet die mysql-Shell:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 34
Server version: 5.1.41-3ubuntu12 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
 

 

Schritt 4: Die PDT

Die PHP Development Tools ist eine auf Eclipse basierende Entwicklungsumgebung für PHP.

Zuerst laden wir uns das tar.gz-Archiv, welches wir auf der offiziellen Website finden und entpacken dieses anschließend nach /opt/eclpse:

ghost@spacebox:~/Desktop$ sudo tar xvzf eclipse.tar.gz -C /opt/

Über einen Rechtsklick auf das Gnome bzw KDE-Menü kann mit Hilfe des "Menü bearbeiten"-Tools ein Menü-Eintrag für Eclipse angelegt werden. Der Befehl zum starten von Eclipse lautet:

/opt/eclipse/eclipse

 

Nun stehen  Apache und MySQL zusammen mit PDT zur Verfügung. Der Apache und der MySQL-Server starten bei jedem Booten des Systems automatisch und müssen daher nicht manuell gestartet werden.

4
Nov

[Codeigniter] Start der Tutorial-Reihe

Dies ist der einleitende Beitrag zu meiner Tutorial-Reihe über das OpenSource PHP-Framework Codeigniter.

In dieser Artikel-Reihe, die ich unregelmäsig fortführen werde, möchte ich euch das Codeigniter-Framework etwas näher bringen.

Ich selbst habe schon einige Projekte mit diesem Framework umgesetzt bzw. arbeite gerade mit dem Framework und kann es mir aus meiner täglich Arbeit kaum noch wegdenken.
Es war das erste PHP-Framework, mit dem ich Kontakt hatte und bei dem ich auch geblieben bin nachdem ich symfony und cakePHP ausprobiert und einige andere Frameworks überflogen habe.

Hier erstmal das Inhaltsverzeichnis des Tutorials. Die Links werde ich entsprechend immer ergänzen, sobald der jeweilige Artikel online ist.

  • Die Einleitung: Was ist Codeigniter?
  • Teil 1: Wie installiere ich das Framework?
  • Teil 2: Grundlagen
  • Teil 3: MVC? Kann man das essen?
  • Teil 4: Der erste Controller
  • Teil 5: Was der User sieht: Views
  • Teil 6: Auf dem Catwalk: Models
  • Teil 7: AJAX, jQuery und Codeigniter
  • Teil 8: Die Session-Library
  • Teil 9: Helper und Libraries – Marke: Eigenbau
  • Teil 10: Mehr Power für das Framework: Hooks
  • (…)

Das ist also der Plan. Wer sich hier noch weitere Themen wünscht, darf sich gerne dazu äußern. Evtl. kann man ein paar Artikel in Gastartikel auslagern, mal sehen ;)

Los geht es in diesem Beitrag. Erstmal ist natürlich zu klären, was Codeigniter eigentlich ist und was für seine Verwendung spricht.

21
Sep

[Projekte] ViewController 0.1.1

Habe gerade noch ein paar Bugfixes an meinem ViewController vorgenommen. Außerdem findet sich das Script nun in meinem Portfolio wieder.

:)

24
Aug

[Codeigniter] ViewController

Leider liegt dem Codeigniter-Framework kein ordentlicher ViewController bei, der die Verwaltung der Views erleichtert bei. Da ich aber dennoch nicht darauf verzichten möchte, habe ich mir hierfür einen Hook geschrieben, der diese Lücke im Framework füllt.
Und natürlich teile ich dieses wundervolle Stück Code gerne mit euch ;)

Wie ihr den Hook installiert und verwendet erkläre ich euch in diesem Artikel. Ich hoffe es hilft euch weiter. Für Verbesserungsvorschläge und Bugreports bin ich natürlich immer offen.

Hier erstmal das tgz-Archiv zum Downloaden.

1. Einführung

Ich gehe mal davon aus, dass ihr bei eueren Projekten zumeist eine head.php in dem view-Verzeichnis liegen habt. Diese beinhaltet das öffnende HTML-Tag, den HEAD-Tag, den öffnenden BODY-Tag und ein wenig HTML-Code im Body. Die Datei wird bei jedem Request vor dem eigentlichen Content der Seite geladen. Dazu gibt es wahrscheinlich noch eine foot.php und vielleich noch eine navigation.php oder sowas ähnliches. Also praktisch den "Frame", welcher alles um den Content außenrum darstellt.

Natürlich ist es nun unschön diese Dateien in jeder Controller-Action laden zu müssen. Dies und noch mehr soll der ViewController erledigen.

19
Aug

HTML-/CSS-Performance Optimierung – Teil 1

Ja, ihr habt richtig gelesen: es geht um HTML und CSS Performance! Ein Thema über das sich die Wenigsten Gedanken machen. Leider.

Über Serverseitige Optimierung von PHP-Scripts, MySQL-Queries, Webserver etc. liest man ja mehr als genug. Leider aber kaum über die Client-Seitige Optimierung. Aber was bringt es dem User, wenn das PHP-Script in 0,09 statt in 0,25 Sekunden ausgeführt wird, wenn das Übertragen der Daten un das clientseitige Rendern der Seite 15 Sekunden dauert? Klar, hauptsache das PHP-Skript ist flott. Glückwunsch. Super. Gut gemacht!

Die Performance-Optimierung von Websiten betrifft längst nicht nur die serverseitige Abarbeitung des Requests, sondern auch das was mit den Daten passiert nachdem sie den Webserver verlassen haben. Aus diesem Grunde möchte ich euch heute (und im Teil 2, Teil 3, …) ein paar Tricks und Praktiken zeigen, die euch dabei helfen können, euere Websites effizient und sinnvoll auf Performance zu optimieren.
Der ganze Spaß hat natürlich auch einen Usability- und Marketing-Faktor. Seiten, die lange laden, wirken unsymphatisch und qualikativ minderwertig. Und kein User bleibt gern länger als nötig auf einer solchen Präsenz.

14
Aug

[PHP] Fiese PHP Skripte: Obscurity Code

Nils hat zum Verfassen von fiesen PHP Skripten aufgerufen. Dem bin ich natürlich gefolgt.

Zuerst die Frage: Was meint er denn überhaupt? Da ich mir nicht ganz im Klaren war, was Nils mit "fies" meint, habe ich mir überlegt ..

  • … das Skript könnte etwas fieses mit dem System anstellen: na ja find ich persönlich jetzt nicht so spannend. Fork Bombs gibts zu genüge und das geht mit Perl sowieso schöner …
  • … das Skript könnte einfach extrem schlecht programmiert sein: Lustig ist es ja. Aber auf Kommando schlechten Code zu produzieren ist schwerer als man glaubt *g*
  • … das Skript könnte sehr unsicher sein: Na gut, das ist nicht schwer, das sieht man oft genug.
  • … das Skript könnte interessante Syntax-Features verwenden und am Ende aussehen wie ein zusammengehacktes, unleserliches PERL-Script: Das klingt doch lustig ;)

Also habe ich mir angesehen, was man in PHP exotisches mit der Syntax anstellen kann und bin auch fündig geworden. Außerdem habe ich selbst noch ein wenig rumporbiert. Ergebnis ist folgender Code.

Wobei ich mir hier auch das Prinzip der "security by obscurity" zu Nutze gemacht habe und das Skript einfach extrem unleserlich geschrieben habe. Fies eben ;)

Hier ein paar Merkmale des Codes:

  • Keine ordentliche Kapselung
  • "€" als Namen für Methoden und Funktionen funktioniert
  • "_" als Klassenname
  • Sehr unleserlich, da die Methoden namen in einem Array abgelegt ist und die Methoden dann dynamisch aufgerufen werden
  • Es is auch ein Singleton-Pattern implementiert *g*

So würde das in der Praxis natürlich niemand machen. Aber es geht.
Keine Angst vor dem Ausführen: Das Script gibt einfach nur Zahlen von 0-10 mit Einrückung aus.

<?php
	$f=_::€0();for(;_::$i->c<_::$f[4]();){_::$i->$f[3]()||_::$f[1]((_::$i->c<10?' '._::$i->c:_::$i->c));}

	class _{var $c;static $i;
		static function €0(){self::$i = new _;return array('€0','€1', '€2', '€3', '€4');}
		static function €1($t){echo $t."\n";}
		function €3(){$this->c++;}
		static function €4(){return 10;}}
28
Jul

[CSS] Horizontale Navigationen

Heute mal etwas für diejenigen, die weniger Erfahrung mit dem Webdesign haben =)

Horizontale Navigationsleisten sind total in und sind leichter umzusetzen, als man denkt. Ich möchte euch hier kurz die saubere Variante vorstellen, wie man ein horizontales Menü mithilfe von CSS gestaltet.

Früher hat man für sowas Tabellen verwendet, das ist aber mittlerweile ziemlich unprofessionel. Schöner ist die Umsetzung mit Listen (UL-Tags) und wie das funktioniert, zeige ich euch jetzt.

Das Ergebnis des How-Tos wird wie folgt aussehen:

Los gehts!

Folgende HTML-Sturktur benötigen wir für unsere Navigation

<ul id="navi">
    <li><a href="index.html">Home</a></li>
    <li><a href="about.html">&Uuml;ber mich</a></li>
    <li><a href="portfolio.html">Portfolio</a></li>
    <li><a href="contact.html">Kontakt</a></li>
    <li><a href="impress.html">Impressum</a></li>
</ul>

Dieser HTML-Code definiert eine ungeordnete Liste mit 5 Punkten, jeder dieser Punkte beinhaltet einen Link, welcher einem Menüpunkt entspricht. Um das UL-Element besser über CSS selektieren zu können, haben wir ihn die ID "navi" zugewiesen.

Das Ergebnis sieht wie folgt aus:

Nun geht es an das Layouten der Liste.