test.ical.ly | getting PHP by the balls

Feb/10

17

Symfony Live 2010 – Tag 2

Noch vor wenigen Tagen soll es in Paris geschneit haben und alles war voll mit Eis und Matsch. Davon ist nichts mehr zu merken und wir gehen bei Sonnenschein los zur Konferenz. Auf dem Weg konnten wir noch ein paar Kollegen aus Italien aufgabeln. So soll’s sein. :)

Jedenfalls war der erste Konferenz Tag von vorne bis hinten ein Erfolg!

Update! Mitllerweile sind die Präsentationen des ersten Tages zusammengetragen worden unter http://symfony.isgonna.be/explained/symfony-live-2010-slides/

Internationalisierung mit Thomas Rabaix

Thomas Rabiax

Thomas Rabiax

Das symfony I18n Feature kommt eigentlich aus dem Prado Framework. Die Sprache definiert sich in symfony über die sogenannte culture, die als Locale angegeben wird (de_DE, de_AT oder einfach nur de, wobei de_AT auf de zurückfällt, wenn de_AT nicht vorhanden ist).

Diese Spracheinstellungen können sowohl in URLs auftauchen und somit Teil des Routings sein, sie können zusammen mit dem __() Helper genutzt werden, um Templates zu übersetzen und sie können auch dafür sorgen, dass Inhalte aus der Datenbank in mehreren Sprachversionen vorliegen. Dieses wird unterstützt von Doctrine und Propel.

Dieses war wohl die erste Präsentation von Thomas, was man zwar merkte, was aber überhaupt nicht unangenehm war.

Eine Sache, die sich für mich sofort gelohnt hat, war eine Folie auf der er Beispiele des format_date() Helper in zwei Sprachen gezeigt hat. Sowas hab ich immer wieder gesucht, denn das kann ich mir einfach nicht merken. :)

Außerdem hat einen sehr guten Überblick gegeben, wie man dieses Feature im symfony Form Subframework verwenden kann und sollte.

Mit dem mgI18nPlugin hat er eine schöne Möglichkeit vorgestellt, wie die internationalisierten Daten direkt auf der Website gepflegt werden können, was wesentlich leichter fällt, asl der händische Prozess, der wirklich nervtötend ist. Ob das wirklich Praxis-Bestand haben kann, muss sich zeigen.

Arbeiten mit dem Admin Generator mit John Cleveley

John Cleveley

John Cleveley

Zitat: “Now I’m actually using Zend Framework but don’t throw anything at me, I really miss symfony.” :)

Seit symfony 1.0 hat sich einiges getan, das neue Form Subframework bringt mehr Möglichkeiten aber auch Komplexität, Relationen zwischen Modellen funktionieren jetzt out of the box, es gibt Batch Actions und wesentlich mehr und kleinere Templates zum überladen. Zusätzlich hat man mit den Generator Configuration und Generator Helper Klassen noch viel mehr beeinflussen und übersteuern.

Allerdings sollte man den Admin Generator nur verwenden, wenn es zu den Anforderungen passt. Wenn absehbar ist, dass der Kunde viele viele komplizierte Sonderwünsche haben wird, dann ist es vielleicht nicht das richtige Tool und nur schwer im nachhinein zu korrigieren.

John präsentierte uns seine Version der 10 (Admin) Gebote:

  1. Verstehe den Workflow der User
  2. Denke früh an Security
  3. Lese die gecachten/generierten Dateien für besseres Verständnis
  4. Ändere die table_method um die DB Abfragen zu verringern
  5. Gebrauche eine spezielle Admin Generator Klasse
  6. Form Konfiguration muss in den forms bleiben
  7. Erstelle ein Theme
  8. Denke an kleine Bildschirme!
  9. Functional Tests
  10. Befolge den MVC Pattern

Ein weiteres interessantes Details war, dass man mit embedRelation() zwar Relationen in Forms integrieren kann, aber das Hinzufügen/Löschen ist damit nicht möglich. Allerdings stellt das ahDoctrineEasyEmbeddedRelationsPlugin die Methode embedRelations() (Plural) zur Verfügung, die diesen Misstand ausräumt.

Cloud and evolution of the Microsoft platform TBA

Pierre und Laurent von Microsoft

Pierre und Laurent von Microsoft

Das muss die schwierigste Session von allen gewesen sein. Der ganze Laden voller PHP Entwickler und Linux Nutzer und die beiden sollen über den aktuellen Stand von PHP unter Windows/IIS berichten. Die Armen.

Ein witziges Detail war, dass die PHP Entwicklung unter Windows so lange missachtet worden war, dass einige der Module nur noch als 10 Jahre alte Binaries vorliegen, weil der Sourcecode entweder nicht mehr da ist oder zumindest aber nicht mehr kompiliert. :)

PHP 5.3 ist aber wieder ok und kompiliert auch unter VC9 (nicht nur unter VC6 wie PHP 5.2). Es damit wesentlich schneller, aber es sind auch weniger Module verfügbar. Noch ein interessantes Detail: Die Prioritäten mit denen die PHP Module nacheinander umgesetzt werden, richten sich nach deren Nachfrage in PHP Frameworks und Applikationen wie Drupal, WordPress und eben auch symfony und andere. Der aktuelle Stand ist unter windows.php.net einsehbar.

Das zweite Thema was der Microsoft Cloud Hosting Ansatz Microsoft Azure. Eigentlich ist da nicht viel zu zu sagen. Ich jedenfalls kann mir nicht vorstellen meine Applikationen auf IIS laufen lassen zu wollen auch wenn das Hosting zur Erfahrungsgewinnung unter www.microsoft.com/web teilweise kostenfrei sein soll.

Sollte das aber jemand anders sehen, es gibt wohl auch eine Eclipse/PDT Integration ähnlich wie von Aptana.

Symfony Internas mit Geoffrey Bachelet

Geoffrey Bachelet

Geoffrey Bachelet

Goeffreys Vortrag war eine Art Schnelldurchlauf durch die symfony Innereien. Ich habe im Grunde nichts neues gehört, er hat die settings.yml und die factories.yml erklärt, die verschiedenen Konfigurations Klassen und sfContext. Er hat die Filter Chain erklärt und vieles mehr.

Für symfony Anfänger sollte das meiner Ansicht nach aber wertvoll gewesen sein, weil wirklich alle spannenden Teile mindestens genannt und umrissen wurden, einige hätte man sonst vermutlich ewig gesucht.

Doctrine Migrationen mit Dennis Benkert

Dennis Benkert

Dennis Benkert

Wenn ich in meiner Applikation die Datenstruktur ändere ist das eine Sache, aber wie bekomme ich die Änderungen auf die Produktiv Umgebung?

Hier setzt Dennis mit seinem Beitrag über Doctrine Migrations an. Mit diesem Feature ist es recht einfach definierte Wege einer Änderung zu schaffen. Mit einfachen Automatismen sind diese Änderungen dann einspielbar. Die Migrationen liegen dabei als Klassen vor, die eine up() und eine down() Methode bereitstellen. So kann ich von einer Version auf die andere springen, unabhängig von Abstand oder Richtung.

Ich habe dabei als Entwickler nicht nur die Möglichkeit, alle einzelnen Änderungen dort niederzuschreiben, sondern vor allem kann ich sie auf nicht produktiv Daten testen, bis ich mir wirklich sicher bin und lasse sie erst dann auf die richtigen Daten los, wobei ich mir sicher sein kann, dass ich nichts vergessen habe. Ist ja ein Automatismus.

Aufpassen muss man lediglich bei Änderungen, die nicht rückgängig gemacht werden können, wie z.B. das löschen einer Spalte mit Inhalten oder das Konkatinieren von Spalten etc.. .

Anders als angekündigt hat lime Testing in Dennis’ Vortrag keine Roll gespielt.

Doctrine 2 – Was ist neu? mit Jonathan Wage

Jonathan Wage

Jonathan Wage

Vielleicht für mich der spannendste Vortag heute und es gab sehr viel Informationen zu Doctrine 2. Nicht alles war neu, einiges konnte man schon auf Blogposts oder auf Slideshare nachlesen. Aber alles in allem hat Jonathan einen sehr guten Überblick über den aktuellen Doctrine 2 Entwicklungsstand und vor allem über die dahintersteckenden Konzepte gegeben. Ich versuche mal alles in Stichsätzen wiederzugeben.

Für die Entwicklung verwendet wurden u.a. PHPUnit, Phing, Symfony YAML Component, Sismo, Subversion, Jira und Trac. Und nein, Sismo gibt es noch immer nicht frei verfügbar für alle.

Doctrine 2 basiert auf PHP 5.3 und ist wesentlich schneller geworden. Es gibt eine komplett neue  Codebase, wobei die Entwicklung von Doctrine 2 bereits vor dem Release von Doctrine 1 gestartet wurde.

Eine Vorgabe für die Neuentwicklung war: No Magic! Genau die Magie, die in Doctrine 1 vieles möglich macht, macht es auch schwierig Grenzfälle umzusetzen und Fehler zu debuggen. Das heisst auch: Accessors und Mutators werden wieder generiert!

Records sind nun Entities und erben nicht mehr von zentralen Klassen. Für Ihre Persistenz ist nun der Entity Manager zuständig. Business Objekte und Persistenz sind also nun vollständig getrennt ähnlich wie die Java Persistence API. Objekte können aber auch vom Entity Manager detached werden, damit sie nicht persistiert werden.

Das Migration Feature mit dem Migration Diff Tool existiert aber nicht mehr. Stattdessen gibt es das Schema Comparision Feature. Eine Migrations Extension wird aber folgen und das Deployen von Änderungen noch einfacher machen..

DQL hat nun einen AST (abstract syntax tree) Parser und ist als EBNF formulierbar. Das ermöglicht viel genauere Exceptions, so dass mein DQL Query nicht nur fehlschlägt, sondern mir auch genau sagt mit welchem Wort ich einen Fehler gemacht habe.

Die Cache Driver sind auch nach Doctrine 1.2 gebackgeportet worden. Coolstes Feature hier sind die invalidierungsmethoden deleteByPrefix(), deleteBySuffix(), deleteByRegex(). Damit lässt sich (auch heute schon) sehr effizient arbeiten.

Schön zu sehen ist, dass nun neben der Mapped Superclasses Vererbung und der Single Table Vererbung auch endlich Class Table Vererbung möglich!

Desweiteren sind Native Queries sind supprtet, wodurch man z.B. DB spezifische und komplizierte queries selber schreiben kann, ohne dabei auf den rest von Doctrine verzichten zu müssen.

Puuh, das war ne Menge Holz.. :)

Offline Admin Generator mit HTML 5 und Google Gears mit Thomas Parisot

Thomas Parisot

Thomas Parisot

Wie kann man HTML5 oder Google Gears dazu bringen ein komplettes Admin Backend Offline verfügbar zu machen mit einer nachgelagerten Synchronisierung?

HTML5 bietet u.a. die Möglichkeit einen lokalen Data Storage zu nutzen und mit Gears kann ebenfalls ich einiges an Business Logik auf den Browser auslagern. Aber es bleibt laut Thomas noch eine Menge Arbeit zu tun.

Deswegen hat er das Plugin cleverOfflineAdminGeneratorPlugin geschrieben, welches uns genau die Aufgabe abnehmen will.

Ich muss ehrlich sagen, es war nicht einfach dem Ganzen zu folgen. Nicht weil der Vortrag doof war, sondern weil ich mich mit dieser Thematik noch überhaupt nicht beschäftigt habe und somit viele Dinge einfach nicht im Detail nachvollziehen konnte.. :(

Aber die Live Demo war schon beeindruckend und wirkte gut durchdacht. Um nicht zu sagen: ich hätte gerne jetzt sofort das selbe Feature für mein WordPress Blog.. ;)

Die symfony Community – Wie kannst du/kann man dir helfen? mit Stefan Koopmanschap

Stefan Koopmanschap

Stefan Koopmanschap

Stefan ist nach Kris Wallsmith der aktuelle symfony Community Manager und stellte seine Vision einer funktionierenden Community dar.

Ich will da überhaupt nichts schlechtes zu sagen, denn es war unterhaltsam und alles mehr als richtig, was er sagte. Nur eben neu ist das nicht und vielleicht etwas langweilig für diesen Blogpost. Es ging um Netiquette, die Mailingslisten, IRC, Twitter und Community getriebene Anstrengungen wie den symfony Bug Hunt Day oder das  symfony Camp welches in diesem Jahr wieder stattfinden soll. Es ging um Networking, Business Opportunities und Reputation.

Wie zum Beweis hat Stefan seinen aktuellen Job bekommen, nachdem er getwittert hatte, dass sein letzter Vertrag ausläuft und sein da schon erlangter Bekanntheitsgrad hat ihm so geholfen.

Also: Schreibt Tickets, Patches, Dokumentation, Blogs, Magazin Artikel, irgendwas, tretet der LinkedIn Gruppe symfony bei und zeigt euch auf Symfonians!

Diskussionen mit dem Kern Team

Symfony Core Team

Symfony Core Team

Mit ein er langen Frage und Antwort Runde ging der Tag vorbei. Neben allerlei kleinen und grossen Fragen sind mir vor allem zwei Dinge im Gedächnis geblieben:

  1. phpBB Version 4 wird auf Symfony 2 aufsetzen! (Vermeldete einer der phpBB Entwickler im Publikum)
  2. Symfony 2 wird das Zend Framework für Caching und Logging verwenden! (Vermeldete Fabien selbst)

Mit diesen Eindrücken und noch ein paar Bildern, geht für mich der Tag zu Ende und ich werde jetzt mit Kollegen und den Jungs von Ideato Essen gehen. :)

RSS Feed

8 Comments for Symfony Live 2010 – Tag 2

Basti | 17. February 2010 at 06:47

Danke für den ausführlichen Beitrag und die viele Mühe, die du dir gegeben hast :)
Obwohl ich selbst ausschließlich mit dem ZFW arbeite, fand ich deine Ausführungen zum SF sehr interessant, auf Doctrine 2 bin ich auch sehr gespannt.

Weiter so und viele grüße

Author comment by Christian | 17. February 2010 at 09:18

@Basti vielen Dank für dein Feedback! Cool zu wissen, dass mein Geschreibsel für jemanden irgendwie relevant ist. :)

Прошла конференция Symfony Live 2010 | Блог веб-разработчика | 17. February 2010 at 19:47

[...] Symfony Live 2010 – Tag 2 [...]

Ralph Meier | 17. February 2010 at 21:01

Also ich lese Deinen Blog immer und finde ihn qualitativ einer der besten PHP Blogs die es momentan in der deutschen Szene so gibt.

Jörg Basedow | 17. February 2010 at 21:01

Kleine Usability Frage: Warum gibts auf dieser Seite eigentlich keinen Link auf den related Post “Symfony Live 2010 – Tag 1″? ;-)

Jörg Basedow | 17. February 2010 at 21:01

Ich nehm alles zurück…ganz unten ist er…

Author comment by Christian | 17. February 2010 at 21:02

@Ralph *wow* Danke für die Blumen! Ich hoffe ich kann das Niveau halten.

Author comment by Christian | 18. February 2010 at 21:07

ich wollte dir gerade nen Screenshot zum ailen mit nem dicken Kreisel drum! ;)

Leave a comment!

<<

>>

Find it!

Theme Design by devolux.org