Damian Brunold

2015-01-31 13:34 OSX, ObjC, Programmieren

Es hat gedauert, aber im dritten Anlauf hat es geklappt: seit ein paar Tagen ist meine Applikation KartenMatch im Mac App Store verfügbar.

2015-01-15 10:26 OSX, ObjC, Programmieren

Meine erste Mac Applikation KartenMatch wurde im App Store rejected. Der Grund ist einfach: ich habe ein Entitlement zuviel gehabt und eins zuwenig. Das habe ich nun korrigiert und eine neue Version eingereicht. Mal schauen, ob es jetzt klappt.

2015-01-07 12:28 OSX, ObjC, Programmieren

In den letzten Tagen habe ich eine erste echte Mac OS X Applikation geschrieben. Ich bin noch nicht ganz fertig damit. Sobald sie soweit ist, werde ich sie für den App Store anmelden.

Die Applikation KartenMatch dient dazu, ein bestimmtes Kartenspiel zu designen. Diese Kartenspiel (ich weiss leider nicht, wie es heisst), besteht aus 57 Karten. Auf jeder Karte gibt es acht Symbole. Insgesamt gibt es 57 Symbole. Die Symbole sind nun derart auf die Karten verteilt, dass folgende erstaunliche Eigenschaft gilt:

Jedes beliebige Paar Karten aus dem Stapel hat genau ein gemeinsames Symbol.

Ich wurde von einer Bekannten angefragt, was der mathematische Hintergrund für dieses Spiel ist, denn sie wollte eine eigene Version mit eigenen Symbolen machen. Ich dachte zuerst darüber nach und kam zu keinem guten Ergebnis. Dann googelte ich einmal und - bingo - fand eine Seite, die nicht nur den mathematischen Hintergrund erklärte, sondern auch ein Programm enthielt, dass Lösungen errechnet.

Meine Applikation verwendet nun die von diesem Programm errechneten Lösungen um aus einem Set von Symbolen ein Kartenspiel zu designen. Dieses kann dann ausgedruckt oder als PDF gespeichert werden. Nach dem Druck werden die Karten ausgeschnitten und schon hat man sein eigenes Spiel.

Eigentlich eine einfache Sache, aber ich musste doch eine Menge Dinge lernen, Drag und Drop von Bildern aus dem Finder, Layout und Druck der Karten, und so weiter. War spannend und hat Spass gemacht.

2015-01-07 12:14 Musik

Um Weihnachten herum haben wir ein bisschen Hausmusik gemacht. Da ich als Cellist vor allem den Bass-Schlüssel, aber weniger gut den Violin-Schlüssel lesen kann, habe ich die Lieder versucht in den Bass-Schlüssel umzuschreiben.

Zuerst tat ich das von Hand auf Notenpapier. Dann entsann ich mich, dass ich vor ein paar Jahren ein bisschen mit LilyPond gespielt habe. LilyPond ist ein Notensatzprogramm, das - analog zu TeX - auf Textbasis funktioniert.

Ich habe mir also LilyPond auf dem Mac installiert und angefangen die Lieder umzuschreiben. Und ich stellte fest, dass LilyPond einfach genial ist. Ich konnte sehr rasch das Gewünschte und noch viel mehr erreichen. Jetzt habe ich einen Ordner mit etwa zwanzig Liedern, mit drei bis vier Stimmen, mit Text, mit Zusatzstrophen, mit Stimmen im Bass, etc. etc.

2014-11-21 20:22 JavaScript, Programmieren, Web

Die Pomodoro Technik ist eine clevere Idee: man arbeitet strikt in fixen Intervallen. Typischerweise ist ein Intervall 25 Minuten lang. Während man arbeitet lässt man sich von nichts und niemandem ablenken. Nach Ablauf der Zeit gibt es eine Pause. Dann geht es weiter. Die Idee ist es, dass man produktiver ist, wenn man überschaubare Zeiträume für die Arbeit zur Verfügung hat.

Ich habe das selber eine Weile lang ausprobiert und finde es eine ganz gute Sache. Damit man das gut machen kann braucht man einen Timer. Der Name Pomodoro kommt von den roten tomatenförmigen Küchenweckern, die sich gut dafür eignen. Wer es etwas weniger konkret und analog möchte, kann unter folgendem Link einen elektronischen Timer benutzen:

dabsoft.ch/pomodoro

Einfach den roten Balken soweit nach oben ziehen wie das Zeitintervall sein soll und Start drücken. Nach Ablauf der Zeit ertönt ein Klang.

Die Applikation ist ganz einfach mit ein bisschen HTML und JavaScript realisiert. Es gibt ein git-Repository:

dabsoft.ch/gitweb/?p=pomodoro.git;a=summary

2014-11-20 19:41 OSX, ObjC, Programmieren

Ich habe eine spannende, neue Applikation für OS X entdeckt: PaintCode. Damit kann man Vektorgrafiken zeichnen und erhält dann den entsprechenden Objective-C Code, der die Grafik erstellt. Damit kann man auflösungsunabhängige und sogar dynamische Bilder und Icons in Programme integrieren.

Ich kenne das Programm erst seit kurzem und kenne sicher noch nicht alle Feinheiten. Aber was ich bisher gesehen habe überzeugt mich.

Der erste Einsatz ist das Zeichnen der Motive für meine geplante Memory-App.

Dieses Bild

wird von diesem (abgekürzten) Code erzeugt:

//// Color Declarations
UIColor* brownFill = [UIColor colorWithRed: 0.388 green: 0.224 
  blue: 0.224 alpha: 1];
UIColor* greenFill = [UIColor colorWithRed: 0.256 green: 0.75 
  blue: 0.309 alpha: 1];
CGFloat greenFillHSBA[4];
[greenFill getHue: &greenFillHSBA[0] saturation: &greenFillHSBA[1] 
    brightness: &greenFillHSBA[2] alpha: &greenFillHSBA[3]];

...

//// Leaf
{
    //// Bezier 2 Drawing
    UIBezierPath* bezier2Path = UIBezierPath.bezierPath;
    [bezier2Path moveToPoint: CGPointMake(64.5, 17.5)];
    [bezier2Path addLineToPoint: CGPointMake(53.5, 18.5)];
    [bezier2Path addLineToPoint: CGPointMake(44.5, 18.5)];
    [bezier2Path addLineToPoint: CGPointMake(36.5, 21.5)];
...
    [bezier2Path addLineToPoint: CGPointMake(66.5, 18.5)];
    [bezier2Path addLineToPoint: CGPointMake(64.5, 17.5)];
    [bezier2Path closePath];
    [greenFill setFill];
    [bezier2Path fill];
    [greenBorder setStroke];
    bezier2Path.lineWidth = 1;
    [bezier2Path stroke];

    //// Bezier 3 Drawing
    UIBezierPath* bezier3Path = UIBezierPath.bezierPath;
    [bezier3Path moveToPoint: CGPointMake(28.5, 38.5)];
    [bezier3Path addLineToPoint: CGPointMake(38.5, 31.5)];
    [bezier3Path addLineToPoint: CGPointMake(49.5, 25.5)];
    [bezier3Path addLineToPoint: CGPointMake(58.5, 21.5)];
    [greenFill setFill];
    [bezier3Path fill];
    [greenBorder setStroke];
    bezier3Path.lineWidth = 1;
    [bezier3Path stroke];
}

//// Cherry1 Drawing
...

//// Cherry2 Drawing
...

//// Branch Drawing
...

Ältere Einträge