XAMPP/Apache Problem: AH00072: make_sock: could not bind to address

Nach zäher Suche möchte ich kurz die Lösung für ein Problem dokumentieren, das beim Betrieb einer XAMPP-Installation (Version 1.8.1) auf einem Windows 7 (64 Bit) System aufgetreten ist.

Obwohl der HTTP-Server eigentlich bereits reibungslos lief, meldete das XAMPP-Control Panel beim Start von Apache plötzlich folgendes:

23:04:53 [Apache] Problem festgestellt!
23:04:53 [Apache] Port 80 in Benutzung von "system"!
23:04:53 [Apache] Apache wird NICHT starten, wenn die konfigurierten Ports beleg
t sind!
23:04:53 [Apache] Die blockende Applikation muss deinstalliert/deaktiviert/rekon
figuriert werden
23:04:53 [Apache] oder konfiguriere Apache auf einen anderen Port zu lauschen

Ein weiterer Start-Versuch brachte dann plötzlich eine andere Fehlermeldung zu Tage:

23:05:35 [Apache] Fehler: Apache wurde unerwartet beendet.
23:05:35 [Apache] Ursache könnte ein geblockter Port, fehlende Abhängigkeiten,
23:05:35 [Apache] fehlende Berechtigungen, ein Absturz oder ein Abbruch einer an
deren Methode sein.
23:05:35 [Apache] Überprüfe die Datei "/xampp/apache/logs/error.log"
23:05:35 [Apache] und die Windows Ereignisanzeige für weitere Hinweise

Und ein Start-Versuch mittels „apache_start.bat“ lieferte dann Fehlermeldung Nummer Drei zum gleichen Problem:

Apache 2 is starting ...
(OS 10013)Der Zugriff auf einen Socket war aufgrund der Zugriffsrechte des Socke
ts unzulõssig. : AH00072: make_sock: could not bind to address [::]:80
(OS 10013)Der Zugriff auf einen Socket war aufgrund der Zugriffsrechte des Socke
ts unzulõssig. : AH00072: make_sock: could not bind to address 0.0.0.0:80
AH00451: no listening sockets available, shutting down
AH00015: Unable to open logs

Ok – drei verschiedene Fehlermeldungen, die aber alle auf die selbe Ursache hindeuten: Port 80 ist belegt.

netstat brachte leider keine Hinweise auf den Prozess, der eben jenen Port belegen könnte. Das XAMPP-eigene Script „portcheck.bat“ meldete sogar, dass Port 80 frei sei. Schlussendlich habe ich in den Tiefen dieses Threads die Lösung gefunden: Schuld ist der Dienst „Webbereitstellungs-Agent-Dienst“ von Microsoft. Sobald dieser Dienst in den Windows-Diensten deaktiviert wurde, startete Apache wieder tadellos.

Share

RSS-Feed mit Ruby on Rails realisieren

Gerade wurde ich einmal mehr von der Einfachheit und Genialität von Ruby on Rails überrascht. Ich habe soeben meinen ersten RSS-Feed mit Hilfe von RoR erzeugt und das Ergebnis ist so einfach, dass sich eigentlich schon fast jeder Kommentar erübrigt.

Zunächst im Controller die Daten des Models, dass im RSS ausgegeben werden soll, abfragen.

def rss
  1.    @posts = Post.find(:all, :order => 'id DESC', :limit => 20)
  2.    render :layout => false
  3. end

Zu beachten ist, dass (wie oben geschehen) das Rendering des Standard-Layouts im Controller unterbunden werden muss. Anstelle von HTML soll schließlich XML ausgegeben werden. Dazu muss eine Datei namens rss.rxml (man beachte die Dateiendung) erstellt werden, in der ganz einfach mit Hilfe des XML-Objektes die Struktur des RSS-Feeds aufgebaut wird:

xml.instruct! :xml, :version=>“1.0″
  1.  
  2. xml.rss(:version=>"2.0") {
  3.  
  4.   xml.channel {
  5.  
  6.     xml.title("Mein Blog")
  7.     xml.link(root_url)
  8.     xml.description("Infos aus meinem Berufsalltag")
  9.     xml.language("de-de")
  10.  
  11.     @posts.each do |post|
  12.  
  13.       xml.item do
  14.  
  15.         xml.title(post)
  16.         xml.description(post.title)
  17.         xml.pubDate(post.created_at.rfc2822)
  18.         xml.link(post_path(post.to_param))
  19.         xml.guid(post_path(post.to_param))
  20.  
  21.       end
  22.  
  23.     end
  24.  
  25.   }
  26. }

xml.instruct! leitet die XML-Ausgabe ein. Fast alle anderen Methoden, die an das XML Objekt gesendet werden, werden einfach in das gleichnamige XML Markup-Tag „übersetzt“. Methoden mit Blöcken (wie im obigen Beispiel „xml.channel“), werden wie Markup-Tags mit darin eingeschlossenen Tags behandelt.

Die genaue Dokumentation zum XML Builder in Ruby on Rails findet sich hier.

Share

Gepunktete Linie bei Links in Firefox entfernen

Generell nutze ich zum Surfen Opera, doch wie es sich für einen anständigen Entwickler gehört, teste ich meine Webentwicklungen auch mit anderen Browser ;)

Dabei ist mir gerade aufgefallen, dass Firefox scheinbar standardmäßig bei einem geklickten Link eine gepunktete Linie um den Link zeichnet. Normalerweise fällt das nicht weiter auf, bei bestimmten Stellen im Design kann es aber hässliche Nebeneffekte verursachen.

Nach ein bisschen Suchen kam ich zu dieser Lösung:

  1. body a:focus {
  2.   outline-style: none;
  3. }
Share

cloudControl für Ruby-Entwickler

Ich muss zugeben, dass ich dem aktuellen Hype um das Thema Cloud Computing ein wenig skeptisch gegenüber stehe. Es scheint mir so, dass es sich dabei zwar durchaus um eine interessante Lösung handelt, die jedoch mal wieder in einer medialen Welle viel zu hoch gepriesen wird.

Für Webentwickler kann Cloud Computing jedoch ein paar interessante Vorteile bieten, die nicht von der Hand zu weisen sind. Vor allem die Idee, sich keine Gedanken mehr um die Serverkapazität und die Bereitstellung der Plattform einer Anwendung machen zu müssen, erscheint mir sehr attraktiv. Oft genug erlebt man es, dass Webseiten, die beispielsweise in einem Nachrichtenmagazin erwähnt werden, kurz nach dessen Veröffentlichung nicht mehr erreichbar sind, da die Server nicht dem Besucheransturm gewachsen waren. Solche ärgerlichen Ausfälle, bei dem wertvolle Benutzer verloren gehen, könnten in der „Cloud“ erfolgreich verhindert werden (Vorausgesetzt die Cloud ist entsprechend leistungsstark ;) ).

Der deutsche Anbieter cloudControl, der sich derzeit auf seinen Start vorbereitet, verspricht darüber hinaus noch einige Vorteile für die Entwickler selbst. Dazu zählen z.B. geringer Administrationsaufwand und Funktionen für die Teamarbeit. Neben den Sprachen PHP, Java und Python wird auch Ruby unterstützt, was für mich hochinteressant ist.
Ich bin sehr gespannt wie sich die Arbeit mit der Cloud letztendlich gestaltet und habe mich daher für die Beta-Phase registriert. Je nachdem wie sich das Thema für mich entwickelt, werde ich hier darüber berichten.

Share

Javascript: Mausposition bestimmen

Das Ermitteln der Mausposition mittels Javascript hat sich für mich als nicht ganz einfach erwiesen.
Ich wollte die Mausposition auf einem Bild bestimmen. Leider müssen hier für unterschiedliche Browser wieder unterschiedliche Methoden angewendet werden.
Nach langem Suchen und Probieren habe ich endlich eine Funktion gebastelt, die ich im Firefox 3.5, Opera 10, Internet Explorer 8 und Internet Explorer 6 erfolgreich getestet habe.

  1. function mouse_pos(e, id){
  2.    ievar = typeof(document.all)=='object'?2:0;
  3.    x = e.clientX;
  4.    y = e.clientY;
  5.    i = document.getElementById(id);
  6.    xpos = x – i.offsetLeft – ievar;
  7.    ypos = y – i.offsetTop – ievar;
  8.    return [xpos, ypos];
  9. }

Als Übergabeparamter werden das Event und die ID des Bildes erwartet. Zurückgegeben wird ein Array in der Form [xpos, ypos].

Share