Seit der Emacs-Version 24 enthält Emacs ELAP. Das ist ein Emacs-interner Paketmanager, der auf externe Erweiterungsarchive zugreifen kann. Das vermutlich am besten gewartete derartige Archiv hat den merkwürdigen Namen MELPA »Milkypostman’s Emacs Lisp Package Archive«. Es enthält momentan über 2.500 Pakete. Wie Sie es nutzen, verrät dieser Minibeitrag.
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.
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.
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.)
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?«.
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.
Kurz bevor mein Buch zu Swift 1.2 in Druck ging, stellte Apple Swift 2.0 vor. Jetzt bin ich also dabei, das ganze Manuskript nochmals zu überarbeiten, damit es im September als echtes Swift-2.0-Buch erscheinen kann. Im Zuge dieser Überarbeitung werden ich gelegentlich die wichtigsten Neuerungen in Blog-Beiträgen präsentieren. Heute beginne ich mit Zeichenketten.
Seit vorgestern steht die Kernel-Version 4.0 als rpi-update für Raspbian zur Verfügung. Damit ist die Umstellung von Raspbian auf den Kernel 4.0 ein Kinderspiel.
Zur Abwechslung einmal nahezu pünktlich ist Fedora 22 fertig geworden — und präsentiert Linux von seiner modernsten Seite. Kernel 4.0, neuer Paketmanager dnf, neuer Grafik-Server Wayland beim Login etc.
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.
Diese Website verwendet Cookies nur in minimalem Ausmaß. Es gibt weder Werbung noch Analytic-Funktionen.
Funktional
Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt.Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.