Recently in Programming Category
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 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.
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.
Zur 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.
I 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.
Hinter 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.
Soeben 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
