Blackberry Widget – RSS Parser

Solange ich noch auf meine Zugangsdaten für die Pushservices warte bediene Ich mich momentan anderen Pull Techniken. Eine davon verbreitete Möglichkeit ist dabei RSS. Fast jede Internetseite hat RSS und ggf. noch eine sehr kluge. Normale Browser erlauben keine cross domains. Das heist dass die zu parsende Datei auch local liegen muss und man die nicht erst von einem anderen Server holen. Bei den Widgets gibt es die Möglichkeit cross domains zu benutzen in dem man die gewünschte/n Domains freigibt. Also kann man sich bequem Informationen auf den BB Pullen.

Fangen wir also mit einem normalen RSS an und mal schauen was noch kommt… Ich hab es leider nicht selber geschrieben und weiss nicht mehr wo ich es gefunden habe :( Die Credits gehen also an Anonymous.

<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<meta name=”viewport” id=”viewport” content=”initial-scale=1.0,user-scalable=no”>
<title>RSS Beispiel</title>
</head>
<script language=”javascript”  type=”text/javascript”>

var RSSRequestObject = false; // XMLHttpRequest Object
var Backend = ‘http://news.google.de/news?pz=1&cf=all&ned=de&hl=de&q=blackberry&cf=all&output=rss’; // Backend url
window.setInterval(“update_timer()”, 1200000); // update the data every 20 min
RSSRequestObject = new XMLHttpRequest();

/*
* onreadystatechange function
*/
function ReqChange() {

// If data received correctly
if (RSSRequestObject.readyState==4) {

// if data is valid
if (RSSRequestObject.responseText.indexOf(‘invalid’) == -1)
{
// Parsing RSS
var node = RSSRequestObject.responseXML.documentElement;

// Get Channel information
var channel = node.getElementsByTagName(‘channel’).item(0);
var title = channel.getElementsByTagName(‘title’).item(0).firstChild.data;
var link = channel.getElementsByTagName(‘link’).item(0).firstChild.data;

content = ‘<div style=”padding-top:2px; margin-bottom: 1px; background:grey;”></div>’;

// Browse items
var items = channel.getElementsByTagName(‘item’);
for (var n=0; n < items.length; n++)
{
var itemTitle = items[n].getElementsByTagName(‘title’).item(0).firstChild.data;
var itemLink = items[n].getElementsByTagName(‘link’).item(0).firstChild.data;
var itemDesc = items[n].getElementsByTagName(‘description’).item(0).firstChild.data;

content += ‘<a href=”‘+itemLink+'” style=”padding-left: 17px; display: block; background:#fff; text-decoration: none; color: black; “>’+itemTitle+'</a>’;
content += ‘<div style=”margin-left: 15px; padding-top:1px; background:#d5d3d3;>”></div>’;

}

// content += ‘<hr/>’;
// Display the result
document.getElementById(“ajaxreader”).innerHTML = content;

// Tell the reader the everything is done
document.getElementById(“status”).innerHTML = “Done.”;

}
else {
// Tell the reader that there was error requesting data
document.getElementById(“status”).innerHTML = “<div>Error requesting data.<div>”;
}

HideShow(‘status’);
}

}

/*
* Main AJAX RSS reader request
*/
function RSSRequest() {

// change the status to requesting data
HideShow(‘status’);
document.getElementById(“status”).innerHTML = “Requesting data …”;

// Prepare the request
RSSRequestObject.open(“GET”, Backend , true);
// Set the onreadystatechange function
RSSRequestObject.onreadystatechange = ReqChange;
// Send
RSSRequestObject.send(null);
}

/*
* Timer
*/
function update_timer() {
RSSRequest();
}

function HideShow(id){
var el = GetObject(id);
if(el.style.display==”none”)
el.style.display=”;
else
el.style.display=’none’;
}

function GetObject(id){
var el = document.getElementById(id);
return(el);
}

</script>

<body onload=”RSSRequest();”>
<div id=”status” style=”display:none”></div>
<div id=”ajaxreader”></div>

</body>

</html>

Das und noch ein bisschen mehr ist dann auch schon der Sourcecode für die WMLive app. Mir hat das sehr viel geholfen um gefallen an Blackberry Widgets zu bekommen und mal schauen was man noch alles machen kann.

Blackberry Widget – WM 2010 Live (Update)

Seit drei Tagen bin ich am schrauben und frickeln und bin immer noch nicht Fertig, aber ich will die App jetzt einfach mal veröffentlichen weil die WM auch bald vorbei ist ;) Ich habe die App zum ausprobieren von verschiedenen Notifications vom BB geschrieben und vielleicht bringt sie dem einen oder anderen etwas. Die eine oder andere WM App für den Blackberry funktionieren nicht so wirklich oder verbrauchen zu viel Akku.

Was leider noch nicht funktioniert ist den Intervall einzustellen (updated sich jetzt jede Minute) weil ich es noch nicht geschafft habe dass sich das Menü öffnet. Außerdem hätte ich gerne dass das Blackberry noch Vibriert wenn ein Tor gefallen ist (daran Arbeite ich gerade). Die App vibriert endlich wenn eine neue Benachrichtigung eintrifft.

Kommen wir mal zu dem Punkt wo ich sage was schon funktioniert ;) Die App läuft im Hintergrund und schaut jede Minute nach ob bei irgend einem Spiel ein Tor gefallen ist oder ob ein Spiel fertig ist. Wenn dies geschehen ist wird man darüber informiert. Wie immer – keep it simple und sobald es Vibriert gibt es eine neue Version ;)

OTAInstall: here

Blackberry Widget – WebIcon/Webstarter

Bei einem Blackberry kann man leider nicht ohne weiteres einen Link auf dem Desktop platzieren. Man muss erst den Browser öffnen und dann das Lesezeichen auswählen. Ein ziemlich langer weg und wenn man bestimmte Seiten öfters besucht, dann kann dass manchmal Nerven. Zum Glück haben wir die Widgets womit sich das sehr einfach erledigen lässt (Ich hoffe das BB OS 6.0 dass wie andere Systeme integriert hat). Wenn man das Widget öffnet wird automatisch der Browser mit einer definierten URL geöffnet. Das und nicht mehr.

Also schauen wir mal in die API Dokumentation und dort steht eigentlich schon alles. Schnippe…. Schnappe und so könnte die fertige HTML Datei aussehen:

<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<meta name=”viewport” id=”viewport” content=”initial-scale=1.0,user-scalable=no”>
<script type=”text/javascript”>
function Load () {
var args = new blackberry.invoke.BrowserArguments(‘http://blackberry.itbert.de’);
blackberry.invoke.invoke(blackberry.invoke.APP_BROWSER, args);
// exit web icon after browser is closed
blackberry.app.exit();
}
</script>
<title>WebIcon demo</title>
</head>
<body onload=”javascript:Load();”>
</body>
</html>

und die config.xml folgendermaßen:

<?xml version=”1.0″ encoding=”UTF-8″?>
<widget xmlns=”http://www.w3.org/ns/widgets” xmlns:rim=”http://www.blackberry.com/ns/widgets” version=”1.0.0.0″>
<name>WebIcon</name>
<description>webicon demonstration icon</description>
<author email=”bla@itbert.de” href=”http://blackberry.itbert.de”>Steffen Wirth</author>
<feature id=”blackberry.invoke” required=”true” version=”1.0.0.0″/>
<feature id=”blackberry.invoke.BrowserArguments” required=”true” version=”1.0.0.0″/>
<feature id=”blackberry.identity” required=”true” version=”1.0.0.0″/>
<feature id=”blackberry.app” required=”true” version=”1.0.0.0″/>
<icon rim:hover=”false” src=”ext/icon_flat.png”/>
<icon rim:hover=”true” src=”ext/icon_glossy.png”/>
<content src=”index.html”/></widget>

Ich habe noch eine Exit Funktion nach dem der Browser geschlossen wurde eingetragen damit das Widget sich auch beendet. Jede App braucht ein Icon und das kann man sich einfach hier erstellen lassen. Die Texture für das Icon kommt von Petey Morf.

Hier ein paar Screenshots (die jetzt im Nachhinein nicht viel aussagen):

Wer sowas für seine/eine Homepage haben möchte kann sich gerne bei mir Melden (am besten gleich mit fertigen Icons).

Ein Test von proplay.de

Auf linuxforen.de bin ich auf einen Artikel gestoßen der um günstige vServer handelt und damit bin ich zufällig auf proplay.de gestoßen. Bei einem Preis von dem kleinsten vServer von 6EUR für 3 Monate kann man sich mal einen Spaß erlauben. Ich gehe an die Sache mit wenig Erwartungen und werde ein bisschen Berichtigen wie es dem Server oder meinen Nerven ergeht.

Nachdem ich meine Kundendaten (nach einem Arbeitstag) erhalten habe und das Erste mal eingeloggte war sah ich Nachrichten über Wartungsarbeiten  mit Uhrzeitangaben wo ich nicht entziffern kann ob die UTC, GMT oder GMT+6 sind. Ansonsten ganz schnell zusammengefasst auf den ersten Blick:

  • Debian 5.0 Minimal / Ubuntu LTS / Arch… (also viel Auswahl)
  • iptables input chain sieht sehr…. freizügig aus, aber wenigstens gibt es eine und man kann sie einfach bearbeiten (init script)
  • cool ein “RAC Interface” über ssh
  • snapshot backups für den vServer (leider nur ein snapshot jeden Monat, aber immerhin)
  • laut Webinterface habe ich keine native ipv6 Adressen – laut Anzeige aber schon! Notiz: Mail schreiben (noch keine Antwort nach Tagen…)
  • ich habe zwar eine Messageinbox, aber kann selber keine schreiben aus dem Webinterface (oder ich finde sie nicht)
  • FAQ ist anscheinend noch im Aufbau

Soweit kann ich sagen das es auf den ersten Blick ganz ordentlich aussieht, auch wenn noch nicht alle Funktionen im Webinterface funktionieren und ich meine ipv6 Adressen vermisse.

Blackberry Widgets

Jeder kennt heutzutage “Apps”. Für alle die sie nicht kennen, Apps sind Programme die man auf seinem Mobiltelefon installieren kann. Bei fast allen Geräten ist das Heutzutage möglich. Die meisten werden in eigenen Sprachen oder Java geschrieben und man muss “wirklich” Programmieren können um nur ein “Hello World” auf den Bildschirm zu bekommen. RIM hat schon seit längerem (seit BB OS5) die sogenannten Blackberry Widgets integriert. Das sind Programme die auf HTML/CSS und Javascript aufbauen und somit für fast Jedermann möglich eine mini web application für sein Blackberry zu schreiben. Es bietet nicht alles was eine richtige Programmiersprache bietet, aber für das eine oder andere kleine Programm sollte es reichen.

Das hat mich ein bisschen Gereizt und ich habe mich ein bisschen damit Beschäftigt. Bevor man aber loslegen kann muss man einige Programme von RIM herunterladen. Dabei braucht man das Java JDK, Eclipse + Widget SDK und einen Blackberry Emulator. Wenn man das Geschafft hat kann man eigentlich schon loslegen. Man sollte sich ein bisschen rein lesen und vielleicht das eine oder andere Video anschauen. Leider funktioniert es soweit nur unter Windows und deswegen komme ich nicht wirklich dazu und mag es nicht wirklich.

Nichts desto trotz  kann man mit nur ein paar Zeilen ein kleines Widget schreiben. Im Grunde braucht man dazu nur eine index.hml, config.xml und die Bilder die man verwenden möchte. Zum Testen habe ich ein kleines Widget geschrieben (ganz ohne Javascript) womit man schneller (als über Bookmarks) auf wadoku.de suchen kann. Das ganze sieht dann wie folgt aus:

<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<meta name=”viewport” id=”viewport” content=”initial-scale=1.0,user-scalable=no”>
<link href=”ext/style.css” rel=”stylesheet” type=”text/css”>

<title>Wadoku Online</title>
</head>
<body>
<br><br><CENTER><IMG SRC=”ext/image.gif”><br>
<form action=”http://wadoku.de/mobile.jsp?” target=”_blank”>
<b>Japanisch-Deutsches Wörterbuch</b><br><br>
<input type=”text” name=”phrase” style=”width:50%”>
<br><br><input type=”submit” value=”Suchen”>
</form>
</CENTER>
</body>
</html>

Wie man sehen kann ist es reines html und ist sehr schnell geschrieben. Den Code kann man jetzt als jar verpacken lassen und auf seinem Emulator ausprobieren. Damit das Widget aber noch auf einem richtigen Blackberry laufen kann braucht man noch die “Java Code Signing Keys“. Die Kosten nur 20USD, aber das kann  man mal ausgeben.

In dem Emulator sieht das dann folgendermaßen aus:

Über die Widget API kann man noch auf Geräteeinstellungen zugreifen und so doch ein etwas anspruchsvolleres Widget schreiben als ich es hier zum Beispiel gemacht habe.

Das eine oder andere Widget das ich Veröffentlichen werde kann man in Zukunft unter http://blackberry.itbert.de finden

Flickr und Ich

Jeder kennt den Foto-Service flickr und war mit Sicherheit schon einmal auf der Seite um sich Bilder anzuschauen. Auch ich habe bis vor einer weile den kostenlosen Service von flickr benutzt und ein paar Bilder hoch geladen. Nicht viele und nur sporadisch benutzt. Aus einer Laune heraus habe ich mir einen Pro Account geholt. Jetzt habe ich keine Upload Begrenzung mehr und kann so viele Bilder wie ich will auf flickr hoch laden und die Bilder mir in Originalgroesse anschauen bzw. wieder herunterladen. Dabei kann man Bilder als “Privat” markieren und keiner kann sich die Bilder anschauen. Somit kann man flickr ein “bisschen” als Backup Funktion mit zusätzlichen Optionen ansehen.

Um die Bilder wieder zu finden muss man diese ordentlich Sortieren. Das geht am besten über Tags, es ist zwar möglich auch “Sets” anzulegen, aber irgendwie finde ich das nicht so praktisch. Um die Bilder erst mal ordentlich auf flickr zu bekommen gibt es viele Wege. Der Standardweg ist über das Webinterface, aber wenn man mehrere tausend Bilder hoch laden will ist das nicht praktisch. Bis vor kurzem habe ich dafür postr benutzt womit man einfach und schnell Bilder hoch laden kann, aber leider nicht sortieren bzw. organisieren kann. Fuer ein paar wenige Fotos ist das Praktikabel, aber für mehr…? Nach ein bisschen Suchen habe ich dann den “Desktop Flickr Organizer” gefunden und teste das Programm im Moment. Soweit kann ich sagen dass das Programm alles kann was ich zum Organisieren brauche. Uploads, Downloads, Tags, Sets, Pools (Gruppen) und sogar Blogs. Das beste ist sogar dass man offline arbeiten kann. Beim ersten starten kann es ein bisschen dauern bis es alle Bilder und Thumbs erstellt hat (kommt auf die Menge drauf an), aber danach steht nichts mehr im Weg. Leider funktioniert die Version 0.8 bei mir nicht und verabschiedet sich immer wenn man ein Bild hoch laden möchte. Ich empfehle also die Benutzung der 0.7er Version die soweit ohne Probleme funktioniert (und die gleichen Features hat?).

UPDATE: Das Synchronisieren von vorhandenen Bildern zu dfo dauert ewigkeiten. Ich hatte gerade mal 500 Bilder in meinem flickr Account und es hat mehrere Tage gedauert. Es ist viel schneller wenn man die Bilder ueber dfo auf flickr hochlaedt, weil dann die Bildervorschauen direkt erstellt werden.

How to get authvchkpw working for courier?

Leider bieten die aktuellen Versionen von courier keinen Support mehr fuer authvchkpw und daher muss man einen kleinen hack machen und Versionen mischen :(

wget http://www.qmailrocks.org/downloads/courier-authlib-0.55.tar.bz2
tar jxvf courier-authlib-0.55.tar.bz2
cd courier-authlib-0.55
apt-get install libdb-dev
./configure –prefix=/usr/local –exec-prefix=/usr/local –with-authvchkpw  –without-authldap –without-authmysql –disable-root-check –with-ssl
make && make check
cp .libs/libauthvchkpw.so /usr/lib/courier-authlib/

und natürlich:

/etc/init.d/courier-authdaemon restart

und dann könnte man mit glueck folgendes sehen:

Mar 15 20:41:34 host authdaemond: stopping authdaemond children
Mar 15 20:41:34 host authdaemond: modules=”authvchkpw”, daemons=5
Mar 15 20:41:34 host authdaemond: Installing libauthvchkpw
Mar 15 20:41:34 host authdaemond: Installation complete: authvchkpw

und nicht mehr:

Mar 15 16:46:37 host authdaemond.plain: restarting authdaemond children
Mar 15 16:46:37 host authdaemond.plain: modules=”authvchkpw”, daemons=5
Mar 15 16:46:37 host authdaemond: modules=”authvchkpw”, daemons=5
Mar 15 16:46:37 host authdaemond: Installing libauthvchkpw
Mar 15 16:46:37 host authdaemond: libauthvchkpw.so: cannot open shared object file: No such file or directory

Ausprobiert auf Debian Lenny.  (via)

Gestern? Morgen?

Solaris macht mir manchmal das Leben schwer. Ich verstehe dass man kompatibel bleiben will, aber das kann man auch anders lösen.

Unter Linux kann man recht bequem das Datum von gestern anzeigen lassen:

[bert2002@computer ~]$ date –date=’1 day ago’ +%Y-%m-%d
2010-03-01

aber unter Solaris muss man wieder einen Trick anwenden:

[bert2002@computer ~]$ TZ=”GMT+24″ date +’%Y-%m-%d’
2010-03-01