Archive for the ‘PHP’ Category
iBuildings Challenge: Mein Sismo Notifier für C2DM
iBuildings hat wieder eine Challenge veranstaltet, und ich habe wieder mitgemacht. Letztes Jahr galt es eine Vier-Gewinnt-Spieler-KI zu erstellen, diesmal ging es darum einen Notifier für den Continuous Testing Server Sismo von Fabien Potencier zu schreiben, sprich eine Klasse die sich darum kümmert das Ergebnis eines Builds zu veröffentlichen.
Ich habe mich dafür entschieden einen Notifier für Android Apps zu schreiben, der den Commit via Googles Cloud auf ein Android-Handy pushen kann, auf dem dann eine einfache App das Ergebnis anzeigen kann. Noch gibt es keine solche App, wenn ich das richtig gelesen habe ist das nur eine Sache von wenigen Stunden. Die Klasse mit der ich teilgenommen habe gibt es auf GitHub, bin gespannt ob der Pull-Request angenommen wird.
Algorithmus gesucht: Strings in String suchen
Ich habe eine kleine Aufgabe für euch: Gegeben ist ein String, sowie eine Menge kürzerer Strings die darauf geprüft werden ob sie im Ausgangsstring vorkommen und an welcher Stelle. Normalerweise gibt es dafür die PHP-Funktion strpos(). Nehmen wir an sie steht nicht zur Verfügung. Wie würdet ihr das Problem bestmöglich lösen, es gibt ja ziemlich viele Ansätze und Lösungen? Interessant dabei ist dass es exakt einen String gibt den es zu durchsuchen gilt, und sehr viele (hier im Beispiel 10.000) kürzere Strings die es zu suchen gilt. Je nachdem wie man den Algorithmus baut macht es eventuell Sinn einen Index oder ähnliches aufzubauen, sprich anfangs etwas mehr Rechenarbeit zu leisten damit man später die Suche sehr schnell erledigen kann?
Also die Grundstruktur soll wie folgt aussehen (siehe auch bei GitHub):
Linkpool Nummer 29
Ein paar interessante Links gegen den verregneten Sonntag:
Sehr interessante Serie über die PHP Source-Code-Interna, für PHP Entwickler:
XSS, und wie man htmlspecialchars NICHT benutzt:
Audioaufnahme eines Vortrags von Lorna Jane Mitchell über OAuth:
CSS3 und HTML5 Features in älteren Browsern mit Polyfills:
Carsten Eilers im PHP Magazin mit einem 9-teiligen Artikel über OAuth:
Der Mayflower Podcast Folge 2 und 3 über QA, CI und oTranCe
- http://blog.mayflower.de/archives/858-Mayflower-Podcast-002.html
- http://blog.mayflower.de/archives/859-Mayflower-Podcast-003.html
Dateien als Download zum Browser senden:
Erschreckende Zahlen von “Webmastern” und “ihren” Webseiten nach einem Einbruch:
Wie man aus PHP heraus Musik an einen Icecast/Shoutcast Server streamt mit einer eigenen Extension:
Bericht über einen Besuch beim Facebook Release Engineering Team:
Wie viele interne Funktionen hat PHP?
Tja, das ist nicht so leicht zu beantworten, die Antwort lautet: Kommt drauf an.
- Zählt man nur die Funktionen in der sogenannten Standard-Extension und der SPL-Extension sind es 526. Das ist also die Anzahl die jede PHP Installation auf jeden Fall bietet.
- Zählt man auch die Methoden der Klassen mit die mit ausgeliefert werden kommt man zusammen auf 1402. Darin sind jedoch auch viele “doppelte” Methoden vorhanden die durch Ableitung entstehen.
Doch jede PHP-Installation wird normalerweise mit zusätzlichen Extensions kompiliert bzw. werden weitere geladen, sodass die Anzahl der zur Verfügung stehenden Funktionen deutlich höher ist:
- Zählt man alle internen Funktionen hier in dieser PHP-Version von Xampp dann sind dies 1605. Darin sind nun auch die Funktionen aller installierten Extensions enthalten, z.B. die mysql_* Funktionen durch die mysqli-Extension oder die xdebug_* Funktionen der xdebug-Extension.
- Zählt man alle Funktionen und Methoden zusammen kommt man auf stolze 3825 Funktionen und Methoden.
Ich habe für diese Zählungen die folgenden Scripte verwendet, die jeweils alle gefundenen Funktionen und Methoden inklusive Parametern ausgibt, man erhält also eine lange Liste die ungefähr so aussieht:
Testdaten generieren mit dem Projekt “Faker”
Auf der Suche nach einem Namensgenerator bin ich auf das Projekt “Faker” von Francois Zaninotto gestossen. Basierend auf den Fakern aus der Perl- und Ruby-Welt kann man damit nicht nur Namen generieren, sondern auch Straßen, Ortsnamen, Telefonnummern, Zahlen, Firmennamen, E-Mail-Adressen, IP-Adressen, URLs, Datumsangaben, und das ganze lokalisiert. Französische Daten sind also andere als italienische oder österreichische.
Sinnvoll sind solche Daten für die Testumgebung, um keine echten Daten nehmen zu müssen bzw. sich keine hunderte eigene Daten auszudenken, oder für Unit-Tests. Die generierten Daten kann man dann beispielsweise nutzen um eine Datenbank zu füllen, Objekte zu erstellen, XML-Dokumente zu generieren oder JSON-Requests abzufeuern. Die Readme des Projekts ist umfangreich und zeigt sehr schön was alles möglich ist.
Ein schönes und nützliches Projekt wie ich finde. Von Christoph Schaefer gibt es auch einen Fork mit einem de_DE Provider, leider ist die Vornamenliste noch etwas kurz, aber man kann gut darauf aufbauen.
Welche Daten nutzt ihr für Testumgebungen, wie generiert ihr eure Testdaten?


