Die Häufigkeit der Zahlen: Das Newcomb-Benford'sche Gesetz

The cat says "Meow!" The pig says "Oink!" The cow says "Moo!" The cow says "Moo!" The cow says "Moo!" The dog says "Nine... nine... nine... nine... nine..."

("The Nines", 2007)

Ich habe vor kurzem den Film "The Nines" gesehen, in dessen Verlauf die Hauptfigur merkt, dass ihre Wahrnehmung der Realität, bzw. die Realität selbst gestört ist. Ein Punkt, der sie früh stutzig macht, ist das häufige Auftauchen von Neunen in ihrer Umgebung. Sie fragt sich: "Wie oft unter allen Zahlen müsste die Ziffer 9 auftauchen? In nur einem von zehn Fällen!"

Mit ihrer Beobachtung, dass etwas nicht stimmen kann, hat sie recht. Allerdings irrt sie sich, wenn sie meint, dass alle Ziffern gleich häufig auftauchen. Tatsächlich ist es so, dass einige Ziffern mit einer höheren Häufigkeit auftauchen als andere. Diese Gesetzmäßigkeit ist bereits 1881 dem amerikanischen Mathematiker und Astronomen Simon Newcomb beim Durchblättern von Logarithmustafeln aufgefallen. Er bemerkte, dass einige der Tafeln abgegriffener waren als andere und offensichtlich häufiger genutzt wurden. Er veröffentlichte seine Entdeckung im selben Jahr in der Zeitschrift Nature: "Note on the Frequency of Use of the Different Digits in Natural Numbers".

(Weiterlesen...)

Ein Lösungsvorschlag zum Leistungsschutzrecht

Über den großen Blödsinn "Leistungsschutz" und die Rechtsunsicherheit, zu der er führen würde, wurde ausreichend gebloggt, seit das Justizministerium seinen Entwurf Ende letzter Woche veröffentlichte. An wem es vorbeigegangen ist, dem sei als Zusammenfassung vor allem der Artikel von Thomas Knüwer empfohlen: "Der Wahnsinn Leistungsschutzrecht - und warum ich nicht mehr auf Verlage verlinke".

Einen Aspekt vermisse ich aber noch in der Diskussion: Dass nämlich die ganze Rechtsunsicherheit erst dadurch entsteht, dass der Gesetzestext vollkommen an der technischen Wirklichkeit des Internets vorbeigeht. Dabei gäbe es einfache Mittel, auf technischem Wege Klarheit zu schaffen. Wenn nur genug Menschen sie heute schon nutzen würden, ließe sich das Leistungsschutzrecht auch ohne großen Aufwand bald wieder aus der Welt schaffen.

Fast so etwas wie das Internet - nur auf Papier

(Fotograf: Ed Yourdan / Lizenz: CC BY-SA 2.0)

(Weiterlesen...)

Pingbacks mit TYPO3 empfangen

Ich habe in dieser Woche eine neue TYPO3-Extension in das TER gestellt. Sie hat den extension key nsvpingbacks und ermöglicht, mit TYPO3-Systemen Pingbacks aus Blogs zu empfangen.

Ihr findet die Extension hier im TER: http://typo3.org/extensions/repository/view/nsvpingbacks. Für die zukünftige Verwaltung von nsvpingbacks habe ich ein Projekt im TYPO3 Forge angelegt. Dort könnt ihr Bugs melden, neue Feature vorschlagen etc.: http://forge.typo3.org/projects/extension-nsvpingbacks

Das Manual zu der Extension mit einer ausführlichen Beschreibung, wie ihr die Extension einrichtet, findet ihr im TER. In diesem Beitrag möchte ich nur einen kurzen Überblick über die Nutzung geben und auf ein paar Schwierigkeiten eingehen, auf die ich bei der Entwicklung gestoßen bin.

nsvpingbacks für die Nutzung mit tt_news einrichten

Wenn ihr mit tt_news regelmäßig News veröffentlicht oder einen Blog betreibt, könnt ihr mit nsvpingbacks zukünftig Pingbacks aus anderen Blogs empfangen. Hierfür müsst ihr auf der Seite mit der single-Ansicht eurer News ein neues Plugin einfügen:

Ein allgemeines Plugin einfügen

Im Reiter "Plugin" wählt ihr unter "Selected Plugin" das Plugin "Pingbacks" aus:

Front-End-Plugin von nsvpingbacks

Nun werden euch auf diesem Reiter Konfigurationfelder angezeigt:

(Weiterlesen...)

Häufigkeit von Wörtern mit der Linux-Konsole ermitteln

Mit ein paar Anweisungen auf der Linux-Konsole, lässt sich leicht die Häufigkeit einzelner Wörter (bzw. Token) eines Textes ermitteln. Beispielsweise möchten wir alle Wörter/Token im Wikipedia-Artikel über Aristoteles zählen. Hierfür habe ich ihn bereits von allem HTML befreit und nur noch den Hauptfließtext des Artikels in der Datei aristoteles.txt gespeichert.

Jetzt können wir folgendermaßen vorgehen:

(Weiterlesen...)

Searchmetrics-Werte mit einem Klick ermittelt

Die Searchmetrics Essentials gefallen mir richtig gut. Nur eine Sache, die mir die SISTRIX Toolbar bietet, habe ich bisher vermisst: Die Möglichkeit, mit einem Klick zum Überblick in den Essentials für die aktuelle Domain zu gelangen.

Dafür habe ich mir jetzt ein Bookmarklet gebastelt. Vielleicht nützt es euch auch. Um es nutzen, zieht einfach folgenden Link in die Bookmarkleiste eures Browser:

Searchmetrics Werte

Das Bookmarklet ist nicht besonders umfangreich, erfüllt aber seinen Zweck:

javascript:(function(){
  window.open('https://suite.searchmetrics.com/de/essentials?url='+location.host, '_blank')
}());
(Weiterlesen...)

Parser für die robots.txt in PHP

Wenn wir per PHP mehrere URLs von einem fremden Server anfordern, sollten wir testen, ob sie nicht per robots.txt gesperrt sind. Manche URLs sind einfach nicht für den automatischen Abruf bestimmt, und wir sollten uns - gerade wenn wir die URLs automatisiert abrufen - an die Vorgaben des Betreibers halten.

Ein Klasse, die ich zu diesem Zweck in PHP geschrieben habe, will ich hier kurz vorstellen. Zuerst aber einmal der Quellcode:

(Weiterlesen...)

List Comprehension mit JavaScript

Zu den eher unbekannten, aber sehr interessanten Features von JavaScript gehören seit der Version 1.7 die sogenannten Array Comprehension. Dabei handelt es sich um eine Möglichkeit über Arrays (und andere iterierbare Objekte) zu iterieren und aus ihnen neue Arrays zu erzeugen. Die Array Comprehension sind in dem Sinne erst einmal eine andere Schreibweise für die Array-Funktionen .filter() und .map(), bringen aber einige interessante Extras mit.

Die Syntax der Array Comprehension sieht so aus:

newArray = [f(x) for (x in oldArray) if (x > 5)]

Hier wird die Funktion 'f' auf alle Werte aus dem Array 'oldArray' angewandt, für die die Bedingung '(x > 5)' zutrifft. Die Rückgabewerte bilden das neue Array. Natürlich können die Werte 'x' jede Art von Objekt sein, auch selbst wieder Arrays, und statt über 'newArray' kann jedes iterierbare Objekt eingesetz werden, daher auch Strings, Iterator-Funktionen und Generatoren.

(Weiterlesen...)