Archiv für März 2008

13
Mrz

Biometrische Pässe kommen - na und? Ich hab nichts zu verbergen..!

Man hat es ja schon geahnt und jetzt ist es soweit: in der Schweiz wird der Pass 06 nach dem anderthalbjährigen Pilotprojekt definitiv eingeführt. Klar gibt’s noch die gute alte Identitätskarte; günstig und ohne elektronisch erfasste biometrische Daten wie ein Foto und die Fingerabdrücke. Aber wer einen Pass braucht, der bekommt nur noch den Pass 06, wo dann die Daten auch in der zentralen Datenbank des Bundesamts für Polizei gespeichert wird.

(Nachtrag: Die Identitätskarte wird’s leider auch bald nicht mehr ohne Biometrische Merkmale geben -in Zukunft wohl eine Glatze rasieren und einen Strichcode draufmachen müssen? :-(

Und die Preise sollen auch familienfreundlich sein! Von aktuell 250.- pro Pass sollen diese voraussichtlich auf 68.- für Kinder- und 148.- für Erwachsene fallen. Irgendwann. Na das klingt doch fair, oder?

Ok, mal kurz rechnen… Annahme: eine fünfköpfige Familie - die Eltern: George (36) und Hillary (38) - dazu noch drei niedliche Kinder: Obahma (6), Wolfgang (3) und die kleine Angela (3 Monate). Neue Pässe 03 für alle kosten 405 Fränkli. Neue Pässe 06 kommen da schon auf happigere 1110 Batzen - ein kleines Plus von lächerlichen 705 Punktstrichen (.-), also nur fast dreimal (genau 2¾) so teuer. Dafür sind die Pässe der Eltern auch nur noch halb so lange gültig, nämlich lediglich fünf Jahre lang anstatt wie vorher 10 Jahre. Also halb so viel Leistung für fast dreimal soviel Geld. Na da sagen wir doch Dankeschön und Merci!

Aber rechnen wir doch einfach einmal weiter: die Kosten der selben Familie für die nächsten 13 Jahre. Hier die tabellarische Berechnung und auch jeweils eine nette Grafiken dazu:

Pass 03

Hier die Kosten was wir bis anhin bezahlt haben, damit die ganze Musterfamilie in den nächsten dreizehn Jahren gültige Pässe hat:

Tabelle der Passkosten für den Pass 03

Grafik der Passkosten für den Pass 03


Pass 06 - voraussichtliche Preise

Voraussichtlich sollen die Pässe irgendwann einmal soviel Kosten wie unten gezeigt. Einziger Anhaltspunkt ist die wohl ansteigende “Nachfrage” und die damit verbundene Preissenkung durch günstigere Produktionskosten. Aber ob und wann das dann wirklich so kommt kann natürlich niemand genau sagen…

Grafik der voraussichtlichen Passkosten für den Pass 06

Grafik der voraussichtlichen Passkosten für den Pass 06


Pass 06 - aktuelle Preise

Soviel kostet der Spass für die ganze Familie mit den aktuellen Preisen in den nächsten dreizehn Jahren:

Tabelle der aktuellen Passkosten für den Pass 06

Grafik der aktuellen Passkosten für den Pass 06


Gesamtkostenvergleich

Die Gesamtkosten im direkten Vergleich. Egal wie es schlussendlich kommt, eines wissen wir ganz genau: teurer wird es auf jeden Fall - aktuell nur fast dreimal so viel.

Gesamtkostenvergleich der Pässe


Da freuen wir uns natürlich alle ganz toll darauf - und natürlich auch auf den lustigen Familienausflug ins Erfassungszentrum…


Ich hab nichts zu verbergen

Also übers Portemonnaie wird es definitiv einige Leute Schmerzen, aber was ist mit der “Ich-hab-nichts-zu-verbergen”-Fraktion? Kein Problem damit, das alle Biometrischen Merkmale zentral gespeichert werden? Die sind doch sicher gut aufgehoben, oder?

Nun ja, es gibt kein perfektes System und wird es wohl auch nie geben. Egal welchen Aufwand man betreibt, sicher ist kein System hundertprozentig - weder bei der Bank noch beim Bund. Wer es nicht glaubt soll selber lesen: zum Beispiel hier und hier. Und das wird nur die Spitze des Eisberges sein. Keine Firma oder Behörde wird freiwillig eine Datenpanne zugeben wenn sie nicht wirklich muss!

Aber es ist doch egal wenn diese Daten in falsche Hände kommen, was sollen die damit schon anfangen? Die Datensammler wollen möglichst viele Daten miteinander Verknüpfen um den gläsernen Menschen Realität werden zu lassen: bessere Profile helfen dann bei der Kredit- und Hypothekenvergabe, bei der Mitarbeiter-Suche oder einfach beim Online einkaufen, um nur einige zu Nennen. Kriminelle Organisation sind am elektronischen Fingerabdruck interessiert: Der Gratis Eintritt ins Hallenbad oder der kostenlose Einkauf in einem Supermarkt dürften dann wohl die kleinsten Probleme sein.

Aber sind das nicht kleine Einbussen im Vergleich dafür, besser von diesen bösen Terroristen geschützt zu sein? Da kann man wohl ein kleines Opfer erwarten, oder? Statistisch gesehen ist aber leider die Wahrscheinlichkeit von einer Leiter in den Tod zu stürzen wesentlich grösser als der Tod durch Terroristen! Wieso also der ganze Aufwand - einen abrufbaren, polizeilichen Leiterdienst gibt es doch auch nicht? Die Antwort ist recht einfach: die totale Überwachung.

Na und jetzt? Wie gesagt: “ich habe nichts zu Verbergen”, bin ich doch ein redlicher Bürger! Oder? Ich arbeite schon seit einem Jahrzehnt fast täglich mit riesen Datenmengen und kann wahrlich ein Lied davon singen: Es gibt immer irgend welche falsche oder inkonsistente Datensätze! Das Problem für den normalen, braven Bürgen ist nicht, dass er bei etwas Illegalem erwischt wird, sondern die falsche Verarbeitung der Daten! Dies kann zum Beispiel durch eine nicht erfolgreiche Datenbereinigung bei einem Data Minig der Fall sein, welches unter anderem durch eine Gesichtserkennungssoftware gewonnene Daten durch die Videoüberwachung im öffentlichen Raum und den zentral gelagerten Passbildern passiert. Und plötzlich soll man für etwas gerade stehen mit dem man nichts zu tun hat! Die System sind ja über alle Zweifel erhaben und arbeiten zuverlässig. Bei einem Foto kann man zumindest noch auf Aufklärung hoffen, in anderen Fällen kann es aber dümmer enden.

Fiktion? Zukunftsmusik? Denkste! Hier eine kleine Geschichte aus meinem Arbeitsleben die wirklich passiert ist:

Es war einmal ein netter Herr X. Dieser war ein redlicher Bürger und arbeitet hart, lies sich nie etwas zu Schulden kommen und zahlte seine Rechnungen immer pünktlich. Oft und gerne machte er Gebrauch vom Online-Shopping und genoss die Vorzüge der bargeldlosen Zahlungsmittel. Herr X wohnte in einem grossen Wohnhaus und lustiger weise wohnte im selben Haus auch ein anderer Herr mit dem genau gleichen Namen. Dieser jedoch war schon länger Arbeitslos und hatte Mühe all seine Rechnungen zu Bezahlen. Aber egal, er war trotzdem auch ein netter Kerl.

Nach einer gewissen Zeit zog es unseren gut verdienenden Herr X wieder weiter in ein schönes Haus und er genoss seine spärliche Freizeit. Plötzlich jedoch konnte er keine Artikel mehr bei gewissen Internetshops bestellen - ausser auf Vorauskasse! Aber früher hat es doch auch immer problemlos funktioniert, wieso zicken den auf einmal diese blöden, elektronischen Systeme?

Zum Glück war Herr X der Verantwortliche bei einem dieser grossen Schweizer Online-Shopping-Plattformen und stellte per Zufall fest, dass seine Bonität bei Intrum in den Keller gesackt ist. Durch seine Position und der Geschäftsbeziehung zu Intrum war dann das Problem schnell lokalisiert und auch behoben: Beim Umzug sind die beiden Datensätze verwechselt worden.

Aber was ist mit jemandem der nicht dieses Glück hat? Die Bank verweigert einem die Hypothek und man kann sich das schon sicher geglaubte Traumhaus nicht finanzieren? Solange es nur um den Konsum geht, könnte man meinen ist alles nur halb so schlimm. Was aber wäre, wenn bei einem kaltblütigen Raubmord Fingerabdruckattrappen von zufällig deinen, geklauten und verkauften Fingerabdruckdaten verwendet worden wären?

Na dann gute Nacht!

12
Mrz

Flickr on Rails mit Flickraw

Neulich habe ich für die Webseite eines Freundes ein Fotoalbum mit Ruby on Rails entwickelt. Da ich nicht unbedingt die Bilder auf meinem Server haben wollte, lag die Verwendung von Flickr nahe. Für den Zugriff auf Flickr mit Ruby existieren einige Möglichkeiten: flickr ist wohlbekannt durch den Rails Screencast Putting Flickr on Rails, leider wurde das Flickr Interface schon lange nicht mehr weiterentwickelt. Da wollte rflickr in die Bresche springen, jedoch hat sich die Aktivität auch bei rflickr wieder schnell gelegt… Und bei beiden Projekten ist die Dokumentation recht spärlich gesät und erschwert dadurch den Einstieg. Flickrb und Net::Flickr sind zwei weitere Projekte welche ein Flickr Interface für Ruby bauen wollen, jedoch haben beide bis jetzt keine Pakete veröffentlicht und die Aktivität ist bei bei RubyForge auf 0%.

Doch zum Glück hatte der findige Entwickler Hank Lords eine glorreiche Idee: Er machte sich die dynamischen Eigenschaften von Ruby zu nutze und entwickelte mit Flickraw ein Ruby Interface für das REST API von Flickr. Der Clou dabei: Mittels den Reflexion-Methoden getMethods und getMethodInfo erstellt sich das Interface zur Laufzeit selbst. Somit ist Flickraw immer aktuell und braucht auch keine eigene Dokumentation, da es einfach dem aktuellen Flickr API entspricht, und das ist sehr gut dokumentiert. Doch das Einbinden von Flickraw selbst ist für einen Ruby Anfänger nicht gerade intuitiv, und viele Beispiele existieren nicht (und schon gar nicht auf Deutsch) - desshalb ist dieser Artikel entstanden…

Flickraw on Rails

Als Beispiel soll hier ein ganz einfaches Fotoalbum mit Ruby on Rails entstehen. Auf der ersten Seite werden alle Fotosets aufgelistet. Ein Mausklick auf das Fotoset öffnet dieses und zeigt die darin enthaltenen Bilder an. Für die Anzeige wir das bekannt Lightbox JS verwendet, ein “unaufdringliches” JavaScript, welches die Bilder wunderschön hervorhebt indem der Hintergrund abgedunkelt wird und das ganz ohne viel Aufwand für die Integration, da das Verhalten der Elemente getrennt wird von der HTML Deklaration (Es ist nicht immer einfach technische Artikel ohne die präzisen Englischen Ausdrücke zu schreiben - oder wie würde ihr “markup” übersetzten? Auch das oben benutzte Wort Reflexion-Methoden kitzelt den Brechreiz etwas). Als Besipiel werden die Bilder hier im Blog auch dargestellt; siehe ganz unten bei den Bildern von dem Fotoalbums…

Das Herzstück des Fotoalbums ist der FotoController, welcher das FlickRaw Modul einbindet. Der Kontroller liegt wie alle anderen im Verzeichnis app/controllers


class FotosController < ApplicationController

  include FlickRaw

  api_key = '....'
  shared_secret = '....'
  user_id = '....'

  def index
    @photosets = flickr.photosets.getList :user_id => user_id
  end

  def show
    @photos = flickr.photosets.getPhotos(:photoset_id => params[:id]).photo
    @photoset = flickr.photosets.getInfo(:photoset_id => params[:id])
  end
end

Natürlich müssen die Variabeln api_key, shared_secret und user_id entsprechend angepasst werden:

Als erstes muss man sich bei Flickr anmelden und dann einen neuen Key beantragen. Sobald man den neuen Schlüssel erhalten hat, muss man diesen in die Variable api_key im Kontroller eintragen und dannach wieder in den Browser zurückwechseln und mit dem Link ‘Klicken Sie hier’ unterhalb des API Keys dessen Benutzerauthentifizierung konfigurieren. Auf der nächsten Seite wird dann auch der gemeinsame geheime Schlüssel angezeigt, welcher im Controller in die Variable shared_secret eingetragen werden muss. Als Authentifizierungstyp sollte ‘Desktop Anwendung’ ausgewählt werden, weil dann auch keine Rückruf-URL angeben muss. Die Benutzer ID kann man herausfinden, indem man auf den Link ‘Sie’ im Hauptmenu oben klick und sieht zum Beispiel so aus: ‘94236471@N17′. Hier gibt es mehr Informationen zu den Keys.

Das Modul von Flickraw können wir übrigens mit RubyGems einfach installieren:


   gem install flickraw

Die Ressource Foto muss nun in der Konfigurationsdatei routes.rb eingetragen werden:


   map.resources :fotos

An sich macht das Beispiel nicht gerade viel von den Möglichkeiten als Ressource Gebrauch, das es nur einen Bruchteil des REST Vokabulars verwendet - daher könnte es eigentlich auch als ganz normalen Kontroller implementiert sein. Ich mag aber einfach die netten RESTful-Helper…

Für die Anzeige müssen nun die HTML Ansichten im Verzeichnis app/views/fotos erstellt werden. Als erstes muss die Indexseite index.html.erb für die Fotosets her. Da ich ein Layout benutze, ist in der entsprechenden Seite nur der Seiteninhalt ohne Kopf- und Fusszeile, Menu, etc. drin.


<h1>Fotoalbum</h1>
<p>Suche Dir unten ein Fotoalbum aus und klicke auf das Bild um die darin enthaltenen Fotos anzuschauen:</p>
<%= render :partial => 'photoset', :collection => @photosets  %>

Nun das Partial für die Fotosets _photoset.html.erb:


<div class="photoset">
  <h2><%= h(photoset.title) %></h2>
  <% if photoset.description %>
    <p><%= h(photoset.description) %></p>
  <% end %>
  <div class="photo">
    <%= link_to photoset_image_tag(photoset, :size => :medium, :lightbox => :large), foto_path(photoset.id) %>
    <br/><%= h(photoset.photos) %> Fotos
  </div>
</div>

Die Methode link_to photoset_image_tag wird im Helper foto-helper.rb definiert, und zwar aufgrund der Definition von Flickr:


module FotoHelper

  #
  # Returns a flickr image tag for the given photo
  #
  # size and lightbox paramater could be
  #
  # :small => 75x75
  # :thumbnail => 100px width
  # :medium => 240px width
  # :large => 500px width
  # :original => original width and height
  #
  def photo_image_tag(photo, options)
    link_to(
      image_tag(
        get_url(photo, photo.id, options[:size]),
        get_options(photo, options[:size])),
      get_url(photo, photo.id, options[:lightbox]),
        { :rel => 'lightbox[roadtrip]'})
  end

  #
  # Returns a lightboxed flickr image tag for the given photoset
  #
  # size paramater could be
  #
  # :small => 75x75
  # :thumbnail => 100px width
  # :medium => 240px width
  # :large => 500px width
  # :original => original width and height
  #
  def photoset_image_tag(photo, options)
    image_tag(
      get_url(photo, photo.primary, options[:size]),
      get_options(photo, options[:size]))
  end

  private 

  #
  # generates the flickr url
  #
  def get_url(photo, identifier, size)
    sprintf("http://farm%s.static.flickr.com/%s/%s_%s%s.jpg",
      photo.farm.to_s, photo.server, identifier, photo.secret,
        get_url_size(size))
  end

  #
  # gets the size identifier for the url
  #
  def get_url_size(size)
    case size
      when :small
        "_s"
      when :thumbnail
        "_t"
      when :medium
        "_m"
      when :large
        ""
    end
  end

  #
  # Returns the image tag options depending on the choosen size
  #
  def get_options(photo, size)
    options = { :alt => photo.title }
    case size
      when :small
        options['size'] = "75x75"
      when :thumbnail
        options['width'] = "100"
      when :medium
        options['width'] = "240"
      when :large
        options['width'] = "500"
    end
    return options
  end

end

Nun werden die Fotosets angezeigt, fehlen also nur noch die Fotos selber. Diese werden in show.html.erb dargestellt:


<h1><%= @photoset.title %></h1>
<% if @photoset.description %>
    <p><%= @photoset.description %></p>
<% end %>
<%= render :partial => 'photo', :collection => @photos  %>
<%= link_to "Zurück zur den Fotoalben", fotos_path %>

Auch wird wird wieder ein Partial benötigt, und zwar _photo.html.erb:


<div class="photoset">
  <div class="photo">
    <%= photo_image_tag(photo, :size => :medium, :lightbox => :large) %>
  </div>
</div>

Der Parameter :size definiert die Grösse des Bildes in der Vorschau, währen der Paramter :lightbox die Grösse der Ansicht in Lightbox festlegt. Als Werte können :small, :thumbnail, :medium und :large verwendet werden.

Damit Lightbox seine Dienste verrichtet, muss man es herunterladen, das JavaScript und die Bilder an den entsprechenden Ort im Verzeichnis public kopiert werden, und das JavaScript im Layout inkludiert werden:


    <%= javascript_include_tag 'lightbox' %>

Das Resultat ist ein kleines aber feines Fotoalbum. Ich habe bewusst auf eine Blätterfunktion verzichtet, da es so hervorragend in das etwas spezielle Layout passt und man auch mit Lightbox immer durch ein ganzes Fotoset durchklicken kann. Aber mit will_paginate sollte das kein Problem sein…

Die Seite ist leider noch nicht Live da noch andere Bereiche fehlen, wesshalb ich hier keinen Link zum Anschauen des Resultat liefern kann. Dafür hier zwei Bilder wie das fast fertige Fotoalbum aussieht:

Seite welche die Flickr Fotos darstellt

Wer Lust hat selber ein Flickt-Fotoalbum in seine Rails Seite einzubinden, der kann hier gleich ein komplettes Rails Projekt zum Ausprobieren und Integrieren herunterladen: Ruby on Rails Flickr Fotoalbum Projekt (208). Einfach die API Keys & Co. anpassen und starten… Viel Spass!




März 2008
M D M D F S S
« Feb   Apr »
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Werbung


Buttonitis