wua.la

I found an interesting approach for an reliable, scalable and distributed way of saving your files: It is called wua.la. For becoming a part of the p2p net storrage visit their homepage:http://wua.laYou need an invitaion to become a member. I have some left. So if you are interested, just drop me a line.You can find some background information in the following google tech talk: Link to tech talk on youtube

(sorry Embedding was disabled by request 🙁 )

letzter Stand

Nachdem ich nun meine JRA jar habe und auch die restlet jar habe (Ich denke mir einfach mal, dass die vorausgesetzt wird).
Habe ich mir nun eine einfache Klasse geschrieben (okay sie ist geklaut, aber ich will ja erstmal testen, wie was geht ^^):

package de.hausswolff.cotodo.test;
import java.util.List;
import org.codehaus.jra.*;
@HttpResource(location="/customers")
public class Customers {
    private List registry;

    public Customers(){
        this.registry.add(new Customer("bob"));
        this.registry.add(new Customer("alice"));
        this.registry.add(new Customer("carol"));
        this.registry.add(new Customer("dave"));
    }
   
    @Get
    List get(){
        return registry;
    }

    @Post
    void add(Customer customer){
    }
}

Okay… die Klasse wird anstandslos kompiliert und auch Eclipse kennt alle Annotation (dient wahrscheinlich nur zu meiner Beruhigung, sagt es mir doch, dass die jar richtig eingebunden ist 😀 ).
Was ich mich jetzt allerdings frage ist, wie ich das schöne Teil nun einbinde.
Da es ja von Aufbau her nicht wirkliche eine Bean ist.
Ich habe versuchsweise in der web.xml folgendes eingefügt:

<servlet>
    <servlet-name>JRACustomers</servlet-name>
    <servlet-class>de.hausswolff.cotodo.test.Customers</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>JRACustomers</servlet-name>
    <url-pattern>/customers*</url-pattern>
</servlet-mapping>

Allerdings half das auch nicht. Unter /customers ist nix :-(. Ich werde mich damit morgen in aller Ruhe noch mal befassen.
Als weiter Möglichkeit, dachte ich mir, dass ich die Class per jsp useBean Tag einbinden kann, aber ist ja auch keine wirkliche Bean. Ich hoffe, dass ich da morgen weiter mit komme. Im Netz fand sich bisher auch nix. Und auf der JRA Page wird nur nach paranamer verwiesen. Was das nun schon wieder ist, werd ich mir morgen/gleich mal anlesen.

hands-on: Maven(2)

Bevor ich dann endlich mal wieder etwas über meine eigentliche Arbeit poste, noch mal ein kleiner Abstecher zu dem Thema “Dinge die man nebenher sich aneignet”.
Ich habe mich mal, nach dem Kommentar von Stefan bezüglich JRA umgesehen.
Leider fand ich zuerst nur eine Source Version vom JRA Code, sodass ich mir erstmal die Fähigkeit aneignen musste, das ganze zu kompilieren.
Als Build Tool kommt hier übrigens Maven 2 zum Einsatz.
Das ganze ist vom Apache Projekt und soll wohl irgendwann einmal die Nachfolge von Ant antreten. Wenn man sich so die Feature PlugIns Liste ansieht, ist das auch durchaus wahrscheinlich.
Der riesen Vorteil von Maven 2 – soweit ich das bisher verstanden habe – ist, dass man die Tools, welche man zum Erstellen/Installieren/Testen/Deployen benutzen will, nicht vorher installieren muss, sondern dass Maven 2 von der Versionierung der Sourcen bis hin zum letztendlichen Kopieren auf das Zielsystem alles übernimmt.
Um es kurz zu machen: Ich erhielt dann nach viel Installation und Tutorials lesen endlich meine jra-1.0-alpha-5-SNAPSHOT.jar 🙂 .

Nachdem ich dann noch mal auf der JRA Homepage gesucht habe, habe ich allerdings gesehen, dass es eine alpha 4 auch zum Download gibt. Nunja bin ich zumindest ein wenig aktueller. Jetzt will ich mal schaun, dass ich die Jar einbinden und mit meinem bisherigen Projekt zum Laufen kriege.

some sunday links :-)

I just tried to resize a video file from a scraped version to a 720×430 right-ratio version.So after iMovieHD 06 was a complete failure, i tried to use Quartz Composer.This wasn’t bad at all, but besides of a very good image result, i had no sound afterwards O_o.VLC is not quite as good than i thought – so a classical resizing is not possible, only a resampling and recoding.Currently i try my luck with quicktime… So i hope, this will do it after all. It is strange, that the QT Encoder is veeeeery slow, although it uses my dual cores. Some Links i found theses days:


iPod Touch kann telefonieren!
MySQL auf Leopard
What If Gmail Had Been Designed by Microsoft? 

 

Kontakte konsolidieren Teil 1

Ich betreibe schon seit einiger Zeit eine “Konsolidierung” meiner sämtlichen Kontakte.  So habe ich nur noch eine Stelle (das Apple Adressbuch) an der ich Einträge erstellen/aktualisieren muss und habe sie dann zum Beispiel auf meinem Handy (ein Nokia N80).

Mit MacOS 10.5 ist eine neue – wie ich finde schöne – Funktion hinzugekommen:

Unter  Adressbuch->Einstellungen->Allgemein ist im unteren Bereich ein Button, mit dem man eine Synchronisation mit dem Yahoo Adressbuch einstellen kann. Da ich aufgrund von (seltenen, aber durchaus vorhandenen) Uploads zu FLICKR eh einen Yahoo Account besitze, und damit Email und Adressbuch habe, hat es sich quasi aufgedrängt, das mal zu testen. Und ich muss sagen, es funktioniert (apple-like) problemlos und im Hintergrund.

Als ich dann bei XING gestern dann noch eine Funktion fand um mein Yahoo Adressbuch mit angemeldeten und mit mir verbundenen Kontakten abzugleichen, schloss sich wieder ein Kreis :-).

Meine Kontakte dann über das Yahoo Adressbuch auf einen anderen Mac zu importieren habe ich noch nicht versucht, aber ich denke das sollte problemlos möglich sein. Alles in allem eine nette Funktion mit Mehrwert. 

REST resources

Hier dann mal eine Übersicht, wie ich REST auf meine Anwendung hin abbilden möchte:

Das deckt sich auch ungefähr mit meinen Use-Cases. Ich werde jetzt versuchen eine Java Bean mit REST Funktionalität anzulegen um damit dann mein JPA Objekt zu bearbeiten :-).
Weiterhin muss ich mir noch stark überlegen, ob ich dann überhaupt noch JSP für die Darstellung brauche, oder ich nicht alles über Beans machen kann. (Wobei ich eigentlich gerne für die Display Logic – also die reine “Verpackung” bei JSP bleiben würde). Ich denke ich werde als Ausgabeformat der Resourcen(listen) ersteinmal bei XML bleiben, wobei sich als User natürlich auch anbieten würde, auch VCard anzubieten (aber ich muss ja in meinem Bereich bleiben 🙂 )

Break

Ich bin dann mal kurz für zwei Tage in England um mich zum Bachelor machen zu lassen :-D. Nur damit sich keiner Sorgen macht, dass hier nichts mehr kommt…
Ich bin momentan – ja immer noch – dabei meine Funktionen zu sammeln und auf REST Basis meine Schnittstellen zu definieren.
Ich hoffe, dass dann bald zum Abschluss zu bringen und dann erste Vorgänge zu implementieren.

Eine Art Aha Erlebnis

Ich bin – eher durch Zufall auf folgendes Video von Stefan und Phillip gestoßen und nach dem Ansehen sind mir ein paar Dinge glasklar geworden:

Bisher hatte ich gedacht, dass REST eher als eine Art Spezialfall von HTTP ist. Seltsamerweise scheint es demnach allerdings anders herum der Fall zu sein.
Irgendwie machen jetzt auch die beiden letzten Kommentare mehr Sinn.
Ich halte die Darstellung des REST Prinzips für äußerst gelungen und hat mich seltsamerweise auch eine ganze Ecke mehr für RoR eingenommen. (Wer kann kann schon anzweifeln, wenn eine Applikation das Potential auf eine Skalierung (durch die Möglichkeit Ressourcen auf unterschiedliche URIs zu verteilen) quasi btw. eingebaut hat.

Ich werde morgen die Aktionen der verschiedenen Ressourcen auf die 4 Funktion POST/GET/DELETE/PUT abbilden.
Ich denke ich werde mich vorerst auf die Serverseite konzentrieren und als Ausgabetypen erstmal einfaches HTML und XML (welches ist ja später für YUI sowieso brauche) bemühen. Unter [1] gibt es auch schon einen Ansatz wie man die URIs dann auch ansteuern kann.
Was wir noch klar geworden ist und mich wirklich bestärkt hat ist, dass ich ein und dieselbe Anwendung als Teilstück auf eine bestehende Webseite einbinden kann (z.B. durch JS).

Allerdings bleiben ein paar Fragen, die sich während des Videos ergeben haben:

  1. Ich habe vor einfache HTTP Authentifizierung (Basic Authentication nach RFC 2617) zu benutzen. Stefan meinte ja in dem Video, dass man – um die Zustandslosigkeit zu erhalten – die Authentifizierung bei jedem Zugriff erfolgen soll. Ist das durch die Spezifikation von Basic Authentification gewährleistet? Wenn ich muss lese ich das in der RFC auch nach ;-). Ich habe bisher halt eher mit Sessions gearbeitet und diese als SessionIDS an die URLS angehängt (was ja REST irgendwie wiederspricht – wäre eine Ressource ja nicht mehr eindeutig durch eine URI identifizierbar)
  2. Bis auf Downloads habe ich mit curl noch nicht viel gemacht. Gibt es da irgendwo ein Tutorial zu? Grade so Möglichkeiten wie den Header zu ändern suche ich schon lange. Bisher habe ich – wenn ich den “Reintext” aus Abfragen erhalten wollte immer Telnet bemüht.
  3. Als Stefan das XML Schnippsel gesendet hat, ist auf der Auflösung des Videos nicht wirklich ersichtlich welche URI jetzt aufgerufen wird. Meiner Meinung nach müsste es ja Customer (glaube der bekam die neue Stadt) und ein PUT (weil Veränderung) gewesen sein, aber vielleicht könnte ich das noch bestätigt bekommen 🙂
  4. Mit den Conditional Headern: Das klingt in erster Linie ein wenig nach gestreckter/gehackter Spezifikation. Ist das eine gängige Praxis oder dient das wirklich nur zur Behandlung von ganz harten Fällen?

Abschließend noch mal ein Kompliment an Stefan und Phillip. Irgendwie haben mir die nächtlichen 45 min grade eine ganze Menge weitergeholfen. Solche Videos sollten zu Youtube ;-).

Software Update von MacOs via Bash

Naja nach dem Update von MacOS auf Version 10.5.1 wollte mein Mac mini sich nicht mehr remote steuern lassen. Da ich momenten keinen Monitor für meinen kleinen Mac habe, musst ich wohl oder übel das notwendige Update per SSH ausspielen.Ich fand bei http://instant-thinking.de  eine Lösung: 

horus:~ philipp$ softwareupdate -l

 Damit erhalte ich eine Liste mit allen aktuellen Updates. 

horus:~ philipp$ sudo softwareupdate -ia

 Installiert mir schließlich alle vorhandenen Updates 🙂  Die Remote Verbindung klappte nach dem Update wieder problemlos. 🙂

tatsächlich….

…. fast schon wieder n Jahr rum 😉 Also irgendwie komme ich gar nicht mehr dazu hier was zu posten.Hat sich schon eine ganze Menge ereignet in letzter Zeit :-)Achja… heute dann mal in Deutsch wieder, irgendwie ist das Englische grade entfallen.Zuallererst:Ich habe endlich ein Macbook und es ist soooo schön! Zwar in weiß (und langsam zeigt sich, dass es Flecken anzieht),  aber es ist deutlich schneller als mein kleiner G4 Mac Mini.Da ich munter am einrichten des Systems bin, hier schon mal ein paar Hinweise: 1. Um in der iTunes Bibliothek die Links (die kleinen Pfeile) hinter den Interpreten/Alben so umzuwandeln, dass sie nicht in den iTunes Store führen, sondern in die eigene Bibliothek, muss man im Terminal folgenden Befehl ausführen:   

defaults write com.apple.iTunes invertStoreLinks -bool YES    

Möchte man das alte Verhalten wiederhaben (Option(=alt)-KLICK auf den Pfeil Button führt zur Bibiothek), so schreibt man:  

defaults write com.apple.iTunes invertStoreLinks -bool NO

 Gefunden im macwelt.de Forum [1]  Weiterhin gibt es eine erste Beta vom Mail Plugin:

 PGP for Apple’s Mail    

Diese Beta läuft nun auch wieder unter Macos 10.5 Leopard. Meinen gpg key findet ihr übrigens direkt unter meinem Foto. Man erhält diese Beta, indem man sich in die Mailingliste einträgt. Es läuft noch nicht alles perfekt, aber zumindest kann man gpg wieder schützen.Ich werde in der nächsten Zeit übrigens Beiträge zu folgenden Themen posten: 

  1. gpg – was ist das und wofür braucht man das
  2. ssh  – was ist das und wofür braucht man das
  3. ssh mit key files – der sichere Komfort

 Es ist zumindest ein kleiner Beitrag, ein wenig Information zu verbreiten, nachdem zumindest die Politik in Deutschland kein Interesse daran hat, den Schutz der persönlichen Daten weiterhin aufrecht zu erhalten.