Hocus Focus

Manche Anwender haben auf ihrem Mac immer mehr Fenster auf als ihnen lieb ist. Mit der kostenlosen App Hocus Focus können solche Anwender etwas Ordnung in das Chaos bringen. Die App befindet sich nach dem Start in der Status-Leiste von Mac OS X und sorgt dafür das Apps, welche einige Sekunden nicht benutzt werden, ausgeblendet werden.

Der Einstellungsdialog von Hocus Focus

Der Einstellungsdialog von Hocus Focus

Daneben gibt es noch einen sogenannten Focus Mode, welche alle inaktiven Apps sofort ausblendet, so das man nur die aktive App auf dem Bildschirm sieht. Bezogen werden kann Hocus Focus über die offizielle Webseite welche unter hocusfoc.us zu finden ist.

PDF-Dateien unter Mac OS X verkleinern

Unter Mac OS X lässt sich vieles mit den vorhandenen Standardanwendungen lösen, wo man z.B. bei Windows zusätzliche Tools benötigt. So auch bei der Aufgabe PDF-Dateien in ihrer Dateigröße zu optimieren.

Die Optionen im Speichern-Dialog

Die Optionen im Speichern-Dialog

Dazu muss die entsprechende PDF in der Vorschau geöffnet werden. Anschließend wird die Datei über Ablage -> Exportieren exportiert. Bevor dort der Sichern-Button betätigt wird, muss der Quartz-Filter Reduce File Size aktiviert werden. Damit landet die PDF anschließend in reduzierter Dateigröße auf der Festplatte.

SoundHelix

Musik per Algorithmus zu erzeugen klingt im ersten Moment abwegig, allerdings gibt es einige Personen und Projekte welche sich genau damit beschäftigen. Eines dieser Projekte ist dabei SoundHelix. Bei dieser in Java geschriebenen Anwendung handelt es sich um ein System mit welchem Musik algorithmisch erzeugt werden kann. Die erzeugte Musikstücke klingen dabei durchaus angenehm. Konfiguriert wird das System und deren Musik über eine XML-Datei.

soundhelix.com

soundhelix.com

Lizenziert ist SoundHelix unter der GPL und damit freie Software. Der Quelltext kann auf SourceForge bezogen werden. Zu finden ist das Projekt auf der offiziellen Seite unter soundhelix.com. Es ist dabei unter Linux, Mac OS X und Windows lauffähig.

NSOutlineView zeigt nur „Table View Cell“ an

Gestern versuchte ich ein NSOutlineView mit einer Datenstruktur zu befüllen. Nachdem dies gelungen war, gab es allerdings ein Problem. Das NSOutlineView zeigte für jeden Eintrag immer nur Table View Cell als Beschriftung an.

Der Objektinspektor unter Xcode

Der Objektinspektor unter Xcode

Die Lösung für das Problem ist dabei relativ simpel, wenn man weiß an welcher Stelle man suchen muss. So muss der Content Mode des NSOutlineView von View based auf Cell based umgestellt werden. Anschließend werden die Einträge, welche durch die von NSOutlineViewDataSource abgeleitet Klasse bereitgestellt werden, korrekt dargestellt.

NSSpeechSynthesizer und NSSpeechRecognizer unter Mono nutzen

Unter Mac OS X gibt es in der API die Klassen NSSpeechSynthesizer und NSSpeechRecognizer. Während die eine Klasse dazu dient Text auszugeben, kann die andere Klasse dazu genutzt werden Sprache zu erkennen. Der NSSpeechSynthesizer kann unter Mono einfach genutzt werden:

var synthesizer=new NSSpeechSynthesizer();
synthesizer.StartSpeakingString("Hallo Welt.");

Schwieriger wird das ganze bei der Klasse NSSpeechRecognizer. Mit Hilfe dieser Klasse ist es möglich auf bestimmte Kommandos zu reagieren. Im ersten Moment muss die Klasse angelegt werden und einige Optionen gesetzt werden:

var recognizer=new NSSpeechRecognizer();

string[] cmds=new string[] {"Computer"};

recognizer.Commands=cmds;
recognizer.BlocksOtherRecognizers=false;
recognizer.DisplayedCommandsTitle="RecognizerTest";
recognizer.Delegate=new RecognizerDelegate();

recognizer.ListensInForegroundOnly=false;
recognizer.StartListening();

Wenn nun das Kommando Computer erkannt wird, wird die Instanz vom RecognizerDelegate angerufen. Das Delegate sieht dabei wie folgt aus:

public class RecognizerDelegate : NSSpeechRecognizerDelegate
{
    public override void DidRecognizeCommand(NSSpeechRecognizer sender, string command)
    {
        //Do something
    }
}

Im Delegate selbst gibt es die Methode DidRecognizeCommand welche als Parameter das erkannte Kommando enthält.