Weblog von bishoph
Dienstausfall
Posted August 11th, 2009 by bishophDie Meldung, das http://tr.im seinen Dienst zum Ende des Jahres einstellt, hat mich zwar nicht betroffen, aber trotzdem nachdenklich gemacht. Denn was wäre, wenn http://tinyurl.com oder ähnliche Dienste einfach den Dienst einstellen. Dann wäre mein erst kürzlich erstelltes Twitter Backup reichlich nutzlos, denn die betroffenen URLs wären nicht mehr erreichbar.
Der nachfolgende Code erweitert das kürzlich vorgestellte Twitter Backup und stellt die Original-Links wieder her. Der aktuelle Stand ist nicht perfekt. Und auch nicht besonders schnell. Bisher wird z.B. nur eine URL pro Tweet komplettiert. Aber ich habe einen Stand, auf den ich unabhängig von anderen zugreifen kann. Wer mag, kann sich gerne auslassen und Verbesserungen einreichen. Auch Kommentare sind gerne gesehen.
Download:
PHP Twitter Backup
Simples Twitter Backup
Posted August 8th, 2009 by bishophIch nutze Twitter. Warum? Ich bekomme recht schnell mit, was gerade los ist in der Welt und es ist für mich eine Art Ablage geworden. Eine Ablage, in der ich z.B. interessante Links aufbewahre. Nun kam es am Donnerstag und Freitag zum DDOS-Angriff auf Twitter und ich versprach einem Kollegen, einen Link zu senden der - wie ich wusste - auf Twitter von mir gepostet wurde. Irgendwann im März. Daten einem Service in der Cloud zu überlassen, ohne Backup und ohne Möglichkeit von anderen Services darauf zugreifen zu können, entpuppte sich als Problem (meine FriendFeed-Aggregation startet leider erst im April).
Aus diesem Grund habe ich heute einen ganz simplen PHP Ansatz erstellt, um über die Twitter-JSON-Schnittstelle Daten zu ziehen. Ist recht einfach und simple, aber ich stelle es trotzdem mal vor, denn ich nutze das ganze ebenfalls auf der Homepage um die letzten 5 Twitter Nachrichten in einem Drupal-Block anzuzeigen. Im Drupal-Block ist allerdings noch ein Timeout drin. Ein Vorteil des u.a. Ansatzes gegenüber anderen Backup Tools ist, das kein Benutzer/Passwort mitgegeben werden muss, sondern eine einfache URI ausreicht.
Sollte jemand auf die glorreiche Idee kommen den Code selber zu verwenden, so empfehle ich übrigens dringend, die "bishoph" Sektionen durch eigene Namen zu ersetzen.
$json = new Services_JSON();
echo 'bishoph on Twitter';
$twitter_json = file_get_contents('http://twitter.com/statuses/user_timeline/bishoph.json?count=250');
$decoded = $json->decode($twitter_json);
if ($decoded != null) {
$count = count($decoded);
if ($count > 0) {
echo '';
for ($a = 0; $a < $count; $a++) {
$obj = $decoded[$a];
echo makeURL($obj->text);
//echo $obj->source; // Client
echo '';
}
//echo 'Follow me';
}
Ausgereift
Posted Juli 16th, 2009 by bishophDie letzten Tage habe ich beim Fahrrad fahren den kürzlich vorgestellten Sport Track in der Praxis eingesetzt. Hier das ernüchternde Ergebnis:
Nicht das Missverständnisse aufkommen: Ich bin beide Male die selbe Strecke gefahren. Das Handy war beide Male in der selben Seitentasche. Das erste Bild zeigt das Resultat der ersten Fahrt, bei der ich in den ersten paar Minuten kein Signal hatte und schon eine ganze Zeit lang unterwegs war, bevor der Startvorgang eingeleitet werden konnte. Bei der zweiten Fahrt (zweites Bild) war die Initialisierungsphase sehr kurz. Leider gab es nur recht selten ein GPS Signal, so das die Berechnung der Strecke nicht komplett aufgezeichnet wurde. Ich bin davon ausgegangen das der Anwendungsfall "Zeit und Strecke messen" nichts besonders ist und das diese einfache Anforderung problemlos einsetzbar ist.
Lag es vielleicht an der eingesetzten Technik? Ist das Endgerät für einen solchen Anwendungsfall nicht geeignet? Ich werde weiter testen und schauen ob man das Ergebnis beeinflussen und verbessern können. Was ist eure Erfahrung mit GPS und Handys? Was kann man optimieren? Was funktioniert? Freue mich über eure Resultate, Kommentare und Meinungen.
PS: Meine sportlichen "Leistungen" stehen nicht zur Diskussion ;-)
Mobile Web Teil 2 - WRT
Posted Juli 12th, 2009 by bishoph* Persistente Objekte
* Zugriff auf Standort Informationen (GPS)
* Netzwerkzugriffe
* Aptana Studio und der Emulator
Persistente Objekte
Nicht selten besteht die Anforderung das ein Programm sich bestimmte Daten speichert und das diese Daten beim erneuten ausführen wieder zur Verfügung stehen. Im Zeitalter der "Cloud" kann man natürlich sämtliche Daten einfach an einen Server schicken und diese einfach von dort aus wieder laden. Wir betrachten hier aber die Möglichkeiten von WRT und es ist zum Glück mehr als einfach Daten zu speichern und wieder zu laden. Und das geht so:
// Save
widget.setPreferenceForKey("VALUE", "KEY");
// Load
var value = widget.preferenceForKey("KEY");
Da wir uns innerhalb eines JavaScript Kontextes bewegen kann man natürlich für den "VALUE" Part auch JSON verwenden und kann so komplexe Objekte auf recht einfache Art und Weise speichern und wieder laden.
Da es ja bei diesem Experiment darum geht möglichst viele Devices zu unterstützen schauen wir schnell ob wir einer proprietären Funktion auf den Leim gegangen sind. Das Resultat ist sehr erfreulich, denn die Funktion finden wir bei:
Opera
Apple/iPhone
Da das "Widget"-Element Bestandteil von WebKit ist, kann es durchaus sein das Android und der Palm Pre diese Funktionen kennen.
Mobile Web Teil 1 - WRT
Posted Juni 14th, 2009 by bishophAls ersten Kandidaten habe ich mit die Web Runtime Widgets (WRT) ausgesucht. Die nachfolgenden Beispiele beziehen auf Endgeräte mit Touch Screen, bei denen als Basis die S60 5th Edition dient.
Nach aktuellem Stand basieren die folgenden Endgeräte auf der S60 5th Edition:
* Nokia 5800 XpressMusic
* Nokia N97
* Samsung i8910 Omnia HD
* Sony Ericsson Satio
Um ein Widgets zu erstellen benötigt man HTML, CSS und JavaScript Kenntnisse. Widgets lassen sich auf den Endgeräten installieren und bieten Zugriff auf bestimmte Systemressourcen.
Es gibt diverse Entwicklungstools und ich habe mich für Aptana Studio entschieden da diese Plattform auch iPhone Entwicklung ermöglicht. Leider wird derzeitig nur Windows und kein Linux unterstützt, eine Linux Version ist angekündigt.
Zu Installation und Basics von Aptana Studio möchte ich eigentlich nichts sagen, denn da gibt es gute Ressourcen im Web.
Einführung
In Aptana Studio kann man einfach ein existierendes Widget importieren oder ein neues erstellen. Widgets enden mit der Dateiendung ".wgz", allerdings sind Widgets einfache Zip-Archive. Man kann diese Archive also selber erzeugen und man benötigt Aptana Studio nicht unbedingt.
Mobile Entwicklung
Posted Mai 15th, 2009 by bishophEs ist nun knapp ein halbes Jahr her das ich über die mobile Fragmentierung des Marktes geschrieben habe und seither ist recht viel passiert. Der Markt ist noch stärker fragmentiert. Für den Hersteller, respektive den Entwickler, ist es noch aufwendiger eine breite Masse an Anwendern zu erreichen . Schauen wir uns die aktuelle Situation an. Als erstes schauen wir uns aktuelle Marktzahlen an des gesamten Marktes an.
Marktanteile Q1 2009:
Nokia: 40.43 %
Samsung: 19.91 %
LG: 9.83 %
Motorola: 6.39 %
Sony Ericsson: 6.3 %
Blackberry/RIM: 3.39 %
Apple: 1.65 %
Others: 12.09 %
Quelle: http://www.mobileisgood.com/statistics.php?year=2009
Wenn wir uns diese Zahlen anschauen und einmal den Anteil der Java-fähigen Geräte extrahieren kommen wir auf min. 70 % (Nokia + Samsung + Motorola + Blackberry + ein paar % others).
Die gleiche Betrachtung auf den Smartphone Markt angewendet zeigt (leider nur Q4/2008 Zahlen):
Nokia: 40.8 %
Blackbery/RIM: 19.5 %
Apple: 10.7 %
HTC: 4.3 %
Samsung: 4.2 %
Others: 20.5 %
Quelle: http://www.gartner.com/it/page.jsp?id=910112
Alleine Nokia und Blackberry/RIM kommen auf stolze 60.3 % und ich denke das man auch im Smartphone Markt von einer Java-Abdeckung von min. 2/3 ausgehen kann (und nein, den Win Mobile Java Stack zähle ich nicht dazu).
Was aber, wenn man nahezu 100% abdecken möchte? In Zeiten von Cloud computing und immer besser werdenden Browser Unterstützung liegt eine Webanwendung nahe - gemeinhin auch als Webseite bezeichnet. Interessanter Weise zeichnet sich bei den mobilen Geräten ein Trend ab, der eine Konsolidierung aufweist: Der mobile Browser. Schaut man sich den Trend an, dann zeichnet sich ab, das zukünftig die folgenden Browser auf mobilen Geräten zu finden sind:
WebKit basierend (Safari/Android/Nokia)
IE
Fennec/Firefox
Opera
Das ist eine recht positive Entwicklung denn sie birgt die Chance Entwicklungen einer breiten Masse zur Verfügung zu stellen.
The smart web and open data
Posted Mai 14th, 2009 by bishophSearch engines like Google and Yahoo want to understand the web. They want to dive into (microformat/RDFa) formatted data to provide better search results. The BBC article talks about "smarter search". As of today, searching and browsing the web gives me some insight to topics that are not related to a search term at all. Some of them are interesting and let me thinking laterally... Of course, the semantic web will have some major benefits - product search comes in my mind.
Personally I'm more exited about the fact that everyone can work/modify/combine the data. In a social world where you trust your peers more than anybody else, think about what does it mean if anybody can re-create raw/processable data - but before we reach this question, I would find it it smart to define a standard for open and structured data beforehand. But we are in an agile world and Google defines the format for us and the Drupal/Wordpress teams are already working on some kind of implementation.
Hope that the benefit of all the efforts can be combined and the user gets a benefit. Just read that we got a name for the whole thing: Web 3.0. Here is the article: http://www.readwriteweb.com/archives/understanding_the_new_web_era_web_3...
Vom Smartphone zum smarten Phone
Posted Mai 2nd, 2009 by bishoph
Ein einfaches Beispiel für ein smartes Phone: Ein Benutzer ist im Büro und hat gerade eine Besprechung. Eigentlich eine Information die in einem Smartphone zur Verfügung steht. Ich fände es smart, wenn zu Beginn eines Meetings das Profil in "Besprechung" geändert wird (in fast jedem Meeting hat ein Teilnehmer sein Telefon nicht in diesem Modus und wird prompt angerufen). Das ganze ist noch recht fehleranfällig, denn ein Meeting kann vorzeitig beendet werden, oder es gibt eine Pause. In solchen Fällen wäre es doch nett, wenn das Smartphone wieder das normale Profil übernehmen würde - für den Fall das ein Meeting länger dauert als geplant habe ich übrigens keine Idee, freue mich aber über jede Anregung.
Kling kompliziert? Es ist nicht einfach, aber moderne Smartphones verfügen über leistungsstarke Sensoren und liefern interessante Daten, welche man recht effektiv kombinieren kann. Eine Übersicht über einige Sensoren:
Mobile Darstellung
Posted April 25th, 2009 by bishophEigentlich ganz einfach mit Drupal als unterliegendes System: Man installiere die Module "Browscap" und "Mobile Theme". Weiterhin benötigt man noch den "Mobile"-Theme. Nach der Installation sollte man als Admin die Module und den neuen Theme aktivieren. Abschließend deklariert man den "Mobile"-Theme als mobilen Theme. Das war es dann eigentlich auch schon. Viel Spaß beim mobilen Surfen.
Nachtrag: Die Hauptnavigation kann man hinzufügen indem man die folgenden Zeilen in das "Mobile-Theme-Page-Template" kopiert:
<?php if (isset($primary_links)) : ?>
<?php print theme('links', $primary_links, array('class' => 'links primary-links')) ?>
<?php endif; ?>
Nvidia TwinView unter (K)ubuntu
Posted April 18th, 2009 by bishophDie zwei Monitore zu konfigurieren ist recht simpel, sofern man eine NVidia Karte sein Eigen nennt. Dafür gibt es das Tool "nvidia-settings". Einfach die gewünschten Einstellungen durchführen, speichern und schon ist man fertig. Full-Screen Anwendungen breiten sich allerdings gerne über beide Bildschirme aus - was in meinem Falle nicht gewünscht ist.
Hier muss man manuell konfigurieren. Wenn man weiß wie es geht, ist es einfach. Mit einem geeigneten Editor (z.B. vim), öffne man die Datei /etc/X11/xorg.conf und suche die Sektion "Screen". Es sollte sich eine Option darin befinden welche mit "metamodes" anfängt. Diese kann man in eine neue Zeile kopieren und auskommentieren.
Um nun sowohl zwischen den beiden Bildschirmen Fenster hin-/ und herschieben zu können und Full-Screen zu ermöglichen (wie erwähnt auf einem Bildschirm), passt man die neu eingefügt Zeile wie folgt an:
Option "MetaModes" "nvidia-auto-select,nvidia-auto-select;NULL,nvidia-auto-select"
Diese Zeile macht folgendes: Die ersten beiden Parameter (nvidia-auto-select,nvidia-auto-select) spezifizieren den normalen Modus (TwinView), bei dem beide Monitore mit der geeigneten Auflösung angesprochen werden. Nach dem Semikolon erscheint dann (NULL,nvidia-auto-select). Der NULL Parameter schaltet den gewünschten Monitor im Full-Screen Modus aus. Wenn der andere Monitor ausgeschaltet werden soll ist nur die Reihenfolge zu ändern.