Recently in Programming Category

Loadbars v0.4.0 ist da

Hiermit gibt es eine neue Featureversion von Loadbars.

Sat Jan 21 18:32:45 CET 2012
* Released v0.4.0
* Also show stats for idle, iowait, irq, softirq, steal and guest cpu time
* Some parameters have been renamed (see --help)
* Introduced extended mode (use --extended 1 at startup or 'e' hotkey)
* Modified the bar colors a little bit (see --help)
* Some Bugfixes

Und so seiht das aus, wenn auch irq (weiss) und iowait (purple) visualisiert werden (Screenshot im extended mode):

2012-01-21-162610_1250x230_scrot.png
Die Hilfe sieht nun wie folgt aus:

pb@venus:~/git/loadbars$ ./loadbars --help
Explanations:
    st = Steal in % [see man proc] (extended)
        Color: Red
    gt = Guest in % [see man proc] (extended)
        Color: Red
    sr = Soft IRQ usage in % (extended)
        Color: White
    ir = IRQ usage in % (extended)
        Color: White
    io = IOwait cpu sage in % 
        Color: Purple
    id = Idle cpu usage in % (extended)
        Color: Black
    ni = Nice cpu usage in % 
        Color: Green
    us = User cpu usage in % 
        Color: Yellow, dark yellow if to>50%, orange if to>50%
    sy = System cpu sage in % 
        Blue, lighter blue if >30%
    to = Total CPU usage, which is (100% - id)
    pk = Max us+sy peak of last avg. samples (extended)
    avg = System load average; desc. order: 1, 5 and 15 min. avg. 
    1px horizontal line: Maximum sy+us+io of last 'avg' samples (extended)
    Extended means: text display only if extended mode is turned on
Examples:
    loadbars --extended 1 --showcores 1 --width 600 --hosts localhost
    loadbars --hosts localhost,server1.example.com,server2.example.com
    loadbars --cluster foocluster (foocluster is in /etc/clusters of cssh)
--average <ARG> - Num of samples for avg. (more fluent animations)
--cluster <ARG> - Cluster name from /etc/clusters
--extended <ARG> - Toggle extended display (0 or 1)
--factor <ARG> - Set graph scale factor (1.0 means 100%)
--height <ARG> - Set windows height
--hosts <ARG> - Comma sep. list of hosts; optional: user@ in front to each host
--inter <ARG> - Set update interval in seconds (default 0.1)
--samples <ARG> - Set number of samples until ssh reconnects
--showcores <ARG> - Toggle core display (0 or 1)
--showtexthost <ARG> - Toggle hostname/num text display (0 or 1)
--showtext <ARG> - Toggle text display (0 or 1)
--sshopts <ARG> - Set SSH options
--title <ARG> - Set the window title
--width <ARG> - Set windows width
pb@venus:~/git/loadbars$ 


git.buetow.org

Unter git.buetow.org gibt's nun mein gitweb. Nach und nach werde ich meine Projekte auf Git umstellen. Das werde ich allerdings nicht ad-hoc machen, da ich für jedes Projekt 4987324928374 Links auf die Subversion-Pfade anpassen müsste; jede Version jedes Projektes ein verschiedener Pfad (insbesondere auf externen Seiten wie z.B. Freshmeat). Daher erst nach und nach, wenn ich gerade an einem Projekt bastle mach ich das für das jeweilige Projekt gleich mit. Nun habe ich:

* Private Git-Repos per SSH
* Public read only Git-Repos per git:// Protokoll (schreibbar weiterhin per Git over SSH)
* Public read only Git-Repos per gitweb

Mein Ticketsystem werde ich auch ändern. Von: RT (Requesttracker) nach ticgit / ticgitweb. Das muss ich allerdings noch einrichten.

Die gesamte private Serverinfrastruktur wird nun per Puppet Konfigurationsmanagement verwaltet. Die Puppetmodule werden auch bereits per Git versioniert. Im Prinzip kann ich die Server komplett remote per Git, Git-Push und automatischen Git-Pull und anschließendem Puppetrun verwalten. Bei kleinen Änderungen ist das schon sehr viel Komfort.

Loadbars v0.2.1 released

Nach einer weiteren knappe Woche habe ich gedacht Loadbars in der Version v0.2.1 zu releasen weil: "Release early and often".

Changelog: 

* Added grey separator lines between each hosts during CPU toggle mode * More intelligent CPU core numbering during CPU toggle mode * FreeBSD server support for CPU graphs has been tested and is working
using inprocfs mounted on /compat/linux/proc. * Changed licence to GPL 2 * Some more documentation * Some minor bugfixes

Loadbars v0.2.0 released

| 2 Comments
Nach nur kurzer Zeit habe ich nun die naechste Version von Loadbars freigegeben. Dieses Mal ist es sogar eine Majorversion, da sich grundlegend viel im Source geaendert hat. Insbesondere kann man die graphische SDL-Oberflaeche mit Hotkeys bedienen, womit die Command Line Shell wegfaellt. Sie war auch der Grund wegen vieler Bugs (die Libraries kamen nicht so recht mit den Perl-Threads zurecht, was dann auch mal zu komischen Verhaltensweisen fuehrte). Hier ist das Changelog:

Sa 6. Aug 22:04:15 CEST 2011
* Released v0.2.0 (new major version)
* No interactive CLI shell anymore but instead hotkeys for the 
 SDL interface (press h and see).
* Bugfixes (E.g. Loadbars does not hang anymore after typing commands)
* Major code refactoring

Loadbars v0.1.3.1 released

Hiermit release ich Loadbars in der Version 0.1.3.1. Dabei haben sich die folgenden Aenderungen ergeben:

lb-v0.1.1-thumb-400x66-343.png

* Fixed a segfault bug on SDL::Font using threads
* Added an advanced help option (h vs. H)
* Added new toggle option: Displaying bar number vs. hostname
* Some little code refactoring
* Some more minor bugfixes

Das Diff kann man sich auch angucken. 

Was ist Loadbars? Hier ein Auszug aus der Homepage:

Loadbars is a small Perl script which can be used to observe CPU loads of several remote servers at once in real time. It connects per SSH (using SSH public/private key auth) to several servers at once and vizualizes all server CPUs (summarized or each core separate) right next each other. Loadbars IS NOT the tool for collecting CPU loads and drawing graphs (per hour, day, week, month) for later analysis. There are enough other tools which can accomplish this (e.g. SNMP / RRDtool). However, those tools need some minutes until the first graphs are drawn. So Loadbars can be used to observe the current real time state in real time without waiting a few minutes first. Loadbars does not remember / historicize any load informations. Its just showing the current CPU usages like top or vmstat does.


    Wie gewohnt kann man sich den entsprechenden Tag aus dem Subversion-Repository beziehen.

    Released PerlDaemon v1.2

    perlcamel.pngI just released PerlDaemon v1.2. The changes are as follows: 

    Mo 13. Jun 11:40:49 CEST 2011
    * Added documentation (README file)
    * Added './control keys' which shows all the available properties

    Mo 6. Jun 09:03:57 CEST 2011
    * Added './control foreground' startup option
    * Added correct time carrying
    * Renamed TODO into WHISHLIST

    Do 2. Jun 11:09:25 CEST 2011
    * Added module load error handling

    Mo 30. Mai 21:29:20 CEST 2011
    * Implemented Time::HiRes job scheduling
    * Added passing of startup options. E.g.
    ./control start daemon.daemonize=no daemon.loopinterval=10
    starts perldaemon in foreground w/ a loopinterval of 10 seconds.
    It's possible to overwrite all defaults specified in perldaemon.conf

    Di 24. Mai 08:46:09 CEST 2011
    * Renamed modules config options

     

    And in code it looks like this. What's PerlDaemon? PerlDaemon is a minimal linux/unix daemon programmed in Perl supporting logrotating, starting, stopping and a minimal configuration file. It can be extended to fit any task.

    And here is the extra documentation which I wrote.

    awk.info

    | 1 Comment

    littleauk2.jpgZur Abwechslung wollte ich mal einen Linktipp posten. Ich finde, dass die Programmiersprache (nagut je nach Definition eher Skriptsprache) AWK zu unrecht bei den meisten Entwicklern (die zumindest ich kenne) recht unbekannt ist. Jeder kennt Perl, Python, Ruby aber bei AWK (bzw. GAWK, der GNU Variante von AWK mit den meisten Features) gibt es oft Fragezeichen.

    Einigen anderen Leuten ist AWK sehr wohl bekannt, allerdings nur in Form von sog. Einzeilern wie z.B.

    pb@titania:~$ echo foo bar | awk '{ print $2 }'
    bar
    pb@titania:~$

    Die wissen aber meist nicht, das AWK eine relativ mächtige Sprache (wenn auch nicht so mächtig wie Perl und Konsorten) ist und man in AWK ohne Weiteres leserliche Skripte mit mehreren hundert Zeilen Code schreiben kann. (z.B. habe ich früher mal eine Web-Template Engine in GAWK programmiert).

    Wieso sollte man AWK einsetzen wollen, da es doch mächtigere Skriptsprachen wie z.B. Perl gibt? AWK glänzt mit seiner Einfachheit und Kompaktheit. Ausserdem ist AWK sehr gut für die textuelle Verarbeitung von grossen Datenmengen (z.B. Loggfiles) geeignet, da wie bei SED (Streaming Editor) auch bei AWK by default ein "Stream" an Daten verarbeitet wird. Bei sehr viel Daten und großen Regexp ist die Regexp Engine von AWK die von vielen bekannten Programmier- und Skriptsprachen performancemäßig haushoch überlegen. Neben der Shell ist AWK so fast die einzige Skriptsprache, die man Standardmäßig auf jedem Linux oder UNIX oder UNIX-artigem Betriebssystem im Basissystem schon mit drin hat. Man kann also direkt loslegen ohne AWK erst installieren lassen zu müssen. Im Vergleich zu den großen Skriptsprachen ist AWK überschaulicher und es ist einfacher sich zu involvieren. In GAWK besteht zudem auch die Möglichkeit eigene Erweiterungen in C zu programmieren; sollte die Sprache wirklich mal ein wichtiges Feature nicht unterstützen. Oder man nimmt ein externes Programm zur Hilfe, welches aus AWK heraus aufgerufen- oder per Shell-Pipe ankoppelt wird. Ein weiterer Einsatzgebiet von AWK sind die bereits erwähnten 1-liner, die man ohne große Schmerzen direkt in der Shell programmiert. Kombiniert mit den Editiermöglichkeiten der Shell ist AWK auch hier ein mächtiges Werkzeug.

    Ich kenne Web-Services die über eine Milliarde HTTP-Requests pro Tag (im Peak 25 tausend pro Sekunde) verarbeiten, und dies mit GAWK. Bei AWK gibt es, wie bereits angedeutet, mehrere Implementierungen (z.B. das Ur-AWK, NAWK, MAWK, GAWK, ...) wobei GAWK die vielfältigste ist (Buchtipp: Effective AWK Programming). Mit awk.info gibt's eine zentrale Community rund um alle AWK-Implementierungen (z.B. auch objektorientiertes AWK oder AWK mit SQL Anbindung) inklusive Blog und eine menge Beispielen.

    Released PerlDaemon v1.1

    perlcamel.pngI just released PerlDaemon v1.1. The changes are as follows:

    * Released PerlDaemon v1.1
    * Major refactoring
    * Added warn message support
    * Added 'restart' option
    * Added README file including a quick starting guide
    * Added dynamic loadable module support including an example

    And in code it looks like this. What's PerlDaemon? PerlDaemon is a minimal linux/unix daemon programmed in Perl supporting logrotating, starting, stopping and a minimal configuration file. It can be extended to fit any task.

    Development Mailing Liste

    mailman.pngHinter dev at lists dot buetow.org befindet sich von nun an eine Dev-Mailing-Liste rund um meine Projekte die unter dev.buetow.org gelistet sind. Ich erwarte zwar nicht, dass sich dort viel tut allerdings gibts die Liste einfach "because I can" :)

    Auf jeder Projektsite wird nun explizit für den Fall der Fälle auf diese Liste hingewiesen.

    loadbars v0.1.1 released

    loadbars.pngSoeben habe ich loadbars in den Versionen v0.1.0 und v0.1.1 released (nach dem Release von 0.1.0 sind mir noch ein paar Kleinigkeiten eingefallen, weshalb ich direkt v0.1.1 nachgeschoben habe).

    Tue Jan 11 14:01:32 CET 2011
    * Released v0.1.1
    * Extended help text ('h' command)
    * Added CHANGELOG and README files
    * Fixed a typo

    Tue Jan 11 13:??:?? CET 2011
    * Released v0.1.0
    * With initial font support (text display of the stats)
    * Everything else which has been implemented up to 0.1-beta8-pre6

    lb-v0.1.1.png

    Pages

    Powered by Movable Type 4.35-en

    About this Archive

    This page is an archive of recent entries in the Programming category.

    Podcasts is the previous category.

    Project Management is the next category.

    Find recent content on the main index or look in the archives to find all content.