Frohe Ostern

Ich wünsche allen Lesern frohe Ostern!

Share Button

Festplatten zur Erdbebenmessung

Auch wenn SSDs immer mehr Verwendung finden, sind magnetische (mechanische) Festplatten weiterhin verbreitet und werden es wohl auch noch lange bleiben.

Diese mechanischen Festplatten enthalten Sensoren, mit denen man Erschütterungen erkennen kann, zum Beispiel um den Kopf in eine ungefährliche Position zu bringen, um Schäden zu verhindern. Diese Sensoren sind sicher nicht so genau wie die Seismographen, die man zur Vorhersage von Erdbeben, Tsunamis und Vulkanausbrüchen und für die geophysikalische Forschung verwendet. Aber sie sind überall vorhanden und könnten so wertvolle zusätzliche Daten liefern. Das könnte vielleicht so funktionieren, daß die Betreiber von Rechnern mit Festplatten der Erfassung und Übermittlung von seismographischen Daten an ein geophysikalisches Rechenzentrum zustimmen. Weil die genaue Standortinformation ziemlich essentiell ist, sind sicher stationäre Rechner besser geeignet als Laptops, außer es werden noch GPS-Daten zusätzlich erfaßt und übermittelt, was aber ein größeres Mißbrauchsrisiko der Daten impliziert. Wenn Millionen von Nutzern mitmachen würden, hätte man genug Daten, um die Ungenauigkeiten der Messung teilweise zu eliminieren, weil nach dem Gesetz der großen Zahl angenommen werden kann, daß sich zufällige Fehler relativ gesehen verringern, wenn man etwa Mittelwerte vieler Meßwerte bildet. Systematische Meßfehler eines Sensors kann man auch erkennen und korrigieren oder sogar die Ausreißer weglassen. Noch besser wäre vielleicht eine Gewichtung der Meßwerte nach Qualität.

Eigentliche Mittelwerte sind nur sinnvoll, wenn man mehrere Festplatten am selben Standort hat, ansonsten wäre wohl eine mehrdimensionale Funktion, die von Ort und Zeit abhängt, zu approximieren. Die Geophysiker wissen etwa, wie diese Funktionen aussehen könnten und man kann die Meßwerte, von denen man Ort und Zeit kennt, verwenden, um ein paar Parameter dieser Funktion abzuschätzen. Diese Daten könnte man mit den genaueren Messungen der professionellen Geräte kombinieren. Der Vorteil der Festplattensensoren wäre vor allem, daß man ein viel flächendeckenderes Sensorennetz erhielte als man je durch Aufstellen von Seismographen bezahlen könnte. Das wäre eine echte Big-Data-Anwendung.

Share Button

Antispam-Plugin AntispamBee

Inzwischen haben die Spam-Kommentare in diesem Blog ein Maß erreicht, das sich manuell nicht mehr vernünftig handhaben läßt.
Deshalb setze ich neu Antispam Bee als Spamfilter ein. Im Gegensatz zum von WordPress mitgelieferten Akismet soll dies europäischen Datenschutzvorstellungen gerecht werden.

Share Button

Frankfurter DB-Tage

Ein bißchen Weiterbildung muß wohl immer wieder mal sein und so schaue ich mir jetzt ein oder zweimal im Jahr eine Konferenz von innen an.

Da es ja hier um Speicherung, Verarbeitung und Übermittlung von Informationen geht, habe ich mich etwas eingehender über die Themen im Zusammenhnag mit der Speicherung interessiert und die Frankfurter Datenbanktage besucht. Wie üblich gab es jeweils noch ein paar Stände, an denen man sich im Rest der 15-min-Pausen noch unterhalten konnte.

Interessante Themen waren „BigData“ und dessen Abgrenzung, die Frage, für welche Zwecke man klassische transaktionale relationale SQL-Datenbanken einsetzt und für welche Zwecke man sich für die vielfältige Welt der „NoSQL“-Datenbanken interessiert und vielleicht für die Lösung fündig wird und wie die Anbieter der klassischen Datenbanken versuchen, auch diesen Bereich abzudecken. Bekommt DB2 eine MongoDB-kompatible Schnittstelle, so daß man für Mongo-DB entwickelte Software mit DB2 statt MongoDB betreiben kann? Oder wie integriert man die verschiedenen Welten miteinander, wenn eine Aufgabenteilung sinnvoll ist?

Datenbank-Security ist ein interessantes Thema gewesen, sowohl in Vorträgen als auch bei Ausstellern. Welche Wege bestehen für Angreifer, die Daten zu lesen oder gar zu verändern und wie kann man das unterbinden oder doch zumindest so weit erschweren, daß das Risiko sehr klein wird?

Wie sieht es mit Clustering aus? Wie kann man die Performance optimieren, wo sind die Grenzen? Das können alle „großen“ Datenbanken, auch mySQL und mariaDB. Aber es gibt verschiedene Wege. Was sind die neuen Features der Datenbanken? Oracle hat zum Beispiel so etwas wie Virtualisierung vorgesehen, was es endlich ermöglichen soll, mit vertretbarem Ressourcen-Aufwand mehrere Datenbankinstanzen zu haben, indem diese als eine Art virtuelle Instanzen in einer Masterinstanz laufen.

Wie nutzt man heutige Hardware optimal oder wie investiert man in Hardware am sinnvollsten, um performante DB-Infrastruktur zu erhalten?

Es war also recht interessant…

Share Button

Zufallszahlen

Wofür braucht man überhaupt Zufallszahlen? Es gibt recht viele probabilistische Algorithmen, die besser funktinonieren, wenn man „gute“ Zufallszahlen hat. Besonders wichtig sind diese aber auch in der Kryptographie, zum Beispiel zur Generierung von Schlüsseln.

Die Qualität der Zufallszahlen ergibt sich aus der Vorhersehbarkeit des nächsten Werts. Wenn dieser z.B. mit heutigen Mitteln aus bekannten Werten berechnet werden kann oder nur schon dieser berechnete Wert mit höherer Wahrscheinlichkeit zu erwarten ist als bei Gleichverteilung, dann sind die Zufallszahlen nicht mehr optimal. Man kann dann zum Beispiel den „private key“ eines Schlüsselpaars erraten und dadurch die Sicherheit des Verfahrens vermindern.

Nun ist die Frage, ob es wirklichen Zufall in der Natur gibt. Nach heutigen Erkenntnissen glaubt man das und findet als Beispiel den radioakativen Zerfall. Also müßte nur jeder Rechner einen „Radiumkarte“ eingebaut bekommen und schon hätte man überall gute Zuzfallszählengeneratoren zur Verfügung. Doch es gibt einige andere Effekte, die man nutzen kann, z.B. Zenerdioden oder den Luftdruck. Radiowellen aus dem Weltall wären sicher auf den ersten Blick auch gut, aber da diese für jeden empfangbar sind, ist es sehr schwierig, eine Vorhersehbarkeit der Zufallszahlen auszuschließen. Zenerdioden eignen sich wohl auch ganz gut. So kann man recht gute Zufallszahlengeneratoren auf die CPU einbauen: RdRand (en.wikipedia.org) oder rdrand (Intel)

Ist das Thema damit gegessen? Vielleicht, zumindest für viele Anwendungszwecke. Vielleicht traut man dem nicht und braucht dort, wo es wirklich darauf ankommt, noch bessere Verfahren? Auf jeden Fall wird es noch eine Weile dauern, bis man das wirklich verwenden kann. Heute haben das neue Intel-CPUs, wann haben es auch CPUs anderer Hersteller? Wann wird das durch die verschiedenen Betriebssysteme genutzt? Mindestens ein paar Jahre dürfen wir uns noch darauf freuen, daß dieses Feature breit verfügbar ist.

Linux hat einen Zufallszahlengenerator auf OS-Basis, der als /dev/random ansprechbar ist. Dieser nutzt „Zufälligkeiten“ wie Tastatureingaben, Mausbewegungen, vielleicht auch Plattenbewegungen u.s.w. aus. Vielleicht nicht ganz so gut wie rdrand, aber dafür schon lange verfügbar. Vielleicht haben andere Betriebssysteme ähnliche Möglichkeiten.

Wie funktioniert das? Wenn man teilweise zufällige Informationen hat, dann läßt sich das nächste Stück mit einer gewissen Wahrscheinlichkeit vorhersagen. Typisches Beispiel wäre etwa ein Text, der eingegeben wird. Der kann einer abstrakten Sprache angehören, z.B. einer natürlichen Sprache, einer Programmiersprache (mit einer natürlichen Sprache für die Kommentare) oder so etwas. Wenn das einigermaßen fehlerarm eingegeben wird, dann läßt sich ein unvollständiges Wort oft auf nur wenige Arten vervollständigen, so daß von den vielen möglichen Zeichen einige wenige wahrscheinlich sind. Wenn man mal von einem 8-bit-Zeichensatz ausgeht, bringt dieses eine Zeichen vielleicht nur etwa 1 Bit an Information, wenn etwa zwei Vervollständigungen sehr wahrscheinlich sind, statt 8 Bit. Dieses eine Bit wäre idealerweise die Zufälligkeit, also ein Zufallsbit, wenn man es schafft, das herauszudestilieren.

Nun ist es bei eingegebenen Texten etwas schwieriger. Wenn das bekannte Texte sind, etwa weil es abgeschrieben wird, oder wenn es ein ehemaliger Minister schreibt, sogar kopiert wird, dann besteht die Zufälligkeit nur noch in der Auswahl der passenden Texte, aber auch bei selbstgeschriebenen Texten schränkt der Kontext ein, was passen würde und was wahrscheinlich ist. Hinzu kommt das Wissen des Schreibers, dessen „Fingerabdruck“, der sich auch in den verfaßten Texten (oder Programmen oder was auch immer geschrieben wird) ausdrückt. Vielleicht ist das Wissen eines Menschen groß genug, um für viele Jahre oder sogar ein Leben lang Texte zu produzieren, die genug Zufälligkeit enthalten, aber wenn keine neue Information durch Kommunikation einfließt, ist das doch zu hinterfragen. Aber viele von uns arbeiten in Bürotätigkeiten, die in irgendeiner Form überwiegend darin bestehen, zu kommunizieren oder doch zumindest etwas einzugeben oder zu schreiben. Vielleicht gibt es dabei gänzlich unkreative Tätigkeiten, wo man etwas ausfüllen muß und genau eine Lösung richtig ist. Aber alle auch nur teilweise kreativen Tätigkeiten produzieren Information, die ohne diese nicht da war und würden sich somit als Basis für die Zufallszahlengenerierung grundsätzlich eignen.

Wir brauchen vielleicht den Kontakt zu unseren Mitmenschen, um neue Ideen zu entwickeln. Und nun fließt die aufgenommene Information natürlich wieder ein. Deshalb ist die Zufälligkeit der geschriebenen Textinhalte nicht leicht abzuschätzen und sie sinkt vielleicht um eine Größenordnung, wenn man verschiedene der hier angesprochenen Aspekte zu fassen bekommt oder ignoriert, weil man sie für nicht fassbar hält. Nun kann man die Texte aber verlustfrei komprimieren. Wenn man viel darüber weiß, was wirklich die reine Information (oder der Zufallsgehalt) ist, auf eine Größe, die knapp über diesem Informationgehalt liegt. Nun kann man auch geschickte „Hash-Codes“ verwenden, die aus den Texten Bytesquenzen generieren, die etwas kleiner sind, als der Informationsgehalt. Wenn das gut gemacht wird, ist das ein brauchbarer Zufallszahlengenerator, der aber für kryptographische Anwendungen sofort einiges an Wert verliert, wenn man aus der Kommunikation der Person nach dem Verfassen des Textes oder gar aus der direkten Verwendung des Textes Rückschlüsse auf diesen ziehen kann.

Wenn der Text öffentlich oder teilweise öffentlich zugänglich wird, zum Beispiel auf einer Webseite erscheint, wie der Text, der hier gerade geschrieben wird, dann besteht die Zufälligkeit nur noch in der Auswahl des Textes von den Milliarden Webseiten, die es gibt, was aber nur noch maximal ein paar Dutzend Bits sind. Und wer will schon eine kreative Tätigkeit nur für die Zufallszahlengeneration ausüben, ohne daß die eigentlichen Ergebnisse dieser Tätigkeit sinnvoll verwendet werden? Und wer will das gar noch bezahlen?

Die Zeitabstände zwischen den Tastatureingaben sind sicher auch so etwas wie ein Fingerabdruck, was individuell den Schreiber erkennen ließe, aber die Zufälligkeit dieser Zeiten läßt sich viel besser nutzen, weil wir das nicht verwenden, um Information zu transportieren. Ich werde mich also auch nicht erinnern, welche Zeitabstände ich zwischen den Zeichen hatte, außer daß der Schreibrhythmus natürlich beim nächsten Mal ähnlich (aber nicht identisch) sein wird. Und die Zeitabstände sind auch nicht auf dieser Webseite nachlesbar.

Share Button

Rails 4.0 Beta

Rails 4.0 Beta. 😉

Share Button

Über die Lebensdauer von Multimediadaten

Diese Fotos mit Negativen, Dias und auf Papier sind heute nicht mehr „in“ und man sieht es alten Fotos an, daß die Farben schlechter werden.

Die Digitaltechnik löst viele Probleme, man kann Bilder ohne Farbverlust beliebig lange aufbewahren und muß beim Abdrücken nicht mehr an den Preis des Filmmaterials denken, weil das einzelne Foto ja fast nichts kostet. Ein bißchen schon, weil die Kamera verschlissen wird, die Speicherkarten nur begrenzt viele Schreibzyklen mitmacht und sogar noch Strom verbraucht wird, aber das kann man alles gegenüber dem Preis von Filmmaterial vernachlässigen. Solche Fragen stellen sich zum Teil auch bei der Video- und Audioaufzeichnung, wo sich lange Zeit analoge magnetische Aufzeichnungsverfahren etabliert hatten, oft gerade dort, wo die Qualitätsanforderungen nicht maximal waren. Ich bleibe mal hauptsächlich bei den Fotos und gehe kurz darauf ein, wenn die anderen Formate spezielle Aspekte berücksichtigt haben sollten.

Aber wie sieht es nun mit der Lebensdauer und den Kosten der langfristigen Archivierung bei Multimediadaten aus? Zunächst braucht man sehr viel Platz, aber bei jedem Baumarkt, Supermarkt und auch im Internet kann man für wenig Geld solche USB-Festplatten mit einigen Terabyte Kapazität kaufen. Also kopiert man die Dateien da drauf und solange es nur wenige sind, hat man dafür Platz und findet die Sachen auch wieder. Oder man speichert die Bilder in der Cloud, wobei dort viele Terabyte auch viel Geld kosten. Wird sich das ändern? Vielleicht, aber vielleicht stoßen wir auch an technologische Grenze, was die Aufzeichnungsdichte betrifft und können keine großen Preissenkungen für Plattenplatz mehr erwarten, bis einmal völlig neue Technologien die magnetische Aufzeichnung ersetzen und vielleicht auch neue Möglichkeiten bieten.

Lebensdauer

Aber wie sieht es mit der Lebensdauer solcher Multimedia-Dateien aus? Ich glaube, daß die im Durchschnitt sehr viel kürzer ist als bei den alten Verfahren. Was kann alles schiefgehen:
* Die Formate. Ein propritäres Format schafft eine Abhängigkeit von einem Software-Anbieter, den es in einigen Jahren vielleicht nicht mehr gibt oder der kein Interesse mehr hat, das frühere Format zu unterstützen.
* Datenverlust durch Festplattenschaden: Gelegentlich geht eine Festplatte kaputt, was zu Datenverlust führen kann. Backup machen wir alle regelmäßig, aber an dem Tag vor dem Plattencrash hat man es vergessen oder stellt fest, daß die Backups gar nichts kopiert haben oder nicht lesbar sind.
* Datenverlust durch vesehentliches Löschen
* Man findet die richtige Datei nicht mehr
* Physikalischer Verlust des Mediums durch Feuer, Diebstahl, Wasserschaden o.ä., aber das kann mit Negativen und Dias auch passieren.

Alle diese Punkte lassen sich lösen, wenn man bereit ist, den Aufwand zu treiben.

Formate

So sinnvoll es sein kann, bei Fotos dir proprietären „raw“-Dateien aufzubewahren, so wichtig ist es, bei Bildern, die wirklich wichtig sind, zusätzlich oder stattdessen ein Format aufzubewahren, das standardisiert ist und für dessen Verarbeitung es Open-Source-Software gibt, auch wenn man diese heute nicht verwendet. Wer in 20 Jahren ein Nikon- oder Canon-Raw-Format von 2013 noch lesen kann, ist nicht sicher. Aber png und dng werden wahrscheinlich in 20 Jahren noch lesbar sein. Und auch wenn man heute lieber Photoshop als Gimp oder lieber Lightroom als Darktable verwendet, ist für die langfristige Lesbarkeit von Formaten hilfreich, daß es Opensource-Software gibt, die diese Formate verarbeiten kann und aus deren Quelltexten sich auch in 20 Jahren noch Software erstellen läßt, die das kann, selbst wenn es Photoshop und Lightroom dann nicht mehr geben sollte.

Backups

Man muß wohl ein regelmäßiges Backup der Bilddateien machen, um eine gute Chance zu haben, diese in 20-30 Jahren noch zu haben, auch wenn sich absolute Sicherheit nicht erreichen läßt, nicht einmal mit Negativen und Dias. Wenn man nun aber eifrig fotografiert, filmt,…. kommen jedes Jahr Unmengen an Daten dazu. Das heißt, daß der Aufwand, den man so pro Monat für Backups treiben muß, auch immer größer wird. Nur mal als Überlegung: Sagen wir die Bilder sind als DNG etwa 100 MB groß, denn wir wollen ja mit der neuesten Megapixel-Technlogie fotografieren, wenn nicht heute, so doch sicher bald innerhalb der nächsten 20-30 Jahre. Man verwendet 2TB-USB-Festplatten und macht 20’000 Fotos pro Jahr. Da paßt ein Jahr auf eine USB-Platte. Das geht noch, aber mit der Zeit hat man eine ganze Sammlung davon und muß wissen, welches Bild wo ist und noch ab und zu Backups machen. Die Platten werden natürlich noch größer, die Bilder aber auch.

Wenn man aber sortiert, also beim Fotografieren ein bißchen nachdenkt, wie wenn man Filmmaterial benutzt, dann die schlechten Bilder löscht oder zumindest nur als JPG aufbewahrt, um aus den Fehlern zu lernen, dann kann eine solche USB-Platte für viele Jahre reichen und der ganze Vorgang bleibt beherrschbar.

Bei Videos ist das alles wohl noch schwieriger. Die Formatvielfalt ist unübersichtlicher, Videos belegen mehr Plattenplatz und es gibt auch sehr viel mehr propritäre Formate. Man sollte sich aber auch gut überlegen, bevor man auf ein Format mit weniger Information (verlustbehaftete Kompression, Verringerung der Auflösung) wechselt. Interessant ist es auch, wenn man für ein größeres Projekt eine Video-Software beschafft, bei der man den Zugriff auf das Material verliert, sobald man aufhört, die Lizenzen dafür zu zahlen.

Metainformation

Woher weiß man, was in der Datei drinsteht? Sprechende Dateinamen können helfen, aber reichen nicht unbedingt aus. Fotos kann man immer noch recht schnell anschauen, aber wenn es viele sind, dauert das schon zu lange. Bei Videos ist das noch viel schlimmer. Deshalb ist gute Metainformation hilfreich, nach der man suchen kann, also Information, der beschreibt, was auf dem Bild, dem Video, der Tondatei o.ä. drauf ist, am besten strukturiert.

Share Button

Ruby 2.0 ist seit 2013-02-24 verfügbar

Ruby 2.0 ist seit 2013-02-24 verfügbar:

Share Button

Integration numerischer Typen in Programmiersprachen

Rechnen ist ja das, was wir mit den Computern so machen, deshalb heißen sie ja auch Rechner.
Und zum Rechnen brauchen wir die numerischen Typen andauernd, also kann das wohl kein Problem sein, oder?

Es hängt ein bißchen davon ab, was man sich unter numerischen Typen vorstellt. Fließkommazahlen oder irgendeine Art von Ganzzahlen können fast alle, manche sogar beides. Gute Ganzzahlentypen sind aber leider nur selten verfügbar, da die Frage des Überlaufs oft schlecht gelöst ist. Weitere interessante numerische Datentypen sind rationale Zahlen, komplexe Zahlen und Festkomma-Dezimalzahlen.

Doch wie sieht es mit der Integration in die Sprache aus? Man möchte gerne so etwas wie
a = b*c + d*e
schreiben und meint damit, daß eine Zuweisung an a erfolgen soll, die den Wert (b*c) + (d*e) beinhaltet. Wegen „Punktrechnung vor Strichrechnung“ sollte man die Klammern aber weglassen können. Im Fall von Sprachen wie Lisp oder Forth, die eine völlig andere Syntax verwenden, paßt diese Infix-Schreibweise natürlich nicht ins Bild und man kann diese Anforderung nicht sinnvoll stellen. In Lisp mit der Präfix-Schreibweise wäre es so etwas wie:
(setq a (+ (* b c) (* d e)))
und in Forth mit seiner Postfix-Schreibweise wäre es etwa so etwas:
b @ c @ * d @ e @ * + a ! .
C, Perl, Ruby, C++, Java, C#, JavaScript, Lua und vielen anderen funktioniert das mit den eingebauten Datentypen recht gut, aber sobald man eigene numerische Datentypen einführt, braucht man so etwas wie „Operator überladen“, was z.B. Lua, Perl, Ruby, C++ und C# können, aber Java und JavaScript nicht. Deshalb fängt man in Java an, für BigDecimal, BigInteger oder eigene Datentypen so etwas wie
a = b.multiply(c).add(d.multiply(e))
zu schreiben, was praktisch unlesbar und damit fehleranfällig ist. Vielleicht kann man sich mit einem Präprozessor behelfen, aber es bleibt ein Gebastel.

Ein anderer Aspekt ist am Beispiel von Java ganz gut zu sehen. Dort soll ja „alles“ ein Objekt sein. Man kann schön Interfaces, Klassen und Methoden schreiben und Verwenden, die sich auf Objekte verlassen, wie z.B. Map. Nun sind diese „primitiven“ Typen leider keine Objekte und man muß diese Wrapper-Klassen wie Integer, Double, Long, Boolean u.s.w. verwenden, was leider umständlich ist, zumal man mit den Wrappern die numerischen Fähigkeiten nicht mehr zur Verfügung hat. Scheinbar wurde das durch Autoboxing und Autounboxing gelöst, aber ich glaube, daß diese Erweiterung mehr Probleme geschaffen als gelöst hat. Nur als Beispiel, was bedeutet
x==y
wenn x und y long oder Long sind? Mal wird die Objekt-Identität und mal der Wert verglichen und ich vergesse immer, ob unboxing oder boxing zum Zuge kommt, wenn man dabei long und Long zusammenkommen läßt. Man kann aber einige spezielle Collection-Klassen finden, die auf Primitive zugeschnitten sind und dadurch ohne Boxing und Autoboxing auskommen, schneller laufen und weniger Speicher verbrauchen. In erster Linie bleibt es aber umständlich, weil man immer wieder diese Sonderfälle für Primitive und zum Teil auch Arrays berücksichtigen muß.

Share Button