Retrospektive Yii 1.x – PHP MVC Framework mit Vor- und Nachteilen

j

Mehr als ein Jahr ist seit der Veröffentlichung meines letzten Artikels vergangen. In der Zwischenzeit habe ich sehr intensiv mit dem Yii Framework 1.x gearbeitet. Während dieser Zeit habe ich es lieben jedoch auch hassen gelernt. Beide Aspekte möchte ich euch in einer Retrospektive gern nahe bringen.

Als ich vor mehr als einem Jahr mit dem Yii Framework meine ersten Berührungspunkte hatte, war ich begeistert von der Leichtgewichtigkeit und der Effektivität dieses Frameworks. Die steile Lernkurve machte den Einstieg für mich recht einfach. Das Zusammenspiel der Komponenten, Widgets und Assets empfand ich zum damaligen Zeitpunkt als sehr angenehm. Insbesondere die Widgets sind wirklich sehr angenehm und bringen schnell Ergebnisse auf die Straße. Das Active Record Pattern ist sehr leichtgewichtig, was sowohl Vor- als auch Nachteil ist. Die Handhabung der Konfiguration ist sehr gut beherrschbar. Das Migrations Werkzeug ist sehr komfortabel und transparent, da Migrationen in das Versionskontrollsystem eingecheckt werden können.  Read more »

Yii Ajax Problem: mehrfaches Laden gleicher Javascript/CSS Dateien

Yii ist im Zusammenspiel mit Ajax und renderPartial etwas zickig. So kommt es vor, dass Yii bei Ajax Requests identische Javascript- und CSS Dateien wiederholt mit ausliefert. Dies führt jedoch zu schlecht handelbaren Problemen. Auf der Suche nach einer Lösung zu diesem Problem, bin ich auf das Blog von Eirik Hoem gestoßen (wer mehr über die Hintergründe des Problems erfahren möchte, kann sich dort gern belesen). Das dort bereit gestellte Code Snippet habe ich ergänzt da es mit CSS Dateien nicht korrekt umgehen konnte. Das für mich gut funktionierende Script kann sehr einfach in den Header eingebunden werden und damit sind die Probleme ein für alle Male gelöst. Javascript- sowie CSS-Dateien werden nun nicht mehr wiederholt geladen.

Read more »

Yii Framework – das PHP Framework meiner Wahl

Irgendwann stand oder steht wohl jeder PHP-Entwickler einmal vor dem Problem der Auswahl eines geeigneten PHP Frameworks. Bis vor einigen Monaten habe ich mich primär mit selbst erstellten Frameworks herum geschlagen. Nicht das die Frameworks schlecht waren, jedoch verspürte ich mehr und mehr den Drang, bekannte PHP-Frameworks kennen zu lernen. Dies ist nicht zuletzt dem Umstand geschuldet, dass am Markt befindliche Ressourcen nicht kompatibel zu selbst erstellten Frameworks sind (der Aufwand und somit die Kosten sind zu hoch).

So fiel meine Wahl zunächst auf ZEND Framework – das Flaggschiff unter den PHP Frameworks. ZEND ist ein sehr mächtiges aber leider auch ein unterirdisch performantes Framework. Die eigenartige auf Grund von PHP Abwärtskompatibilität angewendete Namespace-Implementierung mit Unterstrichen sowie die Komplexität des ZEND-Monsters haben mich jedoch zunehmend abgeschreckt. Mit ZEND gehen viele Dinge, wirklich sehr viele, aber in der Regel brauche ich diese Dinge nicht. Insofern bestand tief in mir der Wunsch nach einem schlankeren, Ressourcen schonendem und gut dokumentierten Framework Ausschau zu halten. Das Framework sollte zudem einfach konfigurierbar und modular verwendbar sein. Die Möglichkeit Extensions zur Erweiterung des Frameworks einzubinden, setze ich als gegeben voraus.

Read more »

Prototyping von Webseiten einfach gemacht

Das wichtigste vorab – Prototyping von Webseiten ist in vielerlei Hinsicht sinnvoll unverzichtbar. Bereits in einer sehr frühen Phase eines Projektes kann Fehlentscheidungen vorgebeugt werden. So zeigt Prototyping beispielsweise nicht bedachte Schwächen hinsichtlich der Usability und der Gestaltung auf. Nicht zu vergessen – potentiellen Kunden (nicht jeder arbeitet an eigenen Projekten) lässt sich bereits sehr früh ein interaktiver Prototyp präsentieren. Bis zu diesem Punkt halten sich die eigene Aufwände in der Regel in Grenzen, so dass die Überlegung, komplett von vorn zu beginnen, nicht Ad Absurdum führt. Diese Flexibilität gefällt im eintretenden Fall nicht nur dem Kunden. Stellen wir uns vor, man hätte diesen Prototyp bereits in Screen- und Webdesign entwickelt und mit Funktionalität versehen – die bereits investierten Aufwände führen mit Sicherheit zu einer Kostenexplosion!

Read more »

Installation von Pentaho 3.6

Im letzten Artikel Einführung in Business Intelligence mit Pentaho habe ich das Thema Business Intelligence grob angerissen und auf die Notwendigkeit einer Business Intelligence Suite hingewiesen. In diesem Artikel werde ich den Weg zum eigentlichen Tutorial bahnen. Zielstellung ist es, am Ende des Artikels eine funktionierende Pentaho Installation (Community Edition) inklusive der Entwicklertools sowie einer MySQL Datenbank eingerichtet zu haben. Read more »

Einführung in Business Intelligence mit Pentaho

Bevor ich nun groß einsteige, möchte ich vorweg noch eine Buchempfehlung aussprechen – Pentaho Solutions: Business Intelligence and Data Warehousing with Pentaho and MySQL – dieses Buch bietet dem Leser einen guten Einstieg in die Thematik Data Warehouse im Zusammenhang mit der Open Source BI-Suite Pentaho. Das Buch ist entsprechend des Informationsgehaltes relativ dick aber liest sich wirklich gut (englisch). Der Preis liegt bei etwa 40 Euro – das Geld ist aber gut investiert ;-) .

Was bedeutet Business Intelligence?
In der Praxis versteht man unter „Business Intelligence“ meistens die Automatisierung des Berichtswesens (Reporting). Die in den verschiedensten Systemen (ERP, CRM, Buchhaltung, etc.) anfallenden Unternehmensdaten werden genutzt, um unter verschiedenen Blickwinkeln die Situation des Unternehmens zu analysieren und gegebenenfalls bewerten zu können. Sicherlich könnte man eine Analyse der Unternehmenskennzahlen auch “zu Fuß” mittels etlicher Excel-Sheets und dem Einsatz von Pivot-Tabellen vornehmen. Der Aufwand steht jedoch in absolut keinem Verhältnis zum Nutzen. Mit der Vielzahl der eingesetzten Software-Systeme für die unterschiedlichsten Zwecke steigt natürlich auch die Komplexität. Mit Excel gelangt man hier recht schnell an die Grenzen, zumal das auswertbare Datenvolumen durch Excel sowieso begrenzt ist.
Read more »

Neues Design – weiteres Thema: Pentaho Data Warehouse

Vor wenigen Tagen ergriff mich die Lust, auf Webtubes über meine aktuellen Erfahrungen mit dem Business Intelligence Framework Pentaho zu berichten. Zuletzt berichtete ich über teilweise belanglose Dinge, um die schöne Domain nicht verschimmeln zu lassen. Ich gelobe nun Besserung! Es braucht eben manchmal auch eines besonderen Themas, welches nicht bereits 1000.000 mal durchgekaut wurde.

Direkt zum Start meiner Artikelserie über die Entwicklung von Dashboards mittels des Pentaho CDF (Community Dashboard Framework) erschien mir ein Wechsel meines Blog-Designs hin zu mehr Übersicht und Struktur ein notwendiger Schritt. Gedacht…. getan… ich mag klare Designs insbesondere aber schwarz auf weiß (und nicht umgekehrt). Ich hoffe, dass es euch gefällt und wenn nicht, dann gewöhnt euch trotzdem daran. Mir gefällt es nämlich :-) .
Read more »

MySQL – Update mittels JOIN

Nicht selten ist es beim Aktualisieren von Datensätzen notwendig, die Bedingung für in Frage kommende Datensätze bei der Update-Anweisung einzufügen. Wer keine Kenntnis darüber besitzt, wird eine zweite Abfrage vorschalten und das Ergebnis in der eigentlichen Update-Anweisung verwerten.

Dabei ist das Updaten von Datensätzen mittels bei MySQL sehr trivial. Folgende Abfrage aktualisiert alle Datensätze von tabelle1 (aktiv wird auf 1 gesetzt) welche in tabelle2 existieren.

  1. UPDATE tabelle1 AS a
  2. JOIN tabelle2 AS b
  3. ON a.id = b.id
  4. SET a.aktiv=1

Folgende Abfrage setzt das Flag “aktiv” in beiden Tabellen bei Datensätzen, die in beiden Tabellen vorkommen.

Quelltext   
  1. UPDATE tabelle1 AS a
  2. JOIN tabelle2 AS b
  3. ON a.id = b.id
  4. SET a.aktiv=1,
  5. b.aktiv=1

Die Verknüpfung der Tabellen ist beliebig erweiterbar. Selbst Subselects oder Derived Tables sind kein Problem.

MySQL – Löschen mittels JOIN

Unter Umständen ist bei dem Löschen von Datensätzen ein JOIN notwendig. Das Löschen von Datensätzen unter Verwendung eines JOINS unter MySQL ist dabei relativ einfach.

Folgende Operation löscht den Datensatz auf lediglich aus Tabelle 1. Gelöscht werden Datensätze von tabelle1 bei welchen die Bedingungen tabelle1.id = tabelle2.id erfüllt.

  1. DELETE del
  2. FROM tabelle1 AS del
  3. JOIN tabelle2 AS sel
  4. ON del.id = sel.id

Folgende Abfrage löscht Einträge aus beiden Tabellen. Gelöscht werden Datensätze von tabelle1 und tabelle2 bei welchen die Bedingungen tabelle1.id = tabelle2.id erfüllt.
  1. DELETE del,
  2. sel
  3. FROM tabelle1 AS del
  4. JOIN tabelle2 AS sel
  5. ON del.id = sel.id

Die Verknüpfung der Tabellen mittels JOIN ist beliebig (auch mit LEFT JOIN) erweiterbar.

Update: Layer Ads Auszahlung

Layer Ads hat gestern (11. September 2009) alle bis zum 31.05.2009 eingereichten Auszahlungen ausgezahlt. Darunter war nun auch eine meiner Auszahlungen. Ich hatte schon nicht mehr daran geglaubt, aber nach über 3 Monaten vergeblichen Wartens glaubt man an so Einiges nicht mehr.

Wie dem auch sei – es bleibt für den Betreiber S² Media GmbH & Co. KG zu hoffen, das der Zahlungsverzug wieder aufgeholt werden kann und sich der entstandene Imageschaden in Grenzen hält.

Ich bin für meinen Teil zu Bin-Layer gewechselt und werde dort nun schon bald meine ersten Auszahlungs-Erfahrungen sammeln.

stay tuned :-)