TestUnit 2.0 für Ruby

10 08 2009

Hier gibt es mal eine kurze Vorstellung der neuen Testunit Bibliothek Version 2.0,:





CERN, LHC, Schwarze Löcher, Nostradamus und Bibel-Code

8 12 2008

Klasse!

Heute folgendes gefunden

Es wird erklärt, warum durch den LHC ein schwarzes Loch entstehen und die ganze Erde (mindestens) vernichten könnte. Belegt wird das mit einer skurrilen Mischung aus Vorhersagen von Nostradamus, Zitaten aus der Bibel, kabbalistischen Zusammenhängen und Erkentnissen aus dem sogenannten Bibel-Code der auch Andeutungen enthalten soll. Echt skurril das ganze.

Aber was mich dann wieder interessiert hat, ist, daß es sogar eine Software für diese Bibel-Code Sache gibt – muß ich mir mal näher ansehen. Schade, das Programm ist leider keine Open-Source Software und kostet ca. 67 US-Dollar, das ist mir dann doch zu wenige interessant.

Um’s klarzustellen, ich persönlich glaube aber weder daran, daß es physikalisch zu einer Katastrophe kommen könnte, noch daran, was die obigen Quellen angeblich hergeben – das ist dann doch zu weit hergeholt.

Zugute halten muß man dem Video aber, daß es in astreinem klaren und langsam gesprochenen Englisch gesprochen ist, was es auch weniger geübten Zuhörern erlaubt, das zu verstehen.

Andererseits: Vielleicht haben wir ja deshalb noch nichts von außerirdischem intelligenten Leben mitbekommen, weil diese im Laufe ihrer Entwicklung ähnliche Experimente durchgeführt haben und auch daran gescheitert sind …





GNAT Ada und Ubuntu 8.04 Update

2 12 2008

Tja, kaum macht man ein Update auf eine neue Ubuntu-Linux Version, schon funktionieren die eigenen Programme nicht mehr richtig:

$ randomplay
randomplay: error while loading shared libraries: libgnarl-4.1.so.1: cannot open shared object file: No such file or directory

Was ist das für ‘ne Library? Direkt mache ich damit in meinem Programm überhaupt nichts.

Gut, man kann das Problem durch einfaches Neucompilieren des Programms beheben. Aber sollte bei solchen Sachen nicht auf einen symbolischen Link verwiesen werden, der bei Bedarf dann auf neue Releases der entsprechenden Library verweist? Ich will mal zu GNATs Gunsten annehmen, daß nur bei meiner lokalen Installation irgendwas nicht richtig war – obwohl ich mir keiner Schuld bewußt bin, da irgend etwas großartig verbogen zu haben.





Flickr.com Kamerastatistik

1 12 2008

Grundsätzlich ja keine schlechte Idee, bei Flickr.com eine Statistik über alle Kameramodelle zu führen, die für die Bilder verwendet wurden.

Wenn man sich so eine Statistik aber mal anschaut, bekommt man folgendes:

Kamera-Statistik

Leute, was soll so eine Kindergarten-Statistik? Ich habe mal, bereits in der Realschule, gelernt, daß die beiden Achsen immer irgendwie beschriftet sein müssen, damit man etwas vernünftiges mit so einer Meßreihe anfangen kann.

Das einzige, was hier beschriftet ist (in obiger Grafik nicht zu sehen), ist die y-Achse, die wohl irgendwie die Anzahl der User (mit dieser Kamera) sein soll. Die x-Achse sollen wohl die letzten 12 Monate repräsentieren. Aber warum um himmelswillen, schreibt man da keine Monate hin? Soll ichs etwa jedesmal selbst per Hand abzählen?

Das einzige, was man aus dieser Kurve sehen kann, ist, daß es mal weniger waren, dann sind es wieder mehr und anschließend wieder weniger User geworden.
Aber wieviel mehr bzw. weniger? 10 User, 100 User, 1000 User? Ohne eine Beschriftung der Achsen kann man das leider nicht sagen.

Versteht ihr, worauf ich hinaus will? Wenn’s 10 User mehr sind, die diese Kamera verwenden, ist das nicht groß beachtenswert, wenns aber von einem Monat zum nächsten 5000 mehr sind, dann wäre so eine Statistik vielleicht interessant – so wie sie jetzt ist, ist diese Statistik leider ziemlich sinnlos.

Mein Vorschlag: Ganz weglassen oder gescheit machen!





Bombay – Mumbai

29 11 2008

Hat eigentlich von den Medien noch niemand mitbekommen, daß es Bombay seit 13 Jahren überhaupt nicht mehr gibt, sondern daß es jetzt Mumbai heißt?

Oder hält man seine Hörer/Leser für zu blöd, daß sie es kapieren würden?

So, das war’s schon, habe keine Zeit, weil ich gleich noch weiter muß, nach Karl-Marx-Stadt, anschließend geht’s weiter nach Stalingrad und danach noch nach Ceylon.





Accessing Spreadsheets with Ada (Excel,Openoffice,Google)

24 07 2008

Since my Roo gem (http://roo.rubyforge.net) for accessing spreadsheet files within Ruby programs works fine and is widely used i plan to implement this project also in Ada.

With this library you can access these spreadsheet types on any platform.





Roo 1.0.0 – Support für Excel .xlsx File

29 05 2008

Ich habe das Gem Roo um ein weiteres Dateiformat erweitert. .XLSX Files, wie sie jetzt von Excel verwendet werden. Dank der vorhandenen Unit-Test ging es überaschen schnell und einfach, diese neue Format zu implementieren.

Allerdings habe ich persönlich derzeit keine Möglichkeit, derartige Files selbst zu erzeugen, und war deshalb auf fremde Hilfe angewiesen, um mir meine Testdaten-Spreadsheets in dieses neue Format zu konvertieren.





Mitentwickler Software für Neo 1973/Freerunner

24 03 2008

Hi.

Ich spiele mit dem Gedanken, kommerzielle Software für dieses Mobiltelefon zu entwickeln und zu vermarkten und suche interessierte Mitstreiter.

Idealerweise solltest du auch in Berlin beheimatet sein.

Produktinfos zum Telefon:

http://www.teltarif.de/arch/2008/kw12/s29342.html





ruby gem of the week 2007/27

17 08 2007

Installation:

gem install blinkenlights

Was kann man damit machen?

Blinkenlights erlaubt es, die LED (auf der Tastatur) für Scroll-Lock, Caps-Lock und Num-Lock ein- und auszuschalten.

Das könnte man nun verwenden, um z.B. neu eingegangene Mails durch Blinken anzuzeigen. Oder man könnte Webserver damit überwachen und durch hektischen Blinken anzeigen, dass ein Fehler aufgetreten ist. Der Phantasie sind hier keine Grenzen gesetzt.

Der Autor hat auch noch ein schönes Beispiel im example-Directory seines Gems beigelegt: Je nach Systembelastung (mit xload auch graphisch anzeigbar), blinken keine, eine, zwei oder drei LEDs.

Hier nun einige Beispiele mit Erläuterungen:

require ‘rubygems’
require ‘blinkenlights’

# BlinkenLights laeuft sowohl unter Linux als auch unter Windows

# Aufruf mit Block:

BlinkenLights.open do |bl|
bl.off
#bl.circle
bl.flash(5)
end

#hierbei wird .close automatisch nach Verlassen des Block ausgefuehrt und
#der Status zurueckgesetzt

# oder mit explizitem .close
bl = BlinkenLights.new
bl.off
bl.circle
bl.close

bl.on # schaltet alle LEDs ein
bl.off # schaltet alle LEDs aus
bl.flash(5) # schaltet alle LEDS ein und wieder aus, optional Leuchtdauer in Sekunden, falls fehlend, so schnell als moeglich
bl.digital = 6 # setzt die LEDs entsprechend der binaeren Darstellung der angegegbenen Zahl (0-7), d.h. streng genommen darf man auch beliebige Zahlen uebergeben, intern wird aber nur der Rest beim Teilen durch 8 verwendet, d.h. die letzten 3 Bit der Zahl werden angezeigt.
bl.digital # gibt analog zum Setzen mit .digital= den Status zurueck, auf den die LEDs gerade gesetzt sind
bl.left_to_right(3) # blinkt von links nach rechts, Verzoegerung angebbar
bl.right_to_left(2) # das ganze andersherum
bl.circle(1) # zuerst von links nach rechts, dann wieder zuerueck
bl.reverse_circle(1) # oder auch anderherum

bl.random(verzoegerung) # zufaelligen Wert setzen, Verzoegerung angebbar
bl.converge(verzoegerung) # blinkt von aussen nach innen, Verzoegerung angebbar
bl.diverge(verzoegerung) # blinkt von innen nach aussen

bl.scr # Status der ScrollLock Taste (bzw. der LED)
bl.scr=(true) # schaltet die Taste ein oder aus (true/false)
bl.toggle.scr # wird angeschaltet falls vorher aus, bzw. andersherum

bl.cap # die gleichen Methoden fuer die Caps-Lock LED
bl.cap=(true)
bl.toggle_cap

bl.num # und auch fuer die Num-Lock LED
bl.num=(true)
bl.toggle_num

# das gleiche wie die obigen 9 Methoden gibt es auch mit der Benennung der
# LEDS als ‘left’, ‘middle’ und ‘right’
#

bl.set(0-7) # setzt den Wert der LEDs mit dieser Integer-Nummer
bl.get # ermittelt Wert der LEDs als Integer-Nummer
# diese beiden Methoden sind ziemlich low-level.
# Schoener sind die uebrigen Methoden zum Setzen, bzw. Abfragen der LEDs

bl.to_s # liefert Informationen zu einem Objekt
bl.inspect # alias zu .to_s

bl.reset # setzt auf den Status vor .new zurueck

Ausblick: siehe vorherige Artikel der Serie





ruby gem of the week 2007/26

16 08 2007

Das Gem dieser Woche ist für Leute, die statistische Funktionen benötigen, aber nicht alles
wieder selbst implementieren wollen. Wozu auch, wenn ein einfaches

sudo gem install statarray
und anschließendes Verwenden in eigenen Programmen ausreicht?

Statarray verwendet Elemente, die in einem Array zur Verfügung stehen. Das können zufällige Würfe eines Würfels mit den Zahlen 1 bis 6 sein, Schülernoten einer Klassenarbeit oder irgenwelche anderen Meßwerte – kurz, alles was statistisch ausgewertet werden soll.

Beispielprogramm zur Verwendung dieses Gems:

require 'rubygems'
require 'statarray'

# neues Objekt wie ein Array
a = StatArray.new([1,2,3,4,5,6])

# ... oder Umwandlung aus einem bereits vorhandenem Array
b = [1,2,3,4,5,6].to_statarray

# Mittelwert
puts a.mean

# Median
puts a.median

# Standardabweichung
puts a.stddev

# Standardfehler
puts a.stderr

# Varianz
puts a.variance

fuer eine schon formatierte Ausgabe von Ergebnissen kann man folgendes verwenden:

puts StatArray.stats_header
puts a.stats

welches diese formatierte Ausgabe liefert:

Sum         Avg.     Std.dev.         Min.         Max.       Median        Count
21.00         3.50         1.87         1.00         6.00         3.50         6.00

insgesamt stehen folgende Methoden zur Verfuegung:

absolute_mean_difference arithmetic_mean atkinson_index cdf ci climit gini_coefficient gini_coefficient2 kullback_leibler_divergence kurtosis md mean mean_difference median pearson_skewness2 pstddev pvariance relative_mean_difference rmd skewness stats stats_header stddev stderr sum summed_sqdevs theil_index to_stats variance

parseTValues t t90 t95 t99 t999

mit denen ich jetzt aber auf den ersten Blick auch nicht mit jeder Methode etwas anfangen kann ohne in weitere Statistik-Unterlagen zu schauen. Wer aber dieses Gem verwendet und mehr als den Mittelwert verwendet, der wird mit den Namen auch etwas anfangen koennen.
Ansonsonsten sind bei einigen „exotischen“ Funktionen in der Dokumentation Links auf z.B. Wikipedia-Artikel enthalten.