4
Mär

Bash + Ping: Ausgabe mit einem Zeitstempel

categories Computer     comments Comments (0)

Eine der vielen tollen Annehmlichkeiten von bash ist die Flexibilität, verschiedene gute Werkzeuge miteinander zu kombinieren, um die gewünschte Ausgabe zu erreichen.

Vor ein paar Tagen wollte ich einen Host regelmäßig (p.e. alle zwei Minuten) pingen, und dabei einen Zeitstempel mitführen. Normalerweise verwende ich dafür geeignete Netzwerktools für diese Aufgabe wie z.B. Nagios, aber in diesem Fall wollte ich nur auf dem Bildschirm sehen, wann ein Host wieder online geht.

Nach ein paar Minuten löste ich die Aufgabe mit dieser Kombination:

ping -i 120 www.google.com | while read x; do echo "$(date +%T) $x"; done

Resultat:

08:10:24 PING www.google.com (73.94.35.76) 56(84) bytes of data.
05:10:24 64 bytes from 73.94.35.76: icmp_seq=1 ttl=57 time=9.82 ms
05:12:24 64 bytes from 73.94.35.76: icmp_seq=2 ttl=57 time=9.25 ms
05:14:24 64 bytes from 73.94.35.76: icmp_seq=3 ttl=57 time=24.4 ms
05:16:24 64 bytes from 73.94.35.76: icmp_seq=4 ttl=57 time=9.81 ms
05:18:24 64 bytes from 73.94.35.76: icmp_seq=5 ttl=57 time=60.4 ms

Mission erfolgreich!

29
Jun

Profiling mit MySQL

categories Computer, MySQL, Tutorials     comments Comments (0)

Manchmal begegnet man einer SQL-Abfrage, welche langsamer ist als erwartet. Man weiß genau, alles wurde getan, dass die Tabellen optimiert und sauber indexiert sind. Und dennoch ist die Abfrage zu langsam.

Hier hilft Profiling.

MySQL verfügt über einen eingebauten Profiler, der es ermöglicht, sehr detailliert zu tracen, für welchen Bestandteil einer Abfrage die Datenbank wie lange genau gebraucht hat.

Um den Profiler zu verwenden, geht man wie folgt vor:

(1) Einschalten des Profilers.

Per Default ist der Profiler deaktiviert, daher muss man ihn erst starten.

SET profiling = 1;

(2) Ausführen der eigentlichen Abfrage.

(3) Identifizieren der Abfrage-ID.

SHOW PROFILES;

Dieses Kommando wird in etwa folgendes zeigen:

    Query_ID |  Duration | Query
    ---------+-----------+-----------------------
      ...    | ...       | ...    
       29    | 0.0006200 | SHOW STATUS
       30    | 0.3600000 | SELECT (your query here)
      ...    | ...       | ...

Jetzt weiß man, die Abfrage-ID ist 30.

(4) Profiling der Abfrage.

SHOW PROFILE FOR QUERY 30;   // example 

Dies zeigt die Details der Abfrage.

    Status                          | Duration
    --------------------------------+-------------------
    starting                        | 0.000010
    checking query cache for query  | 0.000078
    Opening tables                  | 0.000051
    System lock                     | 0.000003
    Table lock                      | 0.000008
    init                            | 0.000036
    optimizing                      | 0.000020
    statistics                      | 0.000013
    preparing                       | 0.000015
    Creating tmp table              | 0.000028
    executing                       | 0.000602
    Copying to tmp table            | 0.000176
    Sorting result                  | 0.000043
    Sending data                    | 0.080032
    end                             | 0.000004
    removing tmp table              | 0.000024
    end                             | 0.000006
    query end                       | 0.000003
    freeing items                   | 0.000148
    removing tmp table              | 0.000019
    closing tables                  | 0.000005
    logging slow query              | 0.000003
    cleaning up                     | 0.000004

In diesem Beispiel wurde die meiste Zeit der Abfrage damit verbracht, das Ergebnis an den Client zurückzusenden. Vielleicht sollte man die Ergebnismenge reduzieren, oder ggf. den Query Cache erhöhen. Vielleicht geht man aber auch ganz anders vor, hier sollte man von Fall zu Fall prüfen, was sinnvoll und möglich ist.

Aber dank dem Profiling weiß man nun, wo man suchen muß!

4
Apr

Firebug: Logfunktionen

categories Computer, Tutorials     comments Comments (0)

Viele Entwickler betrachten Firebug als die Mutter aller Web-Tools. Diese Ansicht ist durchaus begründet, denn Firebug umfassst mächtige Werkzeuge, mit welchen man so ziemlich alles machen kann, was man als Webentwickler so täglich braucht, angefangen von kleineren CSS-Experimenten bishin zum Debuggen von komplexen JScript-Anwendungen sowie dem Profiling von Webseiten.

Was nicht ganz so bekannt ist, man kann sogar über den Firebug aus JScript heraus Debug-Logs generieren.

Beispielsweise gibt…

console.log('Hallo Welt!');

…genau diesen Text in der Konsole aus.

Das kann man noch etwas verfeinern, denn schließlich unterscheidet man Infos, Warnings, Errors und Debugs!

console.debug('Debug');
console.info('Information');
console.warn('Warnung');
console.error('Fehler');

Und auch die Ausgabe von Variablen kommt nicht zu kurz:

var banane = 1.234;
var orange = "Test";
console.log("Mein %a hat den Wert %d", orange, banane);

Ästheten können auch Gruppen bilden, welche in der Konsole sauber dargestellt werden:

console.group('meine Gruppe');
    console.info('Info1');
    console.debug('Was ich wissen wollte...');
console.groupEnd();

Über noch mehr Möglichkeiten dieser Funktionen, wie z.B. Zeitwerte, Stacks u.s.w kann man sich hier auf der Seite von Firebug informieren.

Übrigens:
Die meisten dieser Funktionen sind mittlerweile auch im Debugger des Google Chrome verfügbar!

19
Mär

kreatives WAIT-Kommando für DOS

categories Computer, Tutorials     comments Comments (0)

Vielleicht standen Sie auch mal vor dieser Thematik: Es gibt keinen direkten Weg, ein einfaches WAIT-Kommando in DOS zu stricken. Während ich an einer Lösung für eine kleine Aufgabe arbeitete, stolperte ich über einen sehr kreativen Weg, dies zu lösen:

PING 1.1.1.1 -n 1 -w 25000 >nul

Ja, genau. Das PING-Kommando kann als WAIT-Alternative verwendet werden!

Ein paar ergänzende Erklärungen:

Natürlich versuche ich immer, WAIT-Operationen in Programmen und Scripts zu vermeiden, aber manchmal hilft es doch, gerade beim Testen. Außerdem ist dies kein sehr exakter Ansatz, hier sollte man also nicht mit einer Atomuhr nachmessen. Dennoch ist dieser kreative Ansatz eine kleine, aber feine Lösung, falls man doch mal um ein WAIT nicht herumkommt…!

19
Jan

Otherland: Bald im Kino?

categories Film & Fernsehen     comments Comments (0)

Scheinbar traut sich wohl ein kleines Filmstudio namens Warner an die Umsetzung der kongenialen Science-Fiction-Saga Otherland von Tad Williams. Mutig, mutig!

Hier gibt es den Artikel des Variety Magazins.

Nächste Seite »

  • Meta