PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Archive for Juni, 2010

PHP Magazin Jahresabos zu gewinnen

with 2 comments

Kurze Eilmeldung: In Jan Walthers PHP Performance Blog kann man ein Jahres-Abo für das PHP-Magazin gewinnen. Heute um 15 Uhr wird die Liste geschlossen, also schnell mitmachen!

Written by Michael Kliewe

Juni 23rd, 2010 at 2:14 pm

Algorithmus-Wettbewerb Teil 2: Spielplan errechnen

with 40 comments

Tüftler aufgepasst, ich habe eine neue Aufgabe, die es möglichst effektiv zu lösen gilt. In der Vergangenheit hatte ich bereits nach Wegberechnungen auf einem Spielfeld für ein Browsergame gefragt, heute soll es um einen Spielplan gehen den es zu errechnen gilt.

Wir haben folgende Ausgangslage: X Spieler möchten ein Turnier veranstalten, wobei jeweils einer gegen einen spielt (Duelle, deshalb sollte X gerade sein). Dabei soll jedoch niemand mehrfach gegen den selben Spieler antreten und es soll niemand ein Spielbrett zweimal benutzen dürfen. Es gibt X/2 Spielbretter, also auch für jeden Spieler X/2 Duelle.

Die Ergebnistabelle ähnelt etwas einer Sudoku-Lösung: Jede Zahl darf nur einmal pro Zeile und einmal pro Spalte vorkommen.

Beispiel: 6 Spieler, 3 Spielfelder

Spielbrett 1Spielbrett 2Spielbrett 3
Runde 11-23-45-6
Runde 23-51-62-4
Runde 34-62-51-3

Für 4 Spieler und 2 Spielfelder gibt es keine Lösung.

Nun sollen gültige Lösungen für beliebig viele Spieler gefunden werden, in meinem Realbeispiel benötigten wir einen Turnierplan für 10 und 12 Spieler. Ich habe vor ca. einem Jahr ein Script geschrieben welches dafür ca. 20 Stunden gebraucht hat, gestern habe ich einen anderen Ansatz gewählt und habe in unter einer Sekunde eine Lösung.

Ihr sollt nun ein Script schreiben das bei einer Eingabe der Spieleranzahl von 20 eine gültige Lösung ausspuckt. Die Lösung dann bitte hier, im eigenen Blog, bei Pastie.org oder sonstwo veröffentlichen (Script + Ergebnis). Mein Script hat 58 Zeilen, ist zufallsbasiert (also keine Rekursion, kein geordnetes Brute-Forcing) und ich werde es in 2 Wochen (6.7.2010) veröffentlichen. Es benötigt für 20 Spieler im Durchschnitt ca. 60 Sekunden (da zufallsbasiert dauert es mal 4 Sekunden, mal 250 Sekunden).

Bin gespannt auf eure unterschiedlichen Lösungen, vielleicht ist ja eine sehr gute und schnelle Lösung dabei! Aber auch erste Ideen und langsame Scripte sind eine gute Basis, sie vorzustellen und zu verbessern.

Das ist auch eine gute Möglichkeit, sich mit Freunden, Bekannten und Arbeitskollegen zu messen 😉

Written by Michael Kliewe

Juni 22nd, 2010 at 12:18 pm

Posted in PHP

Tagged with , ,

Linkpool Nummer 9

with one comment

Ein kleiner Tipp wie man eine neue Produktiv-Version testen kann obwohl die Maintenance-Seite aktiv ist (Könnte man auch zur Absicherung von Admin-Interfaces etc. nehmen, ist aber mit Vorsicht zu geniessen – Security by Obscurity):
http://bigwhoop.ch/artikel/49/2010-06-03/Webapplikationsupdate-trotz-Wartungsseite-testen

10 Dinge, über die sich Entwickler am meisten ärgern:
http://it-republik.de/dotnet/artikel/10-Dinge-ueber-die-sich-Entwickler-am-meisten-aergern-3113.html

Kleines Beispiel wie nützlich der relativ unbekannte Validator Zend_Validate_Db_NoRecordExists ist:
http://blog.dream-coder.de/2010/05/zendframework-eindeutigen-datensatz-pruefen/

Einführung in MongoDB und PHP:
http://devzone.zend.com/article/12132-Getting-Started-with-MongoDB-and-PHP

Vortrag von Johann-Peter Hartmann bei den Drupal-Dev-Days: Warum PHP sich rechnet:
http://www.drupal-dev-days.de/de/sessions/keynote-warum-php-sich-rechnet

Ein etwas älterer Beitrag zu Performance-Tipps bei CSS-Selektoren:
http://www.stevesouders.com/blog/2009/03/10/performance-impact-of-css-selectors/

Sammlung toller CSS3 Effekte:
http://www.net-kit.com/mays-best-resources-for-css3/

Zend Framework Bug Hunt Days im Juni: 3 Tage wird gejagt!
http://devzone.zend.com/article/12257-Announcing-The-June-ZF-Bug-Hunting-Days

Written by Michael Kliewe

Juni 19th, 2010 at 11:40 am

X-Frame-Options Header gegen ClickJacking

with 13 comments

ClickJacking hatte ich in einem älteren Beitrag bereits erwähnt, und es gibt bereits seit langem Gegenmaßnahmen. Der IE8 hat damals ein neues Feature eingeführt, welches mittlerweile von den anderen Browsern auch umgesetzt wurde, und dieses Feature stelle ich hier vor.

Wir als Webseitenbetreiber können damit unterbinden, dass unsere Seite in einem Frame (IFrame eingeschlossen) dargestellt werden. Dazu überprüft der Browser, ob auf der eingebundenen Seite der HTTP-Header X-Frame-Options existiert. Für diesen Header gibt es zwei mögliche Werte:

Weiterlesen »

Written by Michael Kliewe

Juni 18th, 2010 at 10:43 am

Yahoo! Query Language (YQL) erklärt

with 7 comments

Vorwarnung: Dieser Post ist relativ lang, aber mit vielen Beispielen gefüllt und sehr interessant wie ich finde. Wer durchhält, wird belohnt!

Wer von euch schonmal auf Web-APIs zugegriffen hat weiß dass die APIs alle unterschiedlich sind, ein einheitlicher Zugriff ist nicht möglich. Des weiteren möchte man eventuell Daten von Webseiten abgreifen, z.B. direkt aus einer Tabelle Wetterdaten oder Flugdaten auslesen. Dazu muss man den HTML-Code laden, parsen und die Informationen extrahieren.

Für dies und vieles mehr kann man die Yahoo Query Language (YQL) einsetzen. YQL ist eine SQL-ähnliche Sprache um den Yahoo-Servern eine Aufgabe zu geben, die Mengen von Daten betreffen, die die Yahoo-Server sammeln und das Ergebnis berechnen, welches man dann in einer einheitlichen XML-Antwort oder als JSON erhält.

Wer sich das nicht vorstellen kann, hier ein paar Einführungsbeispiele:

Weiterlesen »

Written by Michael Kliewe

Juni 14th, 2010 at 10:13 am