LinkedList: Codable protocol and references

Maybe you have read my series of posts about LinkedLists. It was great fun for me to put these things together, but recently, I stumbled over a problem with serialisation, esp. the Codable protocol and references to objects. In Swift 5 there are two Encoder/Decoder pairs available:

  • PropertyListEncoder/PropertyListDecoder
  • JSONEncoder/JSONDecoder

It turns out that these encoders are not really suitable for archiving object graphs because they expand all references to objects, i.e. put the objects instead of the references in the archive. If you have a simple tree of objects and you do not care about doublets that may be fine but as soon as you have loops in your object graph you are in trouble. Encoding such a graph with these two encoders lead to an endless loop. This may happen quite frequently; just think about delegation where you typically have references of the delegate and its master against each other.

Weiterlesen

Animate NSView’s scrollToVisible

When I ported my game Empire for macOS (see: https://apps.apple.com/de/app/empire/id1287139467?mt=12) to iOS (see: https://apps.apple.com/de/app/empire-mobile/id1465452819) I noticed a much nicer scrolling behaviour there. There are a lot of smaller and more fundamental differences in programming for these two operating systems, especially between AppKit and UIKit and animation is one of them.

Weiterlesen

E-Mails an „alle“

Der Missbrauch des Mediums „E-Mail“ ist weit verbreitet und sicher auch schon oft thematisiert worden. Doch ein Vorfall aus jüngster Zeit in meinem Umfeld bringt mich dazu, auch ein paar Gedanken zur „E-Mail-Etiquette“ zu formulieren.

Man kann prima E-Mails an „alle“ schicken, um Informationen zu verteilen, die für den Großteil der Empfänger auch interessant sind. Mit „alle“ meine ich einen großen Verteiler, z.B. alle Mitglieder eines Projektes, alle Mitarbeiter einer Abteilung oder auch einer ganzen Firma. Das Antworten an „alle“ ist oft beschrieben worden und kann bei genügend großem Verteiler und hinreichend kleiner Disziplin ein Mail-System in kürzester Zeit lahmlegen.

Weiterlesen

Ex- und Import mehrerer Tabellen

Dieser Post bezieht sich wieder auf ein FileMaker-Problem, das ich letztens hatte. Wie kann man mehrere Tabellen einer FileMaker-Anwendung in eine Datei exportieren und in eine andere Instanz derselben Datenbank wieder importieren? Wir haben nicht alle die Lust oder das Kleingeld, eine Server-Anwendung zu entwickeln und zu betreiben und müssen uns gelegentlich mit dem Abgleich mehrerer Instanzen „zu Fuß“ begnügen. Das kann auch prima funktionieren, wenn stets klar geregelt ist (und das auch alle Beteiligten verinnerlicht haben), wer jeweils der „Master“ ist, wer jeweils die Datenhoheit besitzt.

Nun kann man mit FileMaker prima einzelne Tabellen oder Auszüge davon exportieren und auch wieder importieren, aber das bezieht stets auf nur eine Tabelle. Insbesondere der Export erzeugt dann für jede Tabelle eine eigene Datei. Das ist hässlich. Wie kann nun der Export von mehreren Tabellen in eine einzige Datei realisiert werden? Weiterlesen

Editierbare IDs

Gelegentlich benötigt man bei der Entwicklung einer Datenbank eindeutige IDs, die aber dennoch editierbar bleiben müssen. So kann es sinnvoll sein, bei der Erzeugung eines neuen Datensatzes sich vom System eine neue eindeutige ID vorschlagen zu lassen, diese aber aufgrund von außerhalb des Systems liegenden Randbedingungen auch ändern zu können (z.B. als Fremdschlüssel). Das ist eine gefährliche Sache und bedarf einiger Umsicht. Dieser Artikel beschäftigt sich mit dieser Umsicht und ein paar Kniffen bei der Entwicklung eines FileMaker-Systems.

Weiterlesen