PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Archive for the ‘PHP’ Category

Der Vier Gewinnt Server zur iBuildings Challenge

with 20 comments

ibuildings hat Anfang diesen Jahres einen Wettbewerb gestartet bei dem man ein möglichst gut spielendes Vier-Gewinnt PHP-Script erstellen soll. Der Einsendeschluss ist der 31.03.2011, ihr könnt also auch noch teilnehmen! Da ich auch eine KI erstellt habe (bin sehr gespannt auf das Ergebnis des Turniers) möchte ich hier meine kleine Vier-Gewinnt-Webseite vorstellen, die ich während der Umsetzung erstellt habe. Man kann hier gegen meinen Vier-Gewinnt-Server spielen, entweder auf der Webseite mit einem Javascript-Vier-Gewinnt-Frontend, oder aber mit einem PHP-Konsolen-Client.

Ihr könnt euch also auch an dieser Aufgabe probieren, eine KI in PHP zu erstellen, und dann gegen den Server anzutreten. Auf dem Server habe ich aktuell 4 Gegenspieler implementiert, die verschiedene Schwierigkeitsstufen haben:

  • Spieler 1: Rudi Random. Rudi wählt einfach per Zufall eine Spalte, die noch nicht voll ist, und wirft seinen Spielstein in die entsprechende Spalte. Dies entspricht der einfachsten Strategie, die auch bei der Challenge als Beispiel beigelegen hat.
  • Spieler 2: Philipp Percent. Philipp nutzt eine kleine Funktion, in der die mittleren Spalten eine höhere Wahrscheinlichkeit bekommen haben als die äußeren Spalten. So versucht er, zuerst Steine in der Mitte unterzubringen, und erst dann mit geringerer Wahrscheinlichkeit die äußeren zu belegen.
  • Spieler 3: Andi Avoid. Ähnlich Philipp Percent beruht die Strategie von Andi darauf, die innen liegenden Spalten bevorzugt zu belegen. Jedoch besitzt er die Fähigkeit, gegnerische Reihen aus 3 Spielsteinen zu erkennen und verhindert die Platzierung eines vierten Steins. Wenn er eine eigene Reihe aus 3 Steinen entdeckt, setzt er den 4. Stein und gewinnt.
  • Spieler 4: Michael Kliewe. Meine eingereichte Lösung zur ibuildings Challenge.

Die ersten drei Spieler haben offensichtliche Mängel und dienen dem leichten Aufwärmtraining. Gegen Spieler 4 habe ich erst wenige Spiele gewinnen können (als Mensch), mal sehen ob es jemand von euch mit der eigenen KI schafft.

Alle weiteren Informationen zur API usw. findet ihr auf der Webseite. Falls ihr einen weiteren Konsolenclient erstellt habt der schöner aussieht, oder einen besseres Javascript-Frontend gebaut habt, nur her damit, ich baue diese dann gern ein. Ihr könnt auch gern mein Git-Repository forken und dort den Konsolen-Client verbessern. Wer ein starkes Spielerscript erstellt hat kann mit den Code auch zukommen lassen, dann füge ich diesen als weiteren Gegenspieler zum Server hinzu.

Ich arbeite aktuell noch an einer Spieler-gegen-Spieler Variante, sodass ihr auch direkt gegeneinander spielen könnt. Das dauert aber wohl noch etwas. Auch würde ich noch gern eine Berechnung der ELO-Stärke aller Spieler einbauen, dazu müßte ich die Formeln aber erstmal verstehen 😉

Written by Michael Kliewe

März 27th, 2011 at 11:17 am

PHPStorm 20% günstiger, hier bei mir

with 291 comments

Nach der Vorstellung der Version 2 von PHPStorm vorgestern habe ich tolle News: Eugene von JetBrains hat mir Coupon-Codes gegeben, mit denen ihr die Personal License von PHPStorm 2.0 20% günstiger bekommt! Die Personal License (die ich auch besitze) erlaubt es dem Entwickler, die Software auf so vielen Rechnern parallel zuinstallieren wie er möchte (zu Hause, auf der Arbeit, auf dem Notebook, Linux/Windows/Mac), solange nur eine Installation gleichzeitig ausgeführt wird.

Einfach hier einen entsprechenden Kommentar hinterlassen, und ich schicke den Code an die angegebene Email-Adresse.

Danke Eugene, Danke JetBrains!

Edit: Die Gutscheine sind bis September 2011 gültig, ich gebe gern welche raus solange ich kann!

Written by Michael Kliewe

März 24th, 2011 at 8:22 am

Posted in PHP

Tagged with , , , , ,

Abhängigkeiten automatisiert verwalten mit Pundle

with one comment

Ein Gastbeitrag von Timo Puschkasch
Student aus Stuttgart, seit längerem als Webentwickler mit PHP und Ruby sowie gelegentlich als Blogger tätig. Seit kurzem auch in der UG Stuttgart anzutreffen. Lead Developer des vorgestellten Projekts.

Es gibt heutzutage zwei Arten von PHP-Anwendungen: die Einen bringen ihre Abhängigkeiten in einem riesigen zip-Archiv mit und arbeiten entweder mit veralteten Versionen mancher Bibliotheken oder liefern alle 20 Tage ein neues Archiv aus. Zum einen ist dies sehr nervig und zum anderen entstehen so auch oftmals Sicherheitslücken. Daher liefern immer mehr Anwendungen ihre Abhängigkeiten nicht direkt mit sondern erwarten, dass der Entwickler diese selbst installiert. Obwohl dieses Vorgehen die Sicherheit erheblich verbessert belastet es doch die Zeit des Entwicklers enorm.

Aus genau dieser Problematik ist Pundle entstanden. Als schlankes, PHP-basiertes Tool ermöglicht es, die Installation und Aktualisierung von Abhängigkeiten wie anderen Tools, Bibliotheken oder auch bestimmten PHP-Versionen zu automatisieren und nimmt damit dem Entwickler viel Arbeit ab. Definiert werden die Abhängigkeiten dabei ganz einfach in einer Yaml-Datei. Beispielhaft sieht das so aus:

Weiterlesen »

Written by Timo Puschkasch

März 23rd, 2011 at 9:52 am

Posted in PHP

Tagged with , , ,

PHPStorm 2.0 – meine favorisierte IDE für PHP

with 47 comments

Am 14. Februar 2011 ist PHPStorm 2.0 erschienen, also vor einem Monat, höchste Zeit sich die neue Version genauer anzuschauen und die Features zu beleuchten.

Seit dem ersten Tag, an dem ich PHPStorm kennengelernt habe, möchte ich es nicht mehr missen, ich trauere eclipse PDT keine Träne nach. Natürlich könnte ich nun eine lange Liste mit Features präsentieren, aber ich zeige lieber einige Screenshots im Vergleich zu eclipse PDT (aktuelle 2.2).

Ich kratze hier nur an der Oberfläche und zeige nur sehr wenige Dinge, die PHPStorm zu einer deutlich besseren IDE machen. Es gibt viel viel mehr zu entdecken, ich kann jedem nur ans Herz legen, PHPStorm auszuprobieren, es gibt eine Trialversion für 30 Tage, und auch Beta-Versionen (EAP genannt) stehen regelmäßig kostenlos zur Verfügung.

Also, ich kratze nur an der Oberfläche, ich kann aus Zeitgründen einfach nicht alles zeigen.

Zu Beginn dieses Tests habe ich in beiden IDEs ein leeres Projekt erstellt, und jeweils das Zend Framework als externe Library eingebunden. Dann schreibe ich die erste Zeile Code:

<?php 
$feedReader = new ZFR

In beiden IDEs erhalte ich nun eine Autovervollständigungsliste (in diesem Fall nutze ich „camel word prefixes“ um weniger schreiben zu müssen 😉 ):

Weiterlesen »

Written by Michael Kliewe

März 22nd, 2011 at 9:38 am

Symfony Live Paris 2011 Slides

without comments

Am 2. bis 5. März diesen Jahres fand die Symfony Live 2011 in Paris statt. Am 2. fand ein Trainings-Tag statt, am 5. war der Hacking Day, und dazwischen 2 Tage Konferenz. Viele Talks behandeln natürlich das Symfony 2 Framework, es sind aber auch einige generelle PHP Themen dabei, und vielleicht kann man sich bei einem der fortschrittlichsten Frameworks das ein oder andere abgucken.

03. März 2011

The lost art of simplicity
Josh Holmes

Application Security, Dependency Injection, and AOP in Symfony2
Johannes Schmitt

State of the Symfony2 CMF Project
Lukas Kahwe Smith

Apostrophe: a Symfony-powered CMS your clients will love
Tom Boutell

Weiterlesen »

Written by Michael Kliewe

März 21st, 2011 at 9:48 am