1. Archiv für August, 2008 - Monatsarchiv

  2. Grundsätzliche Überlegungen für einen Web-Service – Teil 1

    Stefan · 28.08.08, 22:17 Uhr · Konzepte, ZendFramework · 2 Kommentare

    Momentan arbeite ich an einem Projekt, das neben den normalen Arbeitsweisen eines CMS zur Verwaltung von Web-Inhalten (Ein-/Ausgabe der Inhalte), Teile dieser Inhalte einem ausgewählten und noch nicht näher spezifiziertem und erlauchtem Kreis von Partnern zur Verfügung gestellt werden sollen.

    Vorweg gesagt: Bisher haben wir noch nicht eine Zeile Code geschrieben, sondern uns eher um grundsätzliche Fragen und Aufgabenstellungen Gedanken gemacht.

    Die Ausgangssituation mit den wichtigsten Eigenschaften ist folgende:
    » Kompletten Beitrag lesen

  3. Demnächst: MT4 Plugin MultiGallery

    Stefan · 19.08.08, 22:48 Uhr · Allgemeines, Movable Type · Keine Kommentare

    Wir nutzen für einige unserer Websites die Blog-Plattform MovableType 4, die sehr schön wartbar und gerade auch für Entwickler und Designer sehr flexibel und mächtig ist.

    Da wir mitunter sehr spezielle Anforderungen an die Websites und deren Features haben, kommen wir oftmals mit Standard-Lösungen nicht weiter. So fehlte uns für die OpenSource Variante von MovableType, die Limitierungen gegenüber der Community-Version im kommerziellen Einsatz besitzt, vor allem ein Plugin, um Bildergalerien innerhalb eines Eintrags frei einzubetten und dazu noch die Möglichkeit, mehrere davon in einen Eintrag zu platzieren. Um dieses Problem zu lösen, habe ich die letzten Wochen ein Plugin entwickelt, das sich in den „Bild einfügen“-Dialog von MovableType setzt und sehr einfach zu handhaben ist:
    » Kompletten Beitrag lesen

  4. PHP-Tipp: Dateipfad zu Array

    Stefan · 11.08.08, 20:20 Uhr · PHP, Programmierstil, Tutorials · Keine Kommentare

    In einem Projekt benötigte ich aus diversen Gründen einen mehrdimensionalen Array aus einem Dateipfad. Aufgabenstellung ist recht klar und hört sich eigentlich einfach an, ist es aber leider nicht wirklich. Problem: der Pfad kann je nach Datei eine unterschiedliche Tiefe haben.

    Mein Ursprungsarray schaute wie folgt aus:

    $elements = array();
    $elements["dir1/dir2/dateiname.jpg"] = array("name" => "dateiname.jpg", "filesize" => "12345");
    $elements["dir1/dir2/dateiname2.jpg"] = array("name" => "dateiname2.jpg", "filesize" => "21534");
    $elements["dir2/dir1/dateiname1.jpg"] = array("name" => "dateiname1.jpg", "filesize" => "12345");
    $elements["dir2/dir1/dir1/dateiname1.jpg"] = array("name" => "dateiname1.jpg", "filesize" => "12345");
    $elements["dir2/dir2/dateiname1.jpg"] = array("name" => "dateiname1.jpg", "filesize" => "12345");

    Um daraus nun einen mehrdimensionalen Array zu erstellen gibt es verschiedene Möglichkeiten:

    1. Angenommen, alle Dateien liegen in gleichen Verzeichnistiefen, so kann man das über verschachtelte for/foreach-Schleifen fest reincodieren – beim obigen Beispiel funktioniert das leider nicht.
    2. Wir bauen uns eine rekursive Funktion die man jedes Mal mit dem erzeugten Ergebnis aufruft – das ist leider relativ langsam durch den function call
    3. Wir verwenden Schleifen mit referenzen auf den Urspungsarray

    Und genau den dritten Punkt habe ich folgendermaßen umgesetzt:
    » Kompletten Beitrag lesen

  5. Endlosschleifen in Zählschleifen verhindern

    Stefan · 09.08.08, 10:32 Uhr · Programmierstil · 2 Kommentare

    Gestern war kein guter Tag: Wir haben ein CMS einer unserer Websites aktualisiert und anfangs ging alles gut, allerdings ca. eine Stunde später ging gar nichts mehr – großes Rätselraten, da lokal alles funktionierte. Nach dem Debuggen der Anwendung haben wir den Übeltäter gefunden: In einem Fremdscript, das schon lange vor dem Update eingesetzt wurde, versteckte sich eine Endlosschleife die nur unter bestimmten Bedingungen eintritt. Folgendes ist passiert:

    Eine Schleife soll aus einer Liste mit Einträgen die letzten drei Einträge ausgeben, die nicht einer bestimmten Kategorie zugeordnet sind. Gelöst wurde das ursprünglich so:

    for ( $i = 0; $i < 3; $i++) {
       if ($entry[$i]["category"] == "xyz") {
          $i––;
          continue;
       }
       // anderer code hier
    }

    Ganz böse Idee! Warum? Sobald ein Eintrag die entsprechende Kategorie aufweist, die ausgelassen werden soll, wird der Schleifenzähler wieder zurückgesetzt. Da der Eintrag allerdings nicht manipuliert wurde und somit immer wieder auf den dafür verantwortlichen Eintrag trifft, der den Schleifenzähler wieder zurücksetzt, entsteht die Endlosschleife.

    Eine kleine Änderung der Schleife löste das Problem: 

    $maxcount = 3;
    $counter = 0;
    $totalEntries = count($entry);
    
    for ($i = 0; $i < $totalEntries; $i++) {
       if ($entry[$i]["category"] == "xyz") {
          continue;
       }
    
       // mach irgendwas
    
       $counter++;
       if ( $counter == $maxcount) {
          break;
       } 
    }
    

     
    Ganz wichtig: Schleifenbedingungen in einer Schleife dynamisch zu ändern sollte man nur tun, wenn man weiß, was es für Auswirkungen hat und ist in den meisten Fällen eine blöde Idee! Kommt man trotzdem nicht darum Schleifenbedingungen zu ändern (z.B. in einer While-Schleife die einen bestimmten Zustand erwartet) sollte immer eine Fallback-Lösung implementiert werden, falls Bedingungen nicht eintreffen (z.B. Schleifendurchgänge zählen und ab einem bestimmten Wert aus der Schleife herausspringen)

  6. PHP 5.3 alpha1 released

    Stefan · 01.08.08, 12:18 Uhr · Allgemeines, PHP · Keine Kommentare

    PHP hat heute die <a href="http://www.php.net/archive/2008.php#id2008-08-01-1″>Version 5.3 alpha1 released, die ein paar schöne Neuerungen wie Namespaces hat. Ich hoffe die Entwicklung schreitet zügig voran, so dass wir PHP 5.3 bald auf Produktivsystemen einsetzen können.

Gehe zur polyCODER Startseite