• Nach den Ankündigungen, dass myBlogLog MicroID für die eigenen Profilseiten einsetzt (bsp.: www.mybloglog.com/buzz/members/pfefferle/) habe ich mich gefragt, warum myBlogLog MicroIDs nur anbietet, nicht aber für die Verifizierung der Blogs verwendet.

    Aber zuerst mal eine kurze Einführung. MicroID ist eine einfache Möglichkeit, den Besitz von Webseiten zu validieren.

    MicroID enables anyone to claim verifiable ownership over content hosted anywhere on the web (social networking sites, discussion forums, blogs, etc.).

    Das Prinzip ist einfach, es wird ein Hash-Wert aus zwei unterschiedlichen URLs (auch Pseudo-URLs wie z.B. „mailto:“ oder „xmpp://“ sind möglich) gebildet und als Metatag in die Webseite eingebunden.

    hash = sha1(
        sha1( "mailto:mustermann@example.com" ) 
        + 
        sha1( "http://www.example.com/" ) 
      )Code-Sprache: JavaScript (javascript)

    Alternativ zu sha1 kann z.B. auch MD5 verwendet werden. Der Aufbau des Metatags sieht folgendermassen aus uri+uri:algo:hash

    <meta name="microid" 
      content="mailto+http:sha1:
        ba37d92454792b65838c9827a8d75171c7241924" />Code-Sprache: HTML, XML (xml)

    Der Vorteil eines proprietären Formats im Gegensatz zu MicroID

    Was die genauen Gründe dafür sind, dass myBlogLog ein eigenes Format verwendet weiß ich natürlich nicht, aber schaut man sich MicroID etwas genauer an, findet man doch einige kleine Problemchen.

    Eigentlich ist es ja nur ein wirkliches Problem, und zwar die URL… Eine URL kann man auf zu viele verschieden Weisen schreiben, als dass sie eine valide ID abgeben könnte:

    • http://example.com
    • http://www.example.com
    • http://example.com/

    Zusammen mit der E-Mail – Adresse mustermann@example.com bekommt man drei verschiedene Hash-Werte:

    • 19358536d8c443614bc7d861f4b050ee34a549b9
    • 05c732700bfa89cd234bb7fc08cb673f7c0d88b8
    • 9275b4dcd7cc2c997b2a5249420b422e937d36e0

    Das heißt, es kommt immer darauf an wie der Benutzer seine URL bei einem entsprechenden Service angibt. Ist für den Metatag der Webseite http://example.com verwendet und beim Service http://www.example.com/ angegeben worden, kann die Webseite nicht verifiziert werden, da sich die Hash-Werte unterscheiden.

    Lösungsvorschläge

    Eine mögliche Lösung wäre alle denkbaren URLs auszuprobieren, was nicht sehr performant wäre und eine menge Zeit beanspruchen würde. Die (meiner Meinung nach) bessere Lösung wäre eine Art „service catalogue“ an, in dem festgelegt ist wie z.B. die von myBlogLog verwendete MicroID-URL aussieht.

    Ein Beispiel: http://www.mybloglog.com/buzz/members/Username/

    Das Problem bezieht sich natürlich nur auf Services/Communities, bei denen man keinen Einfluss auf die MicroID hat. Bei persönlichen Weblogs ist das natürlich was anderes, da die URL und der Matatag vom Benutzer selbst angelegt werden.

    Falls jemand noch nen tollen Lösungsvorschlag hätte wäre ich sehr dankbar, weil ich MicroID trotz allem gerne einsetzen würde… Das Prinzip ist einfach so schön simpel 🙂

    8 Kommentare zu Das kleine Problem mit MicroIDs
  • Vor ein paar Wochen wurde XRDS-Simple 1.0 (Draft 1) veröffentlicht. XRDS-Simple ist ein Standard, der auf bestehenden Standards der XRI Community aufbaut, auf den z.B. auch das von OpenID bekannte Yadis-Format basiert.

    XRDS-Simple provides a format and workflow for the discovery of resources metadata, and other linked resources. As web services continue to grow, applications utilize a wider range of web services and resources across multiple providers. XRDS-Simple allows providers to document their resources in a machine-readable way, which can be automatically discovered by consumer applications.

    XRDS-Simple bietet also ein recht simples Format um auf Services und andere „linked recources“ zu verweisen.

    XRDS-Simple als zentraler ServiceCatalogue

    Wie man dieses Format für das DataPortability Projekt nutzen kann hat Christian Scholz in seinem Post „The first Data Portability Use Case (somewhat technical)“ schön zusammengefasst.

    Nehmen wir an, ich melde mich bei einem neuen Dienst an und möchte meine Daten, die ich an anderen Stellen im Internet angegeben habe, wiederverwenden. Um nicht alle meine Profil-URLs immer wieder per Hand angeben zu müssen, kam die Idee eines ServiceCatalogues auf.

    Der ServiceCatalogue soll an zentraler Stelle alle Informationen die über mich im Web verfügbar sind (z.B. als hCard, XFN, FoaF, usw. formatiert) bereitstellen.

    <XRDS xmlns="xri://$xrds">
      <XRD xmlns:simple="http://xrds-simple.net/core/1.0" xmlns="xri://$XRD*($v*2.0)" version="2.0">
        <Type>xri://$xrds*simple</Type>
        <Service priority="10">
          <Type>http://www.w3.org/2006/03/hcard</Type>
          <URI simple:httpMethod="GET">http://pownce.com/pfefferle</URI>
        </Service>
        <Service priority="20">
          <Type>http://gmpg.org/xfn/11</Type>
          <URI simple:httpMethod="GET" priority="10">http://twitter.com/pfefferle</URI>
          <URI simple:httpMethod="GET" priority="20">http://pownce.com/pfefferle</URI>
        </Service>
      </XRD>
    </XRDS>Code-Sprache: HTML, XML (xml)

    Das Beispiel zeigt z.B. die URL zu meiner hCard bei Pownce und meinen Freundesnetzen bei Pownce und Twitter. Um diese Information vor unerlaubten Zugriffen zu schützen, könnte die XRDS-Simple URL mit OAuth geschützt oder per OpenID AX angefragt werden.

    XRDS-Simple mit AX abfragen

    Um XRDS-Simple via AX anzufragen, müsste man zuerst ein AX-Schema definieren:http://dataportability.org/schema/serviceCatalogue Label service catalogue Description The url to a XRDS-Simple formatted service catalogue Example http://example.org/sc.xrds Formatting http://www.w3.org/2001/XMLSchema#anyURI

    und unter http://dataportability.org/schema/serviceCatalogue bereitstellen. Leider funktioniert diese Art der Bereitstellung nur wenn einige OpenID-Provider diese AX-ServiceCatalogue-URL auch implementieren.

    2 Kommentare zu XRDS-Simple und DataPortability
  • Eigentlich wollte ich NoseRub schon vor ner ganze Weile mal testen, jetzt habe ich die seit vorgestern erhältliche Version 0.6 zum Anlass genommen, NoseRub mal auf meinem Server zu installieren: pfefferle.org

    Wer NoseRub, wie ich als SingleUser-System auf seinem Server/Webspace hosten will (anstatt als Service wie Identoo.com) muss nur zwei Dinge beachten:

    NoseRub Registration Type

    Zuerst sollte man sicherstellen dass sich keiner bei NoseRub registrieren kann, dazu einfach die Datei „app/config/noserub.php“ öffnen und den NOSERUB_REGISTRATION_TYPE auf none setzen.

    define('NOSERUB_REGISTRATION_TYPE', 'none');Code-Sprache: JavaScript (javascript)

    SocialStream durch „My Profile“ ersetzen

    Im zweiten Schritt kann man die Startseite (SocialStream) durch sein eigenes Profil ersetzen. Hierzu muss man in der „app/config/routes.php“ einfach nur die Zeile

    Router::connect('/', array('controller' => 'identities', 'action' => 'social_stream'));Code-Sprache: PHP (php)

    …mit…

    Router::connect('/', array('controller' => 'identities', 'action' => 'index', 'username' => 'USERNAME'));Code-Sprache: PHP (php)

    …ersetzen und statt USERNAME den eigenen Benutzernamen eintragen. Das wars eigentlich schon.

    Viel Spaß beim ausprobieren 🙂

    Keine Kommentare zu SingleUser NoseRub
  • Habt ihr nicht auch das Gefühl dass meine Überschriften immer kreativer werden?

    monkeyformats-header

    Albert de Klein, der Autor des zuvor erwähnten Monkeyformats-Artikel, hat seiner Idee jetzt eine Webseite spendiert.

    Warum Monkeyformats:

    Microformat adoptation can use a boost worldwide because it makes the web a better place. Monkeyformats allow users to experience the advantages of microformats on sites they use everyday but that have been lacking semantic markup so far without having to wait for those sites to add them eventually. Although still in its infancy there are already several monkeyformats available that add microformats to some national phone directories in Europe, ticket services, etc.

    Auf monkeyformats.org gibts noch ne Reihe weiterer Informationen unter anderem auch eine Anleitung wie man selbst neue Formate erstellt.

    Großartige Idee, großartiges Logo und noch großartigerer Name! 🙂

    3 Kommentare zu Die Affen bekommen einen eigenen Käfig
  • So, nachdem sich doch einiges bei Optimus[1] und Operator[2] geändert hat, hab ich auch mal mein Optimus User Script auf den neusten Stand gebracht.

    Änderungen seit der letzten Version:

    • URL von document.commandDispatcher.focusedWindow.document.URL auf semanticObject.node.ownerDocument.URL umgestellt.
    • Support für hAudio und hListing hinzugefügt

    Den Download findet ihr hier: Optimus User Script

    [1] Optimus ist ein Microformats-Parser auf Basis von XSLT.
    [2] Operator ist ein Firefox-Addon zum visualisieren und verarbeiten von Microformats.

    Keine Kommentare zu Optimus für Operator update
  • Wer den Parser der SocialGraph API einmal testen will, um z.B. zu sehen welche Links einer Seite schon vom Google-Index erfasst wurden, dem bietet Google eine einfache Parser Testing API.

    As a testing and debugging aid, the Social Graph API includes an API to run any document against the Social Graph API’s internal parser to see what it would’ve parsed, had Googlebot actually crawled it.

    Und für faule Menschen wie mich gibts von Google auch gleich noch ein Greasemonkey script dazu 🙂

    Ich glaube der Schmiermaxe und ich werden noch richtig dicke Freunde!

    Keine Kommentare zu SocialGraph API debugger
  • Optimus Transformer hat ne ganze Menge neuer Features spendiert bekommen, unter anderem auch Support für zwei der neueren Microformats hListing und hAudio.

    Alle neuen Features:

    • support of nested microformats
    • support of multiple includes
    • support of nested includes
    • support of anchor (you can use URL like http://example.com#my-vcard to narrow the target)
    • support of @couldbe attribute (internal feature, now item in hreview, for example, could be vcard or vevent)
    • hfeed now is optional
    • support for vcalendar
    • fix for text spacing
    • fix for empty tags in output
    • hListing support
    • hAudio support
    • general performance improvement
    • add RSS as an output format
    • rewrite validator from scratch
    • better UTF-8 support

    Das ist mittlerweile ne ganz stattliche Liste an unterstützten Mikroformaten, wenn jetzt nur noch alle Optimus-Ähnlichen-Services ein einheitliches JSON-Format zurückgeben würden…

    …und ich sollte mich definitiv mal etwas mehr mit XSLT beschäftigen!

    Keine Kommentare zu Neue Features bei Optimus Transformer
  • Ich wünsche euch einen schönen CSS Naked Day 🙂 (via)

    6 Kommentare zu notizBlog nackt
  • Albert de Klein beschreibt in seinem Artikel „Monkeyformats“ (und einigen Anwendungsbeispielen), dass man mit Hilfe von Greasemonkey, Webseiten nachträglich und relativ einfach mit Microformats auszeichnen kann.

    […] These client-side microformats work well with the Operator add-on and let you do microformatish things with websites that do not yet support microformats but might prove very useful as microformat examples. […] (via)

    Das Prinzip wirkt zwar auf den ersten Blick etwas umständlich, erspart einem aber letztendlich eine ganze Reihe an Arbeit. Microformats sind wohldefinierte Formate für die es schon eine ganzen Reihe an Programme und Services (z.B. Operator) gibt, die man mit Hilfe der Monkeyformats-Idee auch relativ einfach auf eigentlich „unsemantische“ Seiten anwenden kann.

    Funktionsweise

    greasemonkey-installation.jpg

    Nach der Installation einfach auf die entsprechende URL aufrufen (hier im Beispiel: www.thephonebook.bt.com) und schon wird aus einer normalen Webseite:

    without-greasemonkey.jpg

    …ein semantisches Feuerwerk 😉

    with-greasemonkey.jpg

    Um die Userscripts einfach finden zu können, sind alle mit „monkeyformats“ ge-tagged. Leider funktioniert das einzige Script für einen Deutschen Service (DasTelefonbuch.de) nicht so richtig.

    3 Kommentare zu Monkeyformats