Fedora 22 / Gnome 3.16 im HiDPI-Modus (Retina)

Das Retina-Zeitalter ist nun auch auf meinem Linux-Desktop-Rechner angekommen. Das Setup: ein ca. 4 Jahre alter Desktop-PC mit Intel-i5-CPU und -Grafik, DisplayPort-Ausgang (1.1), Fedora 22 mit Gnome 3.16 sowie ein ASUS-4k-Monitor, der über ein DisplayPort-Kabel verbunden ist. Ein paar Hürden waren aber zu überwinden, bis alles funktionierte.

Fedora 22 / Gnome 3.16 im HiDPI-Modus (Retina) weiterlesen

openSUSE btrfs-Subvolumes inkompatibel zu Fedora-22-Installationsprogramm

Auf meinem Testrechner tummeln sich normalerweise alle möglichen Distributionen. Gestern wollte ich Fedora 22 neu installieren und bin (anfänglich) gescheitert. Immer wieder stürzte Anaconda mit merkwürdigen Fehlermeldungen ab: DeviceTreeError: could not find parent for subvol. Meine ersten Vermutungen waren: der USB-Stick funktioniert mal wieder nicht, defekte DVD, Fehler im ISO-Image etc. — aber nach dem dritten Versuch wurde mir klar, dass diesmal ein ganz anderes Problem vorlag.

openSUSE btrfs-Subvolumes inkompatibel zu Fedora-22-Installationsprogramm weiterlesen

Versteckte Maus/Trackpad-Kürzel in Xcode

Manche Blog-Beiträge sind primär eine Gedächtnisstütze für den Autor. Dieser Beitrag fällt unter diese Kategorie — ist aber vielleicht auch für andere Xcode-Anwender nützlich. Er fasst zusammen, welche speziellen Maus- bzw. Trackpad-Kürzel es in Xcode gibt. (Wenn etwas fehlt: Bitte verfassen Sie einen Kommentar oder schreiben Sie an kontakt@kofler.info.)

Versteckte Maus/Trackpad-Kürzel in Xcode weiterlesen

try/catch in Swift 2

In der erste Version von Swift fehlte eine try-catch-Konstruktion zum Umgang mit Fehlern. Diese Entscheidung ist vielfach auf Unverständnis gestossen. In Version 2 hat Apple nachgebessert: Es gibt nun eine try/catch-Syntax, die ähnlich wie in anderen Programmiersprachen aussieht, auch wenn sie intern vollkommen anders und insbesondere ohne Exceptions implementiert ist.

Update 12.9.2015: Der Beitrag berücksichtigt jetzt auch »try!« und »try?«.

try/catch in Swift 2 weiterlesen

Swift 2: Reflection

Swift fehlt leider ein allgemein gültiger Ansatz, um die Eigenschaften von Objekten bzw. Typen festzustellen. Andere Programmiersprachen besitzen dafür Reflection-Funktionen, z.B. Objective C, C# oder Java.

Swift ist aber zumindest eingeschränkt zur Selbstreflexion in der Lage, wobei sich die Vorgehensweise in der gestern freigegebenen Beta 4 von Xcode 7 Beta 4 nochmals geändert hat:

  • Die globale Funktion reflect ist verschwunden, ebenso der MirrorType.
  • Dafür gibt es die neue Mirror-Klasse.

Swift 2: Reflection weiterlesen

Optionals in Swift — Fluch oder Segen?

Viele Programmiersprachen unterscheiden zwischen Wert- und Referenztypen. Werttypen sind für elementare Daten gedacht, vor allem Zahlen. Referenztypen enthalten dagegen Verweise auf Objekte. Sie können null sein, also nicht initialisiert, leer.

Swift unterscheidet ebenfalls zwischen Wert- und Referenztypen. Allerdings ist in Swift vieles ein Werttyp, was in anderen Sprachen ein Referenztyp wäre — Arrays, Dictionaries, Sets etc. Die eigentliche Besonderheit ist aber der Umgang mit dem Zustand null, der in Swift nil heißt:

  • »Gewöhnliche Variablen« — egal, ob Wert- oder Referenztypen — müssen vor vor der ersten Verwendung initialisiert werden; in Klassen muss die Initialisierung im Rahmen der Deklaration oder durch die init-Funktion erfolgen.
  • Nur wenn die Variable zusätzlich als »Optional« gekennzeichnet wird, ist auch der Zustand nil erlaubt. Optionals gibt es gleichermaßen für Wert- und Referenztypen.

Optionals in Swift — Fluch oder Segen? weiterlesen