Jan-Gerds Blog Homöopathische Fachklinik für Doofe

29Sep/090

Webcomics: Penny Arcade

RSS-Feed, Link

28Sep/090

AdSense

Ich bitte um etwas Nachsicht für die Werbeanzeigen auf der Seite, ich teste da gerade etwas für eine völlig andere Gelegenheit. Sie werden nicht dauerhaft hier bleiben.

Update: Das war’s auch schon, die Anzeigen sind wieder weg. Vielen Dank an denjenigen, der tatsächlich eine angeklickt und mir drei Cent Einnahmen beschert hat.

veröffentlicht unter: A series of tubes, Meta keine Kommentare
17Sep/090

Webcomics: xkcd

xkcd - A Webcomic of romance, sarcasm, math and language

RSS-Feed, Link

17Sep/090

Webcomics: Questionable Content

Dies ist der erste einer Reihe von Posts in der ich euch (dir? Hallo Markus!) meine Lieblingscomics näher bringen möchte. Ohne viele Worte nur mit einem Beispielbild, RSS-Link und Adresse zur Webseite. Den Anfang macht „Questionable Content“: RSS-Feed, Link.

Von allen Webcomics einer der besten
4Sep/090

Weniger ist mehr

Es ist die vielleicht nervigste Software des Internets und die häufigste aller Ursachen für Abstürze unter Mac OS X (zumindest bis Snow Leopard): Flash. Nebenbei treibt das Ansehen eines YouTube-HD-Videos in Flash gerne mal einen ganzen Prozessorkern an seine Leistungsgrenzen, von nerviger Werbung, unter Umständen mit Sound, auf StudiVz und Spiegel Online gar nicht zu reden.

Für Firefox ist dagegen mit Flashblock schon seit langer Zeit ein Kraut gewachsen, jetzt gibt es mit ClickToFlash endlich auch etwas vergleichbares, sogar besseres, auch für Safari auf dem Mac. ClickToFlash ersetzt alle Flash-Elemente einer Seite mit Platzhaltern und lädt sie erst nach einem Klick auf diese Grafik. Das allein wäre schon Grund genug für den gut 500 KB großen kostenlosen Download, aber das Plugin kann noch mehr: Auf YouTube ersetzt es wahlweise auch den Flashplayer und erlaubt es stattdessen direkt die H.264-Videos (wahlweise auch in HD) per QuickTime-Plugin im Browser zu sehen, auf neueren Macs sogar Hardware beschleunigt (ist das nach neuer Rechtschreibung so richtig?). Ganz nebenbei laden die meisten Seiten auch deutlich schneller, weil die Werbung darin häufig mehrfach so größer ist als der Inhalt. Unten eingebettet gibt es noch ein kurzes Video das Spiegel Online, StudiVz und YouTube je einmal mit und einmal ohne ClickToFlash zeigt, dazu einmal rechts unter diesem Text auf „weiterlesen“ klicken.

veröffentlicht unter: Apple, Software weiterlesen
1Sep/090

Politik ist ein kompliziertes Feld

Als Informatiker werde ich in letzter Zeit häufiger gefragt, ob ich denn auch die Piratenpartei wähle. Tue ich nicht, aber ich habe trotzdem für ihren Wahlkampf gespendet. Es erscheint vielleicht etwas merkwürdig, eine Partei zu unterstützen, dann aber eine andere (und auch noch den politischen Gegner) zu wählen. Der Grund dafür ist ein einfacher: Ich habe nur eine (relevante) Stimme und die möchte ich nicht allein auf Datenschutz und Persönlichkeitsrechte verwenden.

Ich bin gegen Zensur im Internet und ein Freund von open access, aber am Ende sind das nicht die Themen die mir die wichtigsten sind. Bildung, Wirtschaft und Arbeit sind meines Erachtens noch immer die Themen, die die Zukunft dieses Landes weitaus stärker prägen werden und zu denen die Piratenpartei entweder gar keine Meinung hat oder zumindest meine Meinung nicht teilt.

Die Piraten lehnen beispielsweise die Studiengebühren, die ich für eine (zumindest in NRW) gute Sache halte, strikt ab. Ein Bildungssystem in dem Universitäten auch das Geld haben ihrem Lehr- und Forschungsauftrag auch nachzukommen liegt mir weit mehr am Herzen als ein Internet das nicht vom Staat kontrolliert und reguliert wird. Was nicht bedeutet, dass ich diese Tendenzen nicht für äußerst bedenklich halte. Gleichzeitig wähle ich mit meiner Stimme für die CDU natürlich auch Wolfgang Schäuble und Frau von der Leyen, die gerade für die Dinge stehen, die mir missfallen und meine Stimme womöglich als Zustimmung zu ihren Gesetzen sehen und so würde ich mir am Ende den Ast auf dem ich sitze absägen. Ich würde mir wünschen, das die Piraten zwei oder drei Abgeordnete in den Bundestag senden dürfen damit Datenschutz und Freiheit in Zukunft in Gesetzen die den Datenverkehr betreffen wieder stärker berücksichtigt werden. Das Risiko einer rot-grünen Regierung möchte ich dafür aber nicht in Kauf nehmen. Man stelle sich nur vor SPD und Grüne würden mit 50% zzgl. einer Stimme die Mehrheit und damit die Macht erringen, während ich meine Stimme einer Partei gegeben habe die dann doch an der Fünf-Prozent-Hürde scheitert. Was also tun?

Idealerweise hätte jeder Wähler gleich fünf oder zehn Stimmen, die er nach Belieben auf alle (oder auch nur eine) Partei verteilen kann. So könnte man seinen Wünschen für die nächste Regierungsbildung weit besser Ausdruck verleihen als beim momentanen System. Da ein solches Wahlrecht aber wohl auch mittelfristig nicht zu haben sein wird bleibt weiterhin nur eins zu tun: Der Partei mit der man sich noch am ehesten identifiziert die Stimme geben und die Nischenparteien, die nur eine beschränkte Themenbreite abdecken, anderweitig unterstützen, damit sie sich in Gesetzgebungsprozessen und den Medien Gehör verschaffen können um so vielleicht ihre Vorstellungen auch gegen den Willen der großen Parteien aber mit Unterstützung der Menschen einfließen zu lassen.

Das würde natürlich voraussetzen, dass diejenigen, die die Gesetze machen, denjenigen, die sie betreffen und die sich mit der Materie auskennen, auch Zuhören und ihren Rat ernsthaft annehmen. Das scheint im Moment illusorisch, aber die Hoffnung stirbt bekanntlich zuletzt und ein Versuch kann nicht schaden.

veröffentlicht unter: Politisches keine Kommentare
1Sep/093

GPS-Informationen in EXIF speichern mit C#

Gestern habe ich mich im Zuge eines Downloadr-Updates damit befassen müssen, wie die Ortsinformationen in den EXIF-Headern von JPG- und TIFF-Bildern gespeichert werden. Das Format ist hinreichend seltsam: Es werden für Breiten- und Längengrad je sechs Werte vom Typ Integer in den Tags GPSLatitude bzw. GPSLongitude gespeichert von denen jeweils zwei einen Bruch bilden. Die Werte {60, 1, 20, 100, 0, 1} werden also verarbeitet als \frac{60^\circ}{1} + \frac{20^\circ}{100} + \frac{0^\circ}{1} = 60,2^\circ.

Negative Werte sind nicht zugelassen, um zwischen nördlicher und südlicher Breite bzw. westlicher und östlicher Länge zu unterscheiden gibt es zwei zusätzliche Tags: GPSLatitudeRef („N“ oder „S“) respektive GPSLongitudeRef („E“ oder „W“). Seltsamerweise scheint es üblich zu sein den letzten Bruch nicht zu nutzen und immer eine Null einzutragen.

Üblich sind im Allgemeinen dagegen Gradangaben mit Vorzeichen (negative Werte für Süden und Westen, positive für Norden und Osten). Die Koordinaten für New York lauten beispielsweise 40.712778°, -74.005833°, das entspricht 40° 42′ 46″ N, 74° 0′ 21″ W oder im EXIF-Format den Werten {40, 1, 712, 100, 0, 1} für GPSLatitude und {74, 1, 5, 100, 0, 1} für GPSLongitude. Das Minus als Vorzeichen im Längengrad bedeutet, dass sich die Koordinaten westlich des Nullmeridians befinden, also sind GPSLatitudeRef = „N“ und GPSLongitudeRef = „E“.

Zur Umrechnung einer einzelnen Koordinate von der Dezimaldarstellung in das Bruchformat habe ich folgende Funktion geschrieben:

  1. UInt32[] getExifCoordinate(double coordinate)
  2.         {
  3.             if (coordinate < 0)
  4.                 coordinate = -coordinate;
  5.  
  6.             UInt32 Deg = (uint)Math.Floor(coordinate);
  7.             UInt32 Min = (uint)Math.Floor((coordinate - Deg) * 60 * 100);
  8.             return new UInt32[] { Deg, 1, Min, 100, 0, 1 };
  9.         }

Mithilfe eine BitmapMetadata-Objekts können die Werte nun geschrieben werden:

  1. void writeGPS (double Latitude, double Longitude, BitmapMetadata bitmapMetadata)
  2. {
  3. bool north = (Latitude > 0);
  4. bool west = (Longitude < 0);
  5.  
  6. if (north)
  7. {
  8.  bitmapMetadata.SetQuery("/app1/ifd/gps/subifd:{char=1}", "N");
  9.  bitmapMetadata.SetQuery("/app1/ifd/gps/subifd:{ulong=2}", getExifCoordinate(Latitude));
  10. }
  11. else
  12. {
  13.  bitmapMetadata.SetQuery("/app1/ifd/gps/subifd:{char=1}", "S");
  14.  bitmapMetadata.SetQuery("/app1/ifd/gps/subifd:{ulong=2}", getExifCoordinate(Latitude));
  15. }
  16.  
  17. if (west)
  18. {
  19.  bitmapMetadata.SetQuery("/app1/ifd/gps/subifd:{char=3}", "W");
  20.  bitmapMetadata.SetQuery("/app1/ifd/gps/subifd:{ulong=4}", getExifCoordinate(Longitude));
  21. }
  22. else
  23. {
  24.  bitmapMetadata.SetQuery("/app1/ifd/gps/subifd:{char=3}", "E");
  25.  bitmapMetadata.SetQuery("/app1/ifd/gps/subifd:{ulong=4}", getExifCoordinate(Longitude));
  26. }
  27. }
veröffentlicht unter: C# 3 Kommentare
   

Geschrammel

Geantwortet

Genutzt

Geordnet

Apple A series of tubes Ausflüge C# CD-Tipp Falsches Flickr Fotos Geocaching Grüße von Unterwegs Hintergrundrauschen iPhone Listen Literarisches Münster Medien Meta Musik Philosophisches PHP Politisches Schule Software Spiel & Spaß Stadtlohn Studium Technisches Tiere Windows Wirtschaft wissenswerte Dinge

Geschrieben

Gemacht

Jan-Gerd Tenberge
Rudolf-Harbig-Weg 59 8-54.1
48149 Münster
Deutschland