Workaround für Kontakte-Sync Egroupware<->Synthesis SyncML-Client

Update: Mit Version 2.3.2 des SyncML-Clients (erschienen am 10.05.2012) hat Synthesis den Hersteller-String wieder zurück geändert auf “Synthesis AG”. Damit ist untenstehende Anpassung im EGroupware-Quellcode nicht mehr notwendig. Siehe auch Hinweis in den Synthesis-Release-Notes.

Wie sich gerade rausgestellt hat, funktioniert die Synchronisation der Adressen zwischen Egroupware (hier in der Version 1.8004) und dem Synthesis SyncML-Client unter Android (hier 2.2.21) nicht mehr zuverlässig.

Als Symptome waren zunächst eine Menge Dubletten (teilweise über 50) für ein und denselben Kontakt zu finden, sowohl auf dem Mobilgerät als auch auf dem Server. Wobei jeweils nur ein Kontakteintrag die vollständige Anschrift auswies. Das Problem ließ sich durch manuelles Löschen der doppelten Einträge auf Server-Seite und Neu-Aufsetzen des Clients (Option “Gerät neu Laden im Synthesis-Client) lösen.

Anschließend stellte sich aber heraus, daß auch bei den neu synchronisierten Einträgen die Adressangeben fehlen.

Continue reading “Workaround für Kontakte-Sync Egroupware<->Synthesis SyncML-Client”

floats mal wieder

Die Floating-Point-Darstellung ist immer mal wieder für eine Überraschung gut. So lässt sich explizit eine Null mit Vorzeichen darstellen. Der numerische Vergleich mit einer Null ohne Vorzeichen liefert den Wahrheitswert zurück, während eine Umwandlung in einen C-String vorzeichenbehaftet ist.

Continue reading “floats mal wieder”

Rätsellösung in Code

Fürs Archiv:

#
# Email am 2010-02-17:
# "Mein Alter ist diesmal eine Primzahl, deren Quersumme um genau
# eins größer ist als der Tag meines Geburtsdatums."
#

def isprime(n):
   for x in range(2, int(n**0.5)+1):
      if n % x == 0:
         return False
   return True

for p in range(1,100):
    if isprime(p):
       a = int(p/10)
       b = p % 10
       # Tag auf sinnvolle Werte einschraenken
       if (9<=(a+b)) and ((a+b)<=15):
          print p