Webscraping in PHP mit Guzzle HTTP und Symfony DomCrawler

Im vorherigen Post “CloudStack & Symfony2“ wurde gezeigt, mit welchem Konzept man aus einer Online-Dokumentation einen API Client generieren kann. Angeknüpft daran soll dieser Post anhand eines Beispiels demonstrieren, wie man mit Web Scraping maschinenlesbare Informationen aus Webseiten gewinnt. Heutzutage werden viele API Dokumentationen mit Hilfe von Tools generiert, statt von Hand geschrieben. Ein Trend, der sich grosser Beliebtheit erfreut und durch zahlreiche Tools ermöglicht wird, z.B. mit PHPDocumentor oder Sami. Wir kehren diesen Ansatz um und generieren Code aus einer Dokumentation. Weiterlesen

CloudStack & Symfony2

Cloudbasierte Plattformen, z.B. CloudStack bieten eine API zur Provisionierung und Verwaltung von Infrastruktur on-Demand. Möchte man diese nutzen, kann man auf bestehende Implementierungen zurückgreifen[1] oder einen eigenen Client entwickeln. Entscheidet man sich für die Eigenentwicklung, stellt jede Änderung am API eine Herausforderung dar. Sollte es möglich sein, diese Problematik zu umgehen? Kann man einen Client generieren, der bei API Änderungen Kompatibilität sicherstellt?

In dieser Blog-Serie soll anhand eines Proof of Concepts gezeigt werden, wie man einen PHP API Client dynamisch generieren kann. Der Client soll darüber hinaus in der Lage sein, als Web Applikation zur Skalierung von Drittapplikationen eingesetzt zu werden. So soll es bespielsweise möglich sein Indikatoren aus Nagios abzufragen bzw. kontinuierlich zu überwachen und on-Demand Virtual Machines (VMs) zu provisionieren, sobald bestimmte Lastkennzahlen überschritten werden. Weiterlesen

Lessons Learned: Ist partielle Colocation in Distributed Scrum Teams gefährlich?

Bei YMC setzen wir nun schon seit über einem Jahr fortwährend Distributed Scrum als Framework für unseren Entwicklungsprozess bei einem Kundenprojekt ein. Unser Scrum-Setup zeichnet sich in diesem Fall durch eine geringe Distanz zwischen den Standorten aus, da sich sowohl der Kunde wie auch wir als Beratungs- und Entwicklungsdienstleister mit jeweils einem Standort in der Metropolregion Zürich befinden. Die geringe Distanz ermöglicht uns ohne viel Aufwand zumindest zeitweise die Colocation aller Teammitglieder an einem einzigen der beiden Standorte.

Colocation, in welchem Ausmass auch immer (ständig oder nur zeitweise), ist auch grundsätzlich eine gute Sache. Schliesslich ist in der agilen Softwareentwicklung so viel Colocation wie nur möglich erwünscht. Allerdings konnten wir im Projektalltag mittlerweile auch eine Gefahr ausmachen, die eine zeitweise, d.h. partielle, Colocation in Distributed Scrum mit sich bringt: Dass Distributed Scrum bei seiner Implementierung nicht als solches, sondern als “Remote Scrum” wahrgenommen wird… Weiterlesen

Eine Wunschliste für eZ Publish 5 [Infografik]

Die Weihnachtszeit ist im Gange und das YMC-Büro ist voll festlicher Gesinnung. Schnee fällt, und der Glühwein fließt (natürlich erst nach der Arbeit). Wir feiern das Ende dieses Jahres, sind gespannt auf das Nächste,  und reden viel darüber, was 2013 wohl bringen wird. Ein heißes Thema ist die Zukunft von eZ Publish – welche uns als eZ Advanced Plus Partner verständlicherweise brennend interessiert. Insbesondere unsere Softwareentwickler haben die kürzlich erfolgte offizielle Veröffentlichung von eZ Publish 5 und die zukünftigen Pläne in der Roadmap mit großem Interesse verfolgt. Deshalb haben wir sie gefragt: Was würdet ihr euch vom eZ Publish-Weihnachtsmann wünschen? Welche Pläne in der Roadmap wären wirklich hilfreich? Was würdet Ihr Euch zusätzlich in der Zukunft wünschen? Weiterlesen

Symfony2 insights – Assetic

Wer oft mit vielen statischen Inhalten wie Stylesheets, JavaScripts und Bildern arbeitet, kennt das Problem: Verwaltung, Komprimierung und Einbindung gestalten sich oft nicht einfach. Hier kommt Assetic – ein Asset Management Framework für PHP – zum Einsatz. Das Tool verfügt neben üblichen Management-Operationen über verschiedene Filter, welche automatisierte Mutationen der Inhalte erlauben, verwaltet Caches und integriert sich in die Template-Sprache Twig.

Assetic ist ein Bestandteil des Symfony2 Frameworks, kann aber auch als Standalone benutzt werden. Für die Installation wird in beiden Fällen Composer empfohlen. Um die Beispiele zu implementieren, genügt eine lokale Installation der Symfony2 Standard Edition. Weiterlesen