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? 

 

Posted in Mac

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

person using macbook pro

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. 

neues aus der Entwicklung ;-)

nach langer Zeit der Stille, hier mal wieder ein paar neue Infos:
Ersteinmal vielen Dank für die beiden Kommentare im letzten Beitrag…. zwei Stück sind ja fast schon Rekord.
Aber es spiegelt sehr schön auch meine erste Reaktion auf das Rest Paradigma wieder:
Es dauert eine Weile, bis man sich selber klar wird, wie man die einzelnen Ressourcen einteilt und welche einzelnen Bereiche überhaupt interessant sind für einen Benutzer.
Filtert man zum Beispiel alle Einträge auf der Clientseite und schickt immer eine komplette Liste (was meiner Meinung nach dem ganzen System widerspricht) oder legt man gleich separate “Views” für ein- und ausgehende Einträge an (was ich jetzt tatsächlich auch so machen werde).

Auf Anraten von Phillip bin ich grade dabei die Grundprozesse zu sammeln und zu strukturieren. Also anders als die Grundfunktionen möchte ich hier dann auch die Vorgänge im System sammeln.
Also wenn zum Beispiel ein neuer Benutzer angelegt wird, wird erst ein Formular geladen, indem der Nutzer seine Daten einträgt, dann werden die Daten auf Stimmigkeit und Vollständigkeit überprüft und ggf. eine Fehlermeldung zurück gesendet. Es folgt eine Bestätigungsemail an den Ersteller, welche dieser nutzt, um seinen Account letztendlich zu aktivieren. Schon hier sind Fragen offen: zum Beispiel, soll es die Möglichkeit geben, dass nur ein Admin/Projektleiter neue Benutzer anlegen kann. Erhält ein Verantwortlicher eine Email über die Erstellung eines neuen Nutzers, sodass dieser in eine bestehende Gruppe (oder ein bestehendes Projekt) eingeordnet werden kann?
Ich denke das ich ein wenig Zeit investieren muss, aber dass sich diese Zeit definitiv auszahlt am Ende.
Ich werde meine Arbeit übrigens unter dem Titel

Aufgaben kollaborativ und webbasiert verwalten- Realisierung einer Web-Anwendung mit Enterprise Java Beans und Yahoo Web Framework

morgen anmelden. Vielen Danke für den Input Phillip :-). Gefällt mir so wirklich besser. Ab dann läuft die Zeit :-o.

RESTliches

Ich habe lange Zeit nicht mehr gemeldet.
Das lag zum einen daran, dass es viel drumherum zu tun gab und zum zweiten daran, dass ich momentan viele vage Dinge habe, die ich erstmal in eine wirkliche Form bringen will. So ungefähr wie eine Zettelsammlung, die man dann endlich Llochen und einheften möchte.

Ich fange erstmal damit an, dass ich meine – bisherigen – Funktionen zu meinen Objekten sortiere. Bisher habe ich an Objekten nur User und Entries. Wohlgemerkt, es geht hier nicht um Methoden sondern einzig und alleine um Funktionen. D.h. die Funktion wäre das was in der URI dann stehen würde.
z.B. /Users/1/inbox. Dann wäre Users also mein Objekt (dies wird auf Java Ebene dann von der Klasse UserService abgebildet) und inbox wäre die Funktion. Natürlich wird es in der Klasse UserService eine Methode Namens inbox geben, allerdings auch zusätzliche Methoden, welche nicht dem REST Paradigma unterworfen sind.

Hier also meine kleine Übersicht:

  • Entries
    • create
    • update
    • delete
    • send
    • list
    • mark
    • Dependencies
  • Users
    • create
    • update
    • delete
    • login
    • logout
    • list
    • Inbox
    • Outbox

Eine Erklärung erfolgt in einem späteren Post. Sobald ich die einzelnen Funktionen eingegrenzt habe. Zudem haben sich folgende Änderungen ergeben:

  1. Ein Eintrag kann mehrere Empfänger haben. Damit kommen folgende Problem auf mich zu:
    1. Ist ein Eintrag erledigt, wenn ein Empfänger ihn als erledigt markiert? Oder alle? Vielleicht wahlweise?
    2. Wenn es möglich ist, Einträge “weiter zu vermitteln”, wie stellt man sicher, dass die anderen Empfänger erhalten bleiben? Kann der aktuelle Empfänger weitere hinzufügen?
    3. Wie bildet man das in der Datenbank ab (zum Glückt gibt es dafür ja schon eine geeignete Lösung)

    Dazu gesellen sich dann noch Probleme, dass man zum Beispiel ja eindeutig einen aktuell Verantwortlichen für einen Eintrag ermitteln sollen kann. Bei wechselnden Empfängern und vor allem mehreren Empfänger könnte das schwierig werden. Vor allem müsste man dann auch über eine erweitere Rollenverteilung nachdenken. Stichwort Verantwortlich und Bearbeiter.

  2. eistens ist es notwendig, dass eine Aufgabe in Unteraufgaben “aufgebrochen” wird. So soll es möglich sein, dass ein Eintrag beliebig(?) viele Untereinträge auf beliebig(?) tief verschachtelten Ebenen hat. Dazu wird man den “Erledigt Status” von “unten nach oben durchreichen” müssten. Wenn aus Entry 12 Entry 12.1 und Entry 12.2 erledigt sind, sollte auch Entry 12 als erledigt markiert sein.

Zu guter Letzt noch ein paar Links, die sich so fanden:

Ajax mit HTTP Basic Auth (YUI) [1] womit schon mal ein Problem gelöst ist, was in meinem Hinterkopf festsaß.
REST with JSP [2] irgendwie sehe ich nur noch innoQ – so langsam wird man paranoid :-).
REST Web Services [3] ist ein schönes Beispiel zu REST und da wird auch der Unterschied zu SOAP deutlich.

again on ebay: bidding on a used IBM S/390 Mainframe

During my break and therefore during some browsing on ebay (Germany), i found an interessting auction on ebay:

IBM S/390, Mainframe 9672 + RS 6000 570 + Multiplexer

If i had the money and the room to leave the biest (the description says something around 1 ton), i had no doubt and would bed on this thing.
I had the luck to take part on the “IBM Summer Seminar” at ouf University two summers ago. So i got some infos about that kind of system.
So i hope that someday there will be an offer on ebay and i will have the possibilies to take that opportunity.