Beiträge mit dem Stichwort ‘error’

Javascript: Prüfen ob Variable definiert ist

Veröffentlicht am 31. März 2010 um 13:46 by Fabian Martin Permalink

Bei Javascript, wie auch in anderen Sprachen, weiß man mitunter nie, ob eine Variable definiert wurde. Um dies zu überprüfen, nutze ich meist folgenden Code Schnipsel.

if (typeof(VARIABLE) == "undefined")
{
    alert("VARIABLE ist nicht gesetzt");
}

Die Klammern bei typeof kann man weglassen. Ich persönlich habe es mir jedoch angewöhnt sie zu setzen, da hierdurch die Zusammengehörigkeit der Werte besser zu erkennen ist.

Lighttpd 1.4: HTTP 417 Expectation Failed

Veröffentlicht am 13. Januar 2010 um 15:22 by Fabian Martin Permalink

Versucht man mit einer cURL oder .NET Anwendung POST Daten an einen Lighttpd 1.4 Server zu senden, bekommt man die Meldung


HTTP/1.1 417 Expectation Failed

Dies liegt daran, das die Programme einen Expect: 100-continue Header senden, und als Antwort 100 (Continue) oder 417 Expectation Failed erwarten. Lighty kennt den Header jedoch nicht, und antwortet deswegen mit dem besagten 417 Expectation Failed.

Der Expect: 100-continue Header soll verhindern, das Daten an den Server gesendet werden, die nicht benötigt werden. Erkennt der Server z.B. das er die Anfrage ablehnen muss, kann er dies dem Client mitteilen, noch bevor die POST Daten übermittelt wurden.

Wer dennoch POST Daten an Lighty senden möchte, kann die folgenden Paramter anpassen:

.NET


System.Net.ServicePointManager.Expect100Continue = false;

cURL unter PHP

curl_setopt($objCurl, CURLOPT_HTTPHEADER, array('Expect: '));

cURL auf der Kommandozeile

curl -v -H "Expect: " -F "field=value" http://example.com/upload.php

Alternativ aktualisiert man auf Lighttpd 1.5. Dieser kennt den Expect: 100-continue Header und beantwortet entsprechende Anfragen korrekt.

Browser senden übrigens keinen Expect: 100-continue Header.

MySQL: Thread stack overrun

Veröffentlicht am 11. November 2009 um 10:15 by Fabian Martin Permalink

Diese Fehlermeldung bekam ich beim Ausführen einer Stored Procedure, die lediglich zwei Einträge in die Tabellen einfügt.

SQL Error: Thread stack overrun: 8824 bytes used of a 131072 byte stack, and 128000 bytes needed. Use 'mysqld -O thread_stack=#' to specify a bigger stack.

Schuld ist eine Voreinstellung bei Debian basierten Distributionen. In der /etc/mysql/my.cnf wird der Wert von thread_stack auf 128k festgelegt. Erhöht man diesen Wert auf 192k (MySQL Standard), funktionieren auch einfache Stored Procedures wieder.