Christians Blog

Von IT bis Wahnsinn ist alles dabei

Safari 5 + Extensions: Kleine Tücken

Nach kurzem Arbeiten mit Safari 5 und dem Extension-Support bin ich auf zwei Probleme gestoßen:

  • Deaktiviert man die Extensions Global, so werden diese nicht einfach ausgeschaltet sondern sie verschwinden vollständig aus der Liste.
    Sofern man sein Download-Verzeichnis brav löscht, findet man diese unter ~/Library/Safari/Extensions/
  • Das Updaten ist noch recht Stiefmütterlich implementiert. Man findet weder einen Changelog noch sonst irgend eine Beschreibung zu den neuen Versionen. Lediglich die Versionsnummer wird eingeblendet so das man sich die Informationen händisch zusammen suchen muss.
    Gleichzeitig sieht man keinerlei Aktions-Indikator nachdem man auf Updaten geklickt hat. Das er updated sieht man erst, wenn er schon fertig ist und das Update aus der Liste verschwindet. Hier muss nachgebessert werden.

Nachdem die diesjährige Keynote zur WWDC ein eher unspektakuläres Ereignis wurde (iPhone 4 geleaked, iOS 4.0 längst angekündigt, …) gab es danach doch noch eine kleine Überraschung: Safari 5 wurde veröffentlicht.  Neben den allseits gepriesenen Performance-Verbesserung und der obligatorischen Änderung des Namens der JaveScript Engine, gab es ein echtes Killerfeature: Extensions.

Was für Firefox Benutzer längst eine Selbstverständlichkeit war, stellt für eingefleischte Safari-Fans eine echte Neuerung dar. Endlich lässt sich der Lieblingsbrowser nach gut dünken modifizieren und den eigenen Bedürfnissen anpassen.

Wer erwartet hat, dass sich die meisten Entwickler erst noch in die Materie einarbeiten müssen, lang kräftig daneben.
Neue Extensions sprießen wie Pilze aus dem Boden und entsprechende Aggregatoren werden mit einer Flut von Erweiterungen überschwemmt.

Auf eben diesen Zug werde ich auch aufspringen und hier in meinem Blog von den mir wichtig erscheinenden Extensions berichten.

UITabBar und UIActionSheet cancelButton

Eine kleine Kurznotiz für alle iPhone Entwickler

Wer in einer UITabBar basierten App einen UIActionSheet anzeigen möchte, wird früher oder später bemerken, das der cancelButton zwar angezeigt wird, aber nicht funktioniert.
Dann hat man den ActionSheet wahrscheinlich mit
 [actionSheet showInView:self.view];
angezeigt.

Ein einfacher Workaround ist es, den View in dem MainWindow zu zeigen:
[actionSheet showInView:[[UIApplication sharedApplication] delegate].window];


  • 0 Comments
  • Filed under: CocoaTouch
  • Zotac NM10-DTX – welch ein Reinfall

    Nach knapp 20min Arbeit an meinem Server hat sich die Freude auf das neue Mainboard in ziemliche Unverständnis und Verärgerung gewandelt.
    Was erwartet man von einem Mainboard, welches 6 SATA-Ports zur Verfügung stellt? – Genau! Die Verwendung von 6 getrennten Festplatten.
    Leider ist dies in dieser Form überhaupt nicht möglich. Die beiden “nativen” SATA-Ports können angesprochen werden, und bei den 4 jmicron-Ports kann man zwischen 4 Modi wählen:
    • Raid-1
    • Raid-0
    • JBOD
    • Normal
    Wer nun denkt, “Normal” würde alle 4 Ports “freigeben” hat sich geschnitten. Hier wird nur einer der Ports verwendbar.
    Bei dem JBOD handelt es sich um einen Zusammenschluss aller angeschlossener Platten – also aus 2×400GB wird 1×800GB

    Nun kann ich mit einem solchen System überhaupt nichts anfangen, so das ich folgendes tun werde:
    1. Anfrage an den Händler und den Hersteller, ob es einen Fix gibt
    2. Von meinem Widerrufsrecht gebrauch machen und mir eine andre Lösung suchen
  • 5 Comments
  • Filed under: Allgemein
  • Endlich ist es da – Zotac NM10-DTX

    Heute ist endlich das Zotac NM10-DTX WiFi bei mir eingetroffen.
    Bestellt habe ich es am 30.01. – es ist somit mit Abstand die längste Zeit, die ich je auf eine Bestellung gewartet habe.
    Einen ersten Test wird es denke ich morgen Abend geben – es soll schließlich in meinem Fileserver für mehr Power und einen Geringeren Stromverbrauch sorgen.
  • 2 Comments
  • Filed under: Allgemein
  • Aus aktuellem Anlass:

    Wenn man – aus welchen Gründen auch immer – die Beta-Version des neuen iPhone OS auf sein geliebtes Telefon gebracht hat, und diese nicht mehr runter bekommt, dann gibt es einen (nicht sonderlich eleganten) Weg, wie man wieder nach Version 3.1.3 kommt (Achtung, das ganze beinhaltet einen Jailbreak – ist aber dafür sehr schnell erledigt):
    1. iPhone in den DFU-Mode bringen:
      1. iPhone vom USB trennen
      2. Ausschalten
      3. Homebutton drücken und gedrückt halten
      4. iPhone wieder per USB verbinden (HomeButton immer noch gedrückt).
      5. wenn das iTunes Symbol erscheint, hat’s geklappt.
    2. Nun in iTunes mit alt gedrückter “Alt”-Taste auf Wiederherstellen klicken
    3. die 3.1.3er Firmware auswählen und das Updaten machen lassen
    4. irgendwann bricht er mit einem Fehler ab.
    5. Nun reicht es, wenn du BlackRain ausführst (gibt’s unter blackra1n.com) – dann wird das Display schwarz und ich glaube er rebootet – fertisch
    Erfolgserlebnisse oder Alternativvorschläge bitte in den Kommentar!
  • 3 Comments
  • Filed under: Allgemein
  • Mein neues Projekt: StockGrowler

    Heute möchte ich kurz auf mein neues Software-Projekt hinweisen.
    Es nennt sich StockGrowler und macht folgendes:
    • Laden von Aktienkursen aus dem Internet
    • Ausgabe der Daten per Growl
    Klingt simpel, ist es auch.
    Ich würd mich sehr freuen, ein bisschen Feedback zu der App zu erhalten. Sie ist noch in einer frühen Beta-Phase und wird von mir als Hobby nebenher entwickelt. Entsprechend bleibt sie auch definitiv kostenlos.
    Hier noch der Link: StockGrowler.app
  • 0 Comments
  • Filed under: StockGrowler
  • Time Machine

    Für alle, die keinen Mac haben oder Time Machine nicht kennen, hier eine kurze Erklärung:

    Time Machine ist eine vollautomatische BackUp-Lösung, welche jedem Mac beiliegt. Man schließt eine externe Festplatte oder eine Time Capsule (Apples überteuerte NAS-Lösung) an und den Rest erledigt Time Machine.
    Stündlich wird ein Backup durchgeführt und jeweils die Änderungen gespeichert. Mit dem kunterbunten User-Interface lässt sich nun der Status des Systems oder einer einzelnen Datei zurücksetzen. Time Machine profitiert hier vor allem dadurch, das der Benutzer nichts tun muss, um seine Daten zu sichern.

    Leider erzeugt TimeMachine einen gigantischen Overhead, da jede veränderte Datei vollständig neu geschrieben wird. Somit wird das genutzte Volume viel schneller voll, als es nötig wäre und Time Machine löscht dann automatisch alte Backups.

    Wenn wir nun an ZFS zurückdenken wäre es doch nur zu logisch, Time Machine auf ZFS – Basis zu entwickeln. Leider jedoch hat Apple alle Bestrebungen zur Implementierung von ZFS in MacOS verworfen, so das wir selber Hand anlegen müssen.

    ZFS Deduplication

    Voraussichtlich im März wird mit OpenSolaris 2010.3 das ZFS-Feature Deduplication eingeführt. Es vergleicht zu schreibende  Blöcke per SHA-256 Hash und lässt diese aus, falls sie schon existieren. Dieses lässt sich bei aktiviertem Deduplication leicht veranschaulichen, wenn man einen kompletten Ordner per CP dupliziert. Das ganze geht in Sekunden von statten und der geschriebene Overhead ist nahezu Null.

    Wer nun kurz nachdenkt, dem fällt ein, das nicht nur zwischen den einzelnen Backups große Datenmengen korrelieren, sonder auf jedem Mac unzählige Files vielfach vorkommen. Man muss sich nur anschauen, wie viele Anwendungen gegen das Growl-Framework linken. Dies wird mit Deduplication im Optimalfall zu einem heruntergebrochen.
    Um diesen Vorteil nun im Zusammenhang mit Time Machine zu nutzen, könnte man meinen, reicht es aus, das zuvor angelegte AFP-Share oder SMB-Share zu nehmen und auf dem darunterliegenden Volum Dedpulication zu aktivieren.
    Leider macht uns hier das FileSystem einen Strich durch die Rechnung: Time Machine benötigt zwingend ein HFS+ Formatiertes Volume.
    Auf Netzlaufwerken wird dies durch ein mitwachsendes Sparse Bundle erreicht, welche einen großen Nachteil haben: Zwei unterschiedliche Images mit exakt gleichem Inhalt haben nach Außen hin vollkommen Unterschiedliche Block-Strukturen. Überschneidungen sind rein zufällig und nicht aufgrund der darin Gespeicherten Dateien zu erklären.

    iSCSI

    Aber auch hierfür gibt es eine Lösung: iSCSI. Mit iSCSI wird dem lokalen Rechner “vorgegaukelt” in ihm sei eine Festplatte per SCSI angeschlossen. Diese lässt sich wunderbar per HFS+ formatieren und für Time Machine verwenden.
    Da die aktuellen SVN-Builds von OpenSolaris alles andere als stabil laufen, und ich nicht sagen kann, ob sich im Bezug auf iSCSI etwas ändern wird, werde ich zu gegebener Zeit eine Schritt-für-Schritt Anleitung online stellen, welche genau erklärt, wie man iSCSI und TimeMachine nutzt.
  • 2 Comments
  • Filed under: Fileserver
  • Flash unter OS X – 10.1 Beta 2

    Ein sehr aktuelles (google) und sehr leidiges Thema ist die Verwendung von Flash unter OS X. Nach wie vor schafft es das Flash-Plugin, die Lüfter auf hochtouren zu bringen – was sonst nur beim Video-Encoding möglich ist.

    Auch bei Adobe ist dies angekommen und so hat man vorab im Dezember eine Beta-Version des kommenden Flash PlugIn 10.1 veröffentlicht (Download)

    Ich habe heute auch den Schritt gewagt, und diese Version installiert. Da ich natürlich auch sehen wollte, ob das ganze etwas bringt, startete ich die Google-Suche nach einem Flash-Benchmark.
    Leider ist die Auswahl sehr beschränkt; einen recht lustigen Kandidaten habe ich aber dann doch gefunden:

    Die Krabbe (Link) bewegt kleine Krabben über den Bildschirm, und das so lange, bis die Framerate unter 25 fällt.

    Die Ergebnisse sind schon recht ansprechend:
    • Alte Version: 191 Krabben
    • 10.1 Beta 2: 231 Krabben
    Ich werde die Entwicklung im Auge behalten.
  • 0 Comments
  • Filed under: Allgemein
  • Firefly Media Server und OpenSolaris

    Firefly Media Server

    Der Firefly Media Server – auch mt-daapd genannt, was für Multi-Threaded Digital Audio Access Protocol Daemon steht, ist ein kleines Tool, welches u.a. iTunes, aber auch viele andere Musik-Player mit Content versorgt.
    Somit kann man auf einem Server – in meinem Falle mein Fileserver – alle Musik der Familie sammeln und sehr einfach zugänglich machen.

    Die Installation unter OpenSolaris

    Die Installation hat sich als ziemlich steinig heraus gestellt. Ich musste viele Seiten mit unterschiedlichsten Tutorials lesen, bis ich es endlich geschafft hatte.
    Daher fasse ich hier die notwendigen Schritte zusammen.

    Vorbereitungen

    Bevor man mit irgendwelchen Befehlen um sich wirft, muss das wichtigste installiert werden: GCC.

    Dies lässt sich schnell mit
    # pkg install SUNWgcc
    erledigen.

    Folgende Pakete werden benötigt: sqlite3, gdbm, libid3tag.

    Diese kann jeder auf seine Art installieren – ich wähle der einfacheit halber den Weg über Blastwave.
    Falls Blastwave nicht installiert ist, hier eine kurze Anleitung:
    # pkgadd -d http://blastwave.network.com/csw/pkgutil_`/sbin/uname -p`.pkg
    # /opt/csw/bin/pkgutil --install gnupg textutils
    # /opt/csw/bin/gpg --keyserver pgp.mit.edu --recv-keys A1999E90
    
    Nun kann man die Pakete installieren:
    # /opt/csw/bin/pkgutil -i sqlite3 gdbm lidid3tag
    
    Und im Anschluss den Linker füttern:
    # crle -l /opt/csw/lib -u
    

    Configure, make, make install

    Die aktuelle Nightly von “Firefly Media Server” downloaden und entpacken: http://www.fireflymediaserver.org/
    Hier empfehle ich die SVN-1696. Diese gilt zwar als unstable, läuft aber bei mir sehr gut.

    Ich nutze weder Ogg noch Flac, daher habe ich den mt-daapd entsprechend ohne diese Features gebaut.
    # ./configure LDFLAGS="-L/opt/local/lib -L/opt/csw/lib" CPPFLAGS="-I/opt/local/include -I/opt/csw/include" --prefix=/opt/csw --enable-sqlite3 --with-id3tag=/opt/csw
    # make
    # make install 
    
    # cp contrib/mt-daapd.conf /opt/csw/etc/
    
    

    Rechte

    Im Anschluss müssen die Rechte noch angepasst werden:
      
    # chown -R nobody:nobody /opt/csw/share/mt-daapd 
    # chown nobody:nobody /opt/csw/bin/mt-daapd-ssc.sh 
    # chown nobody:nobody /opt/csw/etc/mt-daapd.conf
    

    Konfiguration

    Die Konfigurationsdatei liegt in /opt/csw/etc/mt-daapd.conf. Diese ist sehr gut dokumentiert.

    Wichtig ist jedoch:

    db_type = sqlite3
    logfile = /var/log/mt-daapd.log

    Das MP3-Verzeichnis kann hier oder später in der GUI angegeben werden. Wichtig ist jedoch, das “nobody” Leserechte für den Folder hat.

    Starten beim Systemstart

    Zu guter letzt benötigen wir noch ein Start-Skript. Unter Solaris nutzt man hierzu nicht init.d sondern die SMF (Solaris Management Facilities). Dies hat den Vorteil, dass der Dienst nicht bloß gestartet sondern auch überwacht wird.

    Zunächst wechseln wir in den Ordner
      
    # cd /var/svc/manifest/network
    
    und legen dort die datei mt-daapd.xml an
      
    # pfexec nano mt-daapd.xml
    
    Dieser verpassen wir folgenden Inhalt: Das ganze validieren
      
    # pfexec svccfg validate mt-daapd.xml
    
    und wenn alles in Ordnung war importieren
      
    # pfexec svccfg import mt-daapd.xml
    
    Wir prüfen, ob der Import erfolgreich war
      
    # svcs mt-daapd
    
    und starten den Service
      
    # pfexec svcadm enable mt-daapd
    
    Wenn alles gut gegangen ist, erhalten wir den Status “online”
      
    # svcs mt-daapd
    
    und können per http://localhost:3689 auf das Webinterface zugreifen. Username sowie Passwort lauten “mt-daapd” – empfiehlt sich, zu ändern.

    Wenn etwas nicht klar ist -> Kommentarfunktion nutzen!
  • 1 Comment
  • Filed under: Allgemein
  • Blogverzeichnis - Blog Verzeichnis bloggerei.de