SucheBlog abonnierenVerwaltung des BlogsKategorienKontaktMarkus Brückner |
Mittwoch, 26. Oktober 2005Ubiquitous ComputingUbiquitous Computing bezeichnet die Allgegenwärtigkeit der Informationsverarbeitung. Sprich: wo man geht und steht (und liegt) hat man Zugriff auf Computer. Und weil ich das für eine tolle Idee halte, hab ich gebastelt. Ach ja, zur Vorgeschichte: ich bin heute 2 Stunden auf einem recht zugigen Dach rumgesprungen um Dinge zu bauen. Zum Warmwerden kann man sich bequem in die Badewanne legen. Und weil es da langweilig ist und man eh mal einige Dinge lesen wollte, kommt einem eben das Ubiquitous Computing in den Sinn. Ein Gaffa-Tape und ein Brett später: ![]() Computer sind wirklich überall... Achim wettet übrigens 5 EUR, daß ich das Netzwerkkabel versenke. Ich bin ja der Meinung, es erwischt meinen Laptop. Deswegen habe ich ihn vorsichthalber vom Strom getrennt. Ach ja, WLAN geht leider aus verschiedenen Gründen grad nicht... Samstag, 22. Oktober 2005Mein neuer Ausblick bei TagLetzens habe ich ja schonmal verkündet, welche Vorteile so ein Umzug ausblicksmäßig bringen kann. Allerdings war es da dunkel. Ich hab mich also heute genötigt gefühlt, das gerade hier vorhandene Sigma 18-50mm F2.8 EX DC mal zu testen und ein Panorama von unserem Balkon bei Tag zu machen. Das Ergebnis sieht man unten. Mein privates Testergebnis lautet: nettes Objektiv, aber bei 18mm Brennweite am Rand auch recht unscharf. Ob sich der Preis lohnt vermag ich nicht zu sagen. Es ist ja glücklicherweise nur geliehen :-) shfs Compile-Fehlershfs ist ein Linux-Kernelmodul zum Mounten von Dateisystemen über SSH. Es ist nur für diese eine Aufgabe da und daher meiner Meinung nach wesentlich einfacher einzurichten als bspw. FUSE. Leider hat es so seine Probleme mit dem GCC 4.x. Dieser meldet nämlich beim kompilieren des letzten Releases shfs 0.35: /usr/src/shfs-0.35/shfs/Linux-2.6/dir.c:491: error: static declaration of 'shfs_dentry_operations' follows non-static declaration /usr/src/shfs-0.35/shfs/Linux-2.6/shfs_fs.h:53: error: previous declaration of 'shfs_dentry_operations' was here (Das Beispiel ist hier für einen 2.6er Kernel.). Die Lösung ist so simpel, wie wirkungsvoll: man entferne in der dir.c in Zeile 491 das static vor struct. Ich bin mir im Moment nicht 100% sicher, was static an dieser Stelle bewirken sollte. Ich vermute, daß es die struct außerhalb der compile unit verfügbar machen soll. Das eledigt nun allerdings scheinbar schon das extern in shfs_fs.h:53. Falls ich mich irre: Kommentare gern erbeten!. Mittwoch, 12. Oktober 2005Das Forenphänomen Teil 2Nachdem ich mich ja letztens schonmal über die Eigenheiten von Webforen aufgeregt habe, ist mir heute wieder ein besonders schönes Exemplar eines weiteren Phänomens zugetragen worden: der wahrnehmungsresistente Fotograf. Scheinbar ist es speziell in Tierforen gang und gäbe, daß man alles, egal was es für eine verschwommene Ansammlung von Pixeln ist, als tolles Foto der entsprechenden Tierart durchgehen läßt. Ein besonders schönes Beispiel haben wir diesmal im Deguforum. Nutzerin "Annabelle" berichtet hier ganz stolz von ihren neuen Tierchen und untermalt das ganze mit passenden Fotos. Wir konnten trotzdem fachlicher Unterstützung nicht herausfinden, womit die Bilder gemacht worden. Mir ist jedenfalls keine Kamera bekannt, die in einem Bild absolut nichts scharf stellt. Also, jedenfalls nicht, wenn man die typischen Idioteneinstellungen verwendet. Nun, ok, das kann ja mal passieren. Ist mir ja auch schon passiert. Allerdings sortiere ich diese Bilder dann für gewöhnlich einfach aus und kotze sie nicht in das weltweite Netz zur allgemeinen Begutachtung. Das beste ist: sie bekommt auch noch Kommentare wie "süss..." dafür! Ja was ist da denn süss? Der vermatschte, dunkle Pixelhaufen auf den Bild? Zu Hülf... Damit keiner sagt, ich denk mir sowas aus... ![]() Die wissen schon, wieso man nur als Forenmitglied antworten darf... Mittwoch, 5. Oktober 2005Französische Sprache, schwere Sprache...
Da gab es mal einen schlauen Franzosen mit dem schönen Namen Fourier. Dieser hat was ganz grundlegendes für die Signalverarbeitung geschaffen, nämlich die nach ihm benannte Fourier-Transformation. Dieser Begriff kann unter Umständen in der mündlichen Prüfung für einen Informatiker vorkommen. Tja, wenn es mit dem Französisch nicht so klappt, dann muss man sich eben anders helfen...
![]() Furir...äh...Fourier! Montag, 3. Oktober 2005Fubar
Die IETF definiert wichtige Dinge für das Internet in den RFCs. Und manchmal (meist zum 1.4.) klärt sie über verschiedene wichtige, aber meist unbeachtete Details auf. So auch über die Etymologie der Variable foo. Rausgekommen ist dabei RFC 3092. Die Informationen darin sind im übrigen nicht falsch. Mir gefällt ja persönlich der verwandte Begriff SNAFU besser, beschreibt er doch perfekt den Zustand meiner Diplomarbeit...
Zwei neue PanoramenGestern stand ein Besuch auf der Nürnberger Kaiserburg an. Wirklich mal empfehlenswert, wenn auch die Führung recht teuer ist. Bei der Gelegenheit sind wieder zwei recht nette Panoramen entstanden. Das eine zeigt den Innenhof der eigentlichen Kaiserburg (die gesamte Burg ist in 3 Teile geteilt, von denen nur einer wirklich die Kaiserburg ist). Auf dem anderen ist ein 220° Blick von der Burg über Nürnberg zu sehen. Dieses Panorama besteht aus 3 Bilderreihen und zeigt über die Vertikale 120° Bildwinkel. Wie man erkennen kann fehlen dort noch einige Ecken. Irgendwie muss ich noch üben, solche Panoramen zu fotografieren... Samstag, 1. Oktober 2005Scharfe Sachen...
Tjaja, so langsam bekommen meine Habaneros doch Farbe. Und es hängen auch noch ein paar grüne dran. Schauen wir mal, wie die werden...
![]() Ein paar Habaneros Bereichsgeprüfte Datentypen in C++Nach all dem privaten, nichttechnischen Kram mal wieder etwas technisches. Schließlich muss man den Unmengen von Lesern (so 3-5) ja auch was bieten. Statt Sex, Drugs and Rock'n'Roll gibt es mal wieder C++ und Templates. Aber von vorn... In einem Anfall von Langeweile habe ich mich mal ein wenig nach Links zur Programmiersprache Ada umgeschaut. Diese wird generell als die Sprache der Wahl zur Entwicklung sicherer Software gehandelt, da sie viele eingebaute Möglichkeiten bietet, Korrektheit im Programm sicherzustellen. Ein nettes Feature, welches mir aufgefallen ist sind bereichsgeprüfte Datentypen. Man kann in Ada einen numerischen Datentyp in folgender Form definieren:
type Time_Of_Day is range 0..86399; Das definiert einen Typ Time_Of_Day, der Werte von 0 bis 86399 annehmen kann. Das hat mich dazu inspiriert, mal wieder ein wenig mit Templates rumzuspielen um sowas in C++ nachzubauen. Ziel war es, möglichst wenig Speicherplatz pro bereichsgeprüfter Variable zu verwenden und möglichst wenig Laufzeitoverhead zu haben. Grundsätzlich kann man einen bereichsgeprüften Datentyp auf zwei Arten implementieren: einmal können die Grenzen als Membervariablen in jedem Objekt abgelegt sein und zum anderen können diese als Templateparameter übergeben werden. Die Entscheidung zwischen beiden Varianten ist eine Abwägung zwischen Codegröße und Datengröße. Die Templatevariante führt bei vielen verschiedenen Typen mit unterschiedlichen Grenzen zu einer erheblichen Vergrößerung des Quellcodes, da für jedes Paar von Grenzen eine Templateinstanz angelegt wird. Auf der anderen Seite führt die Haltung der Grenzen im Objekt selbst bei vielen Objekten zum einem erheblichen Speicherbedarf, da nun jedes Objekt Platz für die Werte der Grenzen braucht. Da es das Ziel war, möglichst wenig Speicher für die Objekte zu verwenden, habe ich mich für die Templatevariante entschieden. Das Template wird wie folgt verwendet: RangeChecked<int, 0, 10> var(5). Hiermit wird eine Variable var mit dem Interval [0,10] angelegt und auf den Wert 5 initialisiert. Da sich 5 doch recht klar in [0,10] befindet, geht das auch gut. Befände sich der Initialisierungswert außerhalb, würde eine Exception vom Typ RangeError geworfen. Das Template stellt verschiedene Operationen für numerische Datentypen (+, -, /, = und so weiter) zur Verfügung. Zu beachten ist hierbei, da immer nur die Zuweisungen geprüft sind. Überschreitet also der Wert eines Ergebnistyps innerhalb einer Gleichung kurzzeitig den Bereich, so passiert nichts, da erst der Zuweisungsoperator prüft. val = 10 + 5 - 7; wäre im obigen Beispiel also kein Problem, da das Endergbenis bei der Zuweisung wieder in [0,10] liegt. Eine Zuweisung Variablen unterschiedlicher Intervalle ist auch möglich, solange der zugewiesene Wert im Intervall des Ziels liegt. Als Templateparameter kommen prinzipiell numerische Typen in Betracht. Jedoch gibt es hier eine Ausnahme: Fließkommazahlen können keine Verwendung finden. Der Grund hierfür liegt in den Regeln des C++-Standards. Dieser spricht folgendes zu non-type parameters: 3 A non-type template-parameter shall have one of the following (optionally cv-qualified) types: Fließkommazahlen als Templateparameter sind also nicht erlaubt (hauptsächlich der erste Teil mit den integral types ist interessant. Eine genaue Begründung dafür kann ich nicht geben. Der Versuch einer Diskussion findet sich in de.comp.lang.iso-c++. Vorherrschende Meinung scheint zu sein, daß sich bei der Instanziierung von Templates mit Fließkommaparametern gewisse Probleme mit der Genauigkeit der Zahlendarstellung ergeben. Das Problem der nicht exakten Darstellbarkeit vieler Fließkommanzahlen in Computern wird bei Vergleichen in Programmen typischerweise dadurch umgangen, daß zwei Werte als gleich definiert werden, wenn sie innerhalb einer Schwelle Epsilon liegen. So vermeidet man Probleme durch Rundungsfehler etc. Im Fall von Templateparametern ist das allerdings nicht so einfach. Dort gibt es nur Gleichheit oder Ungleichheit. So könnte eine etwas groteske Situation entstehen: für folgendes Template existieren die beiden Instanziierungen a und b: template <double d> class Test
{
};
Test<1.0> a;
Test<0.7+0.3> b;
Sind diese beiden Instanzen vom selben Typ? Der gesunde Menschenverstand würde sagen "Ja, denn 0.3+0.7==1.0.". Ein Compiler kann das eventuell anders sehen. Da weder 0.3, noch 0.7 auf gängigen Architekturen exakt binär darstellbar sind, könnte es durch Rundungsfehler dazu kommen, daß statt 1.0 eben nur 0.9999999 entsteht. Verdammt nah dran an der 1.0, aber eben nicht gleich. Eine Verwendung von b an einer Stelle, wo Test<1.0> erwartet wird müßte also scheitern. In dem verlinkten Thread werden einige Ansätz diskutiert, wie dieses Problem zu lösen sei (symbolisch rechnen, nur Literale als Parameter erlauben). Alle diese Ansätze haben gewisse Probleme (Aufwand, Unterschiede zwischen verschiedenen Compilern etc.). Man darf also gespannt sein, ob sich das Standardisierungskommitee dieses Problems annimmt und wenn ja, wie die Lösung aussieht. So, nach all dem Geblubber noch schnell das Template zum Runterladen: RangeChecked.hxx. Der Code ist wieder public domain. Die Verwendung ist im Kopf der Datei nochmal erklärt. Das ForenphänomenDas Internet als Untergang des Abendlandes... Irgendwann glaube ich noch dran. Was einem in den verschiedenen Webforen so alles über den Weg läuft ist zum Heulen. Ok, ich bin sicherlich nicht der absolute Rechtschreibgott, aber ich bemühe mich zumindest bei der schriftlichen Kommunikation ein wenig Gewissenhaftigkeit an den Tag zu legen. Tippfehler? Geschenkt! Mal ein fehlendes Komma? Interessiert keinen. Unklarheit, wie ein Wort geschrieben wird? Was soll's. Aber was man in manchen Webforen so zu lesen bekommt sprengt jeglichen Rahmen. Es gibt da ja verschiedene Typen von Schreiberlingen. Zwei davon sind mir heute wieder besonders aufgefallen (ja, wie meist ist sie schuld). Der "Punkte liegen zu sehr am Rand. Shifttasten auch."-TypDieser Typus scheint es im Allgemeinen sehr eilig zu haben. So eilig, daß die Finger auf der Tastatur nicht mal ansatzweise den mittleren Bereich verlassen können. Vielleicht ist es aber auch bloss die allgemeine Blödheit hinsichtlich Interpunktion. carrol schreibt im Deguboard HalloDieser hingekotzte Haufen Buchstaben möchte dem Leser offensichtlich ein gewisses Problem mit der Promiskuität der Tierchen mitteilen. Wenn man jetzt nicht nur den mittleren Teil der Tastatur verwenden würde, sondern sich auch mal in Richtung Shift-Taste und Interpunktionstasten umschaute, dann wäre das sogar lesbar. Aber nun ja, es muss ja alles schnell gehen... Der "Ich mag Smileys"-TypJedes Webforum ist offenbar der Meinung, daß Smileys eine tolle Sache sind. Ok, prinzipiell ist das ja auch nicht verwerflich. Die Emoticons/Smileys waren und sind eine nützliche Möglichkeit, die Einschränkungen des Schriftmediums hinsichtlich des Transports von Stimmungen etwas zu kompensieren. Aber das, was Webforen für gewöhnlich anbieten und was dann auch genutzt wird würde ich "Überkompensation" nennen. Nehmen wir auch hier ein Beispiel aus dem Deguboard (von roterosefee): ![]() Smileys, überall Smileys... Wunderbar. So viele Gefühle auf einen Haufen! Ich bin begeistert. Oh, im Original ist das ganze natürlich alles animiert und springt und hüpft, daß einem die Augen übergehen. Epileptiker dieser Welt vereinigt euch! Die für mich interessante Frage: ist das deutsche PISA-Ergebnis nun Ursache oder Folge dieser Dinge?
(Seite 1 von 1, insgesamt 10 Einträge)
|