Archiv der Kategorie: iPhone

Dienstfahrt einmal anders – unterwegs am Campus mit Fahrrad und App!

Nicht nur die beiden Campi der Universität Duisburg-Essen sind etwas weiter voneinander entfernt, auch an den Standorten verfügt die Universität über verteilte Einrichtungen. Wenn häufig verschiedene entfernte Gebäude der Hochschule besucht werden müssen, bietet sich neben öffentlichen Verkehrsmitteln auch das Fahrrad als ökologisches und nachhaltiges Verkehrsmittel an. Wer mit dem Auto oder per ÖPNV anreist, hat aber meist kein Fahrrad zur Hand. Ein Dienstfahrrad wäre für diesen Einsatzbereich perfekt. An der Hochschule gibt es neben der Initiative FAHR RAD UDE! auch weitere Initiativen zur Nachhaltigkeit . Die FAHR RAD UDE! verbreitet übrigens Neuigkeiten für Fahrradnutzer in einem eigenen Newsletter. Aber es gibt jetzt ja an vielen Standorten im Ruhrgebiet das „metropolradruhr. Auch an beiden Campi und in der Nähe anderer Standorte sind neuerdings metropolradruhr Leihräder vorhanden.

Dienstfahrt mit  Leihfahrrad

Dienstfahrt mit Leihfahrrad vom Hauptcampus Essen zur Schützenbahn

 

Duisburg Uni-Nord Lotharstraße: Stationsnummer: 7421, Uni Lotharstraße / Walramsweg: Stationsnummer: 7422

Essen Universität: Stationsnummer: 7561, Universitätsstraße:  Stationsnummer: 7520, Viehofer Platz: Stationsnummer: 7504

Weniger bekannt ist vielleicht, dass Inhaber eines VRR-Tickets (Ticket1000, Ticket2000, Firmenticket) täglich eine halbe Stunde kostenlos eines der Räder benutzen können. In Essen gibt es derzeit eine Sonderaktion „Stadtradeln in Essen“ (bis zum 22. September 2012 bis zu 24h kostenlos radeln, Gutscheincode 937937 im Kundenkonto eingeben). Ein besonderer Vorteil für das Szenario Dienstfahrt ist die Möglichkeit ein Fahrrad an einer anderen Station wieder abzugeben.

Die Nutzung nach Anmeldung bei www.metropolradruhr.de erfolgt bequem per Mobiltelefon. Als Bezahlverfahren sind Kreditkartenzahlung oder Bankeinzug vorgesehen. Die Zahlung per Kreditkarte kann bei diesem Anbieter allerdings nicht wirklich empfohlen werden, da im Zuge der Anmeldung eine Art Online-Konto bei einem Zahlungsdienstleister mit Namen Worldpay eingerichtet wird. Alternativ ist auch eine Anmeldung an VRR-Kundenzentren und Tourist Informationen möglich. Bei der Anmeldung sollte eine Mobilfunknummer oder eine E-Mailadresse angegeben werden (leider ist beides optional), da sonst eine sinnvolle Nutzung nicht möglich ist.

metroporadruhr-Station an der Uni Duisburg-Essen

metroporadruhr-Station an der Uni Duisburg-Essen

 

Ausgeliehen wird ein Rad einfach per Anruf, in einem einfachen Sprachmenü wird die Radnummer eingegeben und die Nummer des Zahlenschlosses wird angesagt. Zur Sicherheit wird der Schlosscode auch noch per SMS übermittelt.

Die Rückgabe erfolgt dann auch einfach per Anruf an der Zielradstation. Tatsächlich fahren Mitarbeiter des Anbieters umher, warten die Fahrräder und sorgen dafür, dass der Schlosscode regelmäßig geändert wird.

 

bikein Andoid-App für metroporadruhr

bikein Andoid-App für metroporadruhr

Besonders spannend wird die Nutzung der Leihräder aber erst für die Nutzer moderner Smartphones. Vom Betreiber Nextbike bereitgestellte Apps für Android und iPhone, bzw. eine für Andoid empfehlenswerte App eines Fremdanbieters (bikekin) ermöglichen eine sehr komfortable Ausleihe über das mobile Internet. Die Suche nach der nächstgelegenen Station mit aktueller Fahrradbelegung ist ebenso integriert wie neuerdings die komfortable Schnellausleihe per QR-Code.

metropolradruhr jetzt mit Schnellausleihe per QR-Code

 

Auch die Rückgabe erfolgt über das Internet, so dass keine Kosten für ein Telefonat anfallen. Interessanterweise arbeitet Metropolradruhr, bzw. die sich dahinter verbergende Firma Nextbike deutschlandweit, so dass in vielen Städten problemlos Fahrräder ausgeliehen werden können (selbst ausprobiert in Nürnberg und Berlin).

Display des RFID-Lesers

Display des Stationsrechners mit RFID-Leser

Im Ruhrgebiet wird derzeit das Angebot stark ausgebaut. Neuerdings sind auch alle Stationen mit einem eTicket-RFID-Reader ausgestattet, so dass dort mit dem Ticket direkt ausgeliehen und zurückgegeben werden kann. Auch eine Anmeldung ist dort nun möglich. Die Radstationen verfügen dazu über ein Mobilfunkdatenmodem und werden per Solarzellen mit Strom versorgt.

Doppelt nachhaltig - metropolradruhr-Station mit RFID-Kartenleses und Sonnensegel

Doppelt nachhaltig – metropolradruhr-Station mit RFID-Kartenleser und Sonnensegel

 

Wer bei der Dienstfahrt ins Schwitzen gerät, dem stehen als Angebot des Hochschulsports Dusch- und Umkleidemöglichkeiten für Radfahrer an beiden Campi zur Verfügung!

Raspberry Pi versus Cray XT 6m Supercomputer – MD5-Hash-Kollisionen berechnen mit dem Raspberry Pi

Der Raspberry Pi ist ein kleines Board mit ARM11- Prozessor (ein ARM1176JZF-S um genau zu sein, mit ARMv6 Befehlssatz), welches über einen 100 Mbit Ethernet-Port, HDMI, Analog Video, GPIO-Pins, SPI, I²C, UART und zwei USB-Schnittstellen verfügt. Der Prozessor ist übrigens identisch mit dem Im Apple iPhone der ersten Generation verbauten CPU.

Das kommt in der Verpackung, eine SD-Karte ist nicht dabei.

Das kommt in der Verpackung, eine SD-Karte ist nicht dabei.

Das Besondere ist der Preis, der Raspberry Pi kostet nur 25-30$ und ist für den Einsatz in Schulen vorgesehen. In England ist er inklusive T-Shirt und Versand nach Deutschland für 34 € zu haben. Aufgrund seiner niedrigen Leistungsaufnahme von nur 3,5 Watt (lüfterlos und ohne Kühlkörper), seiner geringen Größe (etwa Kreditkartenformat, aber durch die Konnektoren ca. 1,5 cm hoch) und des günstigen Preises eignet sich der Raspberry Pi für energiesparende Bastelprojekte wie etwa ein NAS, einen kleiner Router oder ein eigenes kleines Mediacenter. Als Massenspeicher fungiert eine SD-Karte, die beispielsweise mit einer angepassten Linux-Version, wie z.B. Raspbian “wheezy”, einem modifizierten Debian, bespielt werden kann. Die Distribution bringt ein modernes Linux mit Desktop und einem schlanken und modernen Webkit-basierten Browser (Midori) mit. Obwohl der Raspberry nicht für so einen Anwendungsfall vorgesehen ist, kann man doch recht ordentlich damit im Internet surfen!

T-Shirt inklusive, der Raspberry Pi

T-Shirt inklusive, der Raspberry Pi

Die Verwendung der angepassten Distribution ist sehr zu empfehlen, da diese Version im Gegensatz zu den Debian-ARM Versionen die Hardware Floating-Point-Unterstützung des ARM11 auch wirklich ausnutzen. Bei der Übersetzung von Source-Paketen sollte auch immer die GCC Compiler-Optionen

-mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard

angegeben werden, damit wirklich die Hardware-Floating-Point Unterstützung aktiviert wird. Ansonsten werden die Floating-Point-Operationen per Library in Software durchgeführt, was naturgemäß sehr viel länger dauert (Faktor 10). Die Ubuntu-Arm Distribution ist übrigens nicht für den Raspberry Pi geeignet, da sie als Mindestanforderung den ARMv7-Befehlssatz (ab ARM Cortex A8) voraussetzt.

Kleine ARM-Kunde und Tablet-Tipps

ARM-Prozessoren, bzw. von den Herstellern in System on  a Chip (SoC)  integrierte ARM-Kerne, treiben übrigens so ziemlich alle aktuellen Android Smartphones und Tablets an. Auch die Apple-A5 SoC im iPhone und iPad verwenden ARM-Prozessorkerne. Übrigens sind neben dem Hauptprozessor für die Benutzerschnittstelle (auf dem das Android oder das  iOS läuft) auch fast immer mehrere zusätzliche ARM-Kerne in einem Mobiltelefon verbaut. Leistungsschwächere, aber energiesparende „kleinere“ ARM-Varianten werden beispielsweise für den Kommunikationsprozessor (das „Radio“) des Telefons eingesetzt, welcher die GSM und UMTS-Kommunikation abwickelt. Auch in fast allen Bluetooth-Chipsätzen und  GPS-Chipsätzen steckt jeweils ein weiterer kleiner ARM-Kern. Die Wahrscheinlichkeit ist also sehr hoch, dass in Ihrem Smartphone vier oder mehr ARM-Kerne in Chipsätzen „verbaut“ sind.

Die Nummerierung der Befehlssätze ARMvX darf nicht mit der der Bezeichnung der Architektur verwechselt werden, siehe auch http://de.wikipedia.org/wiki/ARM-Architektur. Übrigens findet sich hier eine schöne Zuordnung von ARM-Befehlssatzversionen zu den korrespondierenden ARM-Architekturen und den zugehörigen Handelsnamen der SoC ARM-Implementierungen einiger Hersteller. Diese Aufstellung kann bei der Auswahl eines Android-Tablets in Hinsicht auf zu erwartende CPU-Leistung sehr hilfreich sein. (Unterhalb Cortex A8 [ARMv7] – Finger weg!)  Brauchbare Tablets mit Cortex A8 sind schon für knapp über 100 Euro erhältlich. Eine dem iPad 3 vergleichbare Performance kann aber erst einem Cortex A9 (auch ARMv7) basierten Gerät mit mehreren Kernen abverlangt werden.

Der Desktop der Raspbian “wheezy” Distribution, Midori Webbrowser inklusive

Der Desktop der Raspbian “wheezy” Distribution, Midori Webbrowser inklusive, auf meinem Beamer

MD5-Hash-Kollision

Um die Leistungsfähigkeit der ARM11-Prozessors (AMRv6) auf die Probe zu stellen, habe ich keinen klassischen Benchmark eingesetzt, sondern mir die MD5 Collision Demo von Peter Selinger vorgenommen und die Quellen für den Raspberry Pi kompiliert. Hier bei handelt es sich um einen Algorithmus, der einen Angriff auf einen  MD5 Hashwert vornimmt und eine Kollision erzeugt. Mit so einer Hash-Kollision kann zweites Dokument oder ein zweites Binary erzeugen werden, dass einen identischen MD5 Hash zu einer Originaldatei besitzt. Der Algorithmus startet immer mit einem Zufallswert für die Berechnung einer Hash-Kollision, so dass es immer unterschiedlich lange dauert bis eine Kollision gefunden wird. Startet man den Prozess aber mehrmals auf einer Maschine mit mehreren Kernen, so steigt die Wahrscheinlichkeit recht schnell an ein Ergebnis zu kommen. Der Algorithmus parallelisiert also nicht die selber die Berechnung, sondern profitiert vom abweichenden Zufallsstartwert auf jedem Kern.

PC versus …

Ausprobiert habe ich das zunächst mit meinem single core Atom Netbook (2 Stunden 46 Minuten) und dann mit einer 8-Kern-Maschine (zwei Xeon Quad Core Prozessoren), dem Publikumsrechner des ZIM für Mitarbeiter der Hochschule. Diese Maschine benötigte nur 16 Minuten und 6 Sekunden um eine Kollision zu finden. Wohlgemerkt einer der Kerne hatte eine Kollision gefunden, der letzte Kern benötigte fast drei Stunden. (siehe Abbildung)

Das top-Kommando (1 drücken um alle Kerne zu sehen)

Das top-Kommando („1“ drücken um alle Kerne zu sehen, 8 Kerne ausgelastet)

… CRAY versus ….

Den Cray XT 6m Supercomputer der Universität Duisburg-Essen konnte ich bereits im Juni 2010 mit der gleichen „Rechenaufgabe“ testen. Ich hatte seinerzeit allerdings nur 300 der insgesamt 4128 Kerne zur Verfügung, einer der Kerne fand nach 56 Sekunden eine Hash-Kollision. Auf der Cray kann ein Job automatisiert auf allen zur Verfügung stehenden Kernen gestartet werden.

Cray Supercomputer

Cray Supercomputer der Universität Duisburg Essen

… Raspberry PI

Und der gute Raspberry Pi? Ein Testlauf brachte nach 30 Stunden und 15 Minuten eine Hash-Kollision zum Vorschein. Wie beschrieben, es ist kein wirklicher Benchmark, es kann einfach Pech gewesen sein, dass es solange gedauert hat. Zwei weitere Durchgänge endeten nach 19Stunden 10 Minuten und 29 Stunden und 28 Minuten. Aber wie sieht denn nun die Energiebilanz des Raspberrys im Vergleich mit der Cray aus?

Preiswerter und leiser als ein Cray Supercomputer bei etwa gleicher Rechenleistung pro Energieverbrauch

Preiswerter und leiser aber deutlich langsamer 😉 als ein Cray Supercomputer bei etwa gleichem Energieverbrauch bezogen auf die Rechenleistung

Die zwei Cray-Schränke an der Universität Duisburg-Essen benötigen je 40kW und die erzeugte Wärme per Klimatisierung abzuführen wird jeweils die gleiche Leistung benötigt. Also insgesamt 160 KW bzw. umgerechnet auf den im Experiment genutzten Anteil der 300 Kerne ca. 11.6 KW. Der Energieverbrauch in 56 Sekunden beträgt dann 0,18 KWh. Der Raspberry Pi nimmt eine Leistung von 0,0035 KW auf und verbraucht daher in 30,25 Stunden 0,106 KWh. Wenn man die Klimatisierung nicht berücksichtigen würde, ergäbe sich überraschenderweise ein etwa ähnlicher Energieverbrauch pro Rechenleistung!

In 80 Zeilen um die Welt – Moving Map mit HTML5 Geolocation für iPhone,iPad und Android ohne Google ;-)

Das HTML5 Geolocation-Feature interessiert mich schon eine ganze Weile. Im Juli 2010 habe ich in meinem Blog eine Lösung basierend auf Openstreetmap, bzw. genauer dem großartigen Openlayers-Projekt, vorgestellt. Weil diese Seite recht viel Traffic über Google erzeugt, nun auch in meinem Blog einen ausführlicheren Artikel dazu.
Ich habe das Beispiel nun um eine Detektion der Screensize und eine live-Aktualisierung erweitert, so dass nun eine rein webbasierte ‚moving map‘ a la Google maps plattformübergreifend zur Verfügung steht. Richtig spannend wird diese Seite erst wenn Sie sich bewegen (z.B mit mit einem Smartphone/iPad oder Netbook), der Browser aktualisiert dann Ihre Position!

Also in etwa die Google maps Funtionalität, rein HTML5-webbasiert und ohne Google. Das stimmt leider nicht wirklich, da beispielsweise im Firefox-Browser auch wieder Google als ‚embedded location provider‘ eingetragen ist. Glauben Sie nicht? Einfach einmal about:config in die Adresszeile des Browsers eingeben (das ist die Browser-Konfiguration für Erwachsene 😉 ) und nach dem Schlüssel ‚geo.wifi‘ suchen. Der Browser holt die Position per JSON bei Google https://www.google.com/loc/json ab. Wie genau Ihre Position bestimmt werden kann hängt vom Location Provider bzw. von der Implementierung Ihres Browsers und der eingeschalteten Quellen für die Lokalisation (WLAN/GSM/GPS) ab. Wenn diese Quellen nicht eingeschaltet sind, z.B. bei einem PC ohne WLAN, versucht Google die Position anhand der IP-Adresse bzw. anhand von Whois Records zu erraten. Das klappt erstaunlich genau.

Das Beispiel ist hier als iframe in mein Blog eingebettet und funktioniert auf allen HTML5 fähigen Browsern auch auf Android-Smartphones (ab 2.3 Gingerbread) und dem iPhone/iPad/iPod touch:

Benutzen Sie diesen Link um die Karte direkt auf Ihrem Android bzw IOS Smartphone anzuzeigen.

Nicht erschrecken, der Browser sollte beim Laden nun artig fragen ob diese Webseite Ihre Position erfahren darf. Dabei handelt es sich um ein HTML5-Geolocation-Feature.

Hier ist der einfache Quellcode zu sehen, ein bisschen Javascript meinerseits plus OpenLayer.js:

 

<html>
  <head>
    <title>HTML5 geolocation with Openstreetmap and OpenLayers</title>
    <style type="text/css">
      html, body, #basicMap {
          width: javascript(screen.width);
          height: javascript(screen.height);
          margin: 10;
      }
    </style>
 <!-- javascript(screen.width); //-->
  <!-- javascript(screen.height); //-->

    <script src="OpenLayers.js"></script>

    <script>
      function init() {
        map = new OpenLayers.Map("basicMap");
        var mapnik = new OpenLayers.Layer.OSM();
        var markers = new OpenLayers.Layer.Markers( "Markers" );
        
        map.addLayer(mapnik);
        //map = new OpenLayers.Map("basicMap");
        //var mapnik = new OpenLayers.Layer.OSM();
        //map.addLayer(mapnik);
        map.setCenter(new
        OpenLayers.LonLat(3,3) // Center of the map
          .transform(
            new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
            new OpenLayers.Projection("EPSG:900913") // to Spherical Mercator Projection
          ), 15 // Zoom level
         );
        //var markers = new OpenLayers.Layer.Markers( "Markers" );
        map.addLayer(markers);
        var posss = new OpenLayers.Marker(0,0);
        markers.addMarker(posss);                    
                        

        navigator.geolocation.watchPosition(function(position) {       
            document.getElementById('anzeige').innerHTML="Latitude: " + position.coords.latitude + "   Longitude: " +
            position.coords.longitude + "<p>";
            var lonLat = new OpenLayers.LonLat(position.coords.longitude,
                                    position.coords.latitude)
                      .transform(
                                  new OpenLayers.Projection("EPSG:4326"), //transform from WGS 1984
                                              map.getProjectionObject() //to Spherical Mercator Projection
                                            );
            
            markers.clearMarkers();                                
            markers.addMarker(new OpenLayers.Marker(lonLat));
            //posss.lonlat(lonLat);
            map.setCenter(lonLat, 14 // Zoom level
            );
           
        });
            
      
      }
    </script>
  </head>

  <body onload="init();">
<center>
HTML5 geolocation: 
<br>
    <div id="basicMap"></div>
<br>HTML5 geolocation<br>
<br>with Openstreetmap and OpenLayers<br>

For Android Froyo,iPhone,iPAD,iPod
<br>
Your position estimated by browser geolocation API:<p>
<div id="anzeige">(will be displayed here)<p></div>
<a href="http://www.dr-bischoff.de">Andreas Bischoff</a>

<br>(view source to see how it works, or <a
href="https://blog.robotnet.de/2011/03/30/html5-geolocation-with-openstreetmap-and-openlayers-for-android-iphone-ipad-and-ipod/">read my blog</a> ;-)
</center>
  </body>
</html>