Archiv des Autors: jdinse

Erfahrung mit Aubagio

Seit gestern nehme ich Aubagio als Basistherapie meiner MS. Wegen monatelanger Übelkeit wurde mir von meiner Neurologin empfohlen, von Rebif auf Aubagio umzusteigen. Rebif habe ich fast 12 Jahre lang genommen und hatte all die Jahre häufig Probleme mit fieberartigen Symptomen nach der Einnahme. Die ständig leicht vorhande Übelkeit ist erst vor knapp 2 Jahren dazugekommen und mit der Zeit stärker geworden. Ob Rebif der eigentliche Grund für die Übelkeit war, lässt sich nicht sagen und ist auch nicht anzunehmen, wohl aber, dass Rebif die Übelkeit noch verschlimmert hat.

  • Tag 1 (11. August): Soweit alles ok. Leichtes Gefühl von Schüttelfrost, könnte aber auch daran liegen, dass es für August zu kühl für diese Jahreszeit ist.
  • Tag 2: Morgens und Mittags gut. Nachmittags und Abends Übelkeit. Dies hatte ich aber schon öfters vor Aubagio.
  • Tag 3: Gut. Leichte Müdigkeit, vielleicht aber auch wegen gestern oder dem unbeständigem Wetter.
  • Tag 4-11: Überwiegend gut. Gelegentlich aber trotzdem leichte Übelkeit, punktuell mit einigen Übelkeitsattacken bzw. Panikattacken (wer möchte sich schon gerne mitten im überfüllten Zug übergeben. Da kann man schon mal Panik kriegen). Das hatte ich aber wie gesagt auch schon vor Aubagio.
  • Tag 12 (22. August): Leichte Übelkeit. Nachmittags leichtes Gefühl von Schüttelfrost. Ich dachte, ich werde krank, aber ist nicht passiert.

pem-Zertifikate für iOS XDK Cordova App erstellen

Wir haben unsere iOS-App mit XDK gebaut. Dies stellt für den Build-Prozess bereits Anleitungen zur Verfügung, zu der uns folgende Hinweise sicherlich einige Stunden Arbeit erstpart hätten:

  • Im Apple Member-Center sollte zunächst eine App-ID für die App erstellt werden, z.B. com.meine-firma.meine-app. Diese App-ID muss so auch in XDK’s Build-Settings der App eingestellt werden.
  • Dann muss die .csr-Datei (Eine Zertifikatsanforderung) mit XDK erstellt werden. Diese muss dann in Apple’s Member-Center beim Erstellen des Zertifikates (Development oder Production) eingefügt werden. Man kann eine solche .csr-Datei zwar auch anders erstellen, z.B. wie im Member-Center beschrieben mit Apple’s Schlüsselbundverwaltung, das damit erstelle Zertifikat kann man aber nicht im XDK verwenden!
  • Das im Member-Center erzeugte .cer-Zertifikat kann man in MacOS ganz einfach mit der Schlüsselbundverwaltung öffnen und als .p12 exportieren. Dies ist bereits ein Format, dass man in XDK einfügen kann.
    Falls nicht im .p12-Format exportiert werden kann, dann in der Schlüsselbundverwaltung im Tab „Meine Zertifikate“ schauen (siehe https://stackoverflow.com/questions/15662377/unable-to-export-apple-production-push-ssl-certificate-in-p12-format )

    !!Achtung!! Das Ältere ios-Distribution-Zertifikat oder Apple-Distribution Zertifikat muss aus dem Schlüsselbund entfernt werden. Sonst die die App mit dem alten Zerfikat kompiliert und ein Fehler erscheint:
    „Provisioning profile doesn’t match the signing certificate.“

  • Falls z.B. noch ein APN-Zertifikat für Push-Benachrichtigungen benötigt wird, dass im .pem-Format vorliegen muss, kann dies im Teminal konvertiert werden mitopenssl pkcs12 -in aps_production.p12 -out aps_production.pem -nodes -clcerts!!Achtung!! OpenSSL 1.x verwenden! Das neue OpenSSL 3.x unterstützt die veraltete Verschlüsselungstechnologie nicht.
  • Es müssen für den Build-Prozess außerdem noch mindestens eine Provisioning-Datei angegeben werden (adhoc, wenn man sein erzeugtes .ipa-Build ohne den Appstore direkt ausprobieren möchte, oder production). Diese wird im Memenber-Center erzeugt und muss in den www-Order des XDK-Projektes eingefügt werden. Anschließend muss dies in XDK in den Build-Settings der App ausgewählt werden.

Und noch ein Tipp zu den Build-Settings am Rande: Wenn die App per Ajax auch Verbindung zum Internet herstellen dürfen soll, müssen auch Access Lists angegeben werden. Das einfachste ist für Internal sowie für External jeweils ein * anzugeben, um alles zuzulassen.

TYPO3 – Form wird nicht angezeigt, nur die Konfiguration

Wer in TYPO3 eine Mail-Form erstellt und sich sich wundert, warum statt der Form nur die Konfiguration angezeigt wird, hat entweder vergessen, das TypoScript Template „Default TS (form)“ im eigenen Seitentemplate zu inkludieren, oder läd es zu früh. Es muss auf jeden Fall nach „CSS Styled Content“ geladen werden.

TYPO3 6.2 – Eigener Neuer Link im RTE zu Extbase Objekten

Dies lässt sich wunderbar mit den Extensions linkhandler und linkhandler_conf umsetzen. Letzteres scheint zwar optional zu sein, musste bei mir aber mindestens installiert, wenn auch nicht aktiviert werden, damit linkhandler in TYPO3 6.2 überhaupt funktioniert. Nach dem Installieren nicht vergessen, die Statischen Templates der Extensions zum eigenen Template hinzuzufügen. Anschließend kann man sich an der Doku von linkhandler orientieren. Im Wesentlichen ist noch folgendes zu tun.

Im TsConfig der Root-Seite:

RTE.default.tx_linkhandler {
  my_extension { 
    label =My Model
    listTables =tx_myextension_domain_model_mymodel
    onlyPids = 
    #onlyPids.recursive = 1
    #previewPageId =
    #overwriteHandler = footnote
  }
mod.tx_linkhandler {
  my_extension {    
    label =My Model
    listTables =tx_myextension_domain_model_mymodel
    onlyPids = 
    #onlyPids.recursive = 1
    #previewPageId =
    #overwriteHandler = footnote
  } 
}

In constants.txtdes Templates:

plugin.tx_myextension {
  ...

  linkhandler {
    # cat=plugin.tx_myextension//a; type=string; label=PID of Details View, used for RTE Link Generator
    singlePid =
  }
}

Im setup.txtdes Templates:

plugin.tx_linkhandler {
  tx_myextension_domain_model_mymodel {
      # force link generation also when the tt_news record are hidden or deleted
    forceLink = 0

      # typolink settings
    parameter        = {$plugin.tx_myextension.linkhandler.singlePid}
    additionalParams = &tx_myextension_myplugin%5Bmymodel%5D={field:uid}&tx_myextension_myplugin%5Baction%5D=show&tx_myextension_myplugin%5Bcontroller%5D=Mymodel
    additionalParams.insertData = 1   
    useCacheHash = 1
  }
}

myextension, myplugin und mymodel sind natürlich zu ersetzen. Im Konstant-Editor sollte noch die PID der Einzelansicht (Seite mit Plugin mit erlaubter Show-Action) eingesetzt werden. Sinnvoll ist auch, im TSconfig bei onlyPids, die SysFolders oder Seiten einzutragen in denen man die Objekte seiner Extension speichert.

macports und nokogiri

Als Macports Benutzer bin ich regemäßig gefrustet, wenn ich nokogiri updaten möchte und es wegen libxml2 kracht. Diese Lösung hat schließlich funktioniert:

<span class="pln">>sudo port install libiconv libxslt libxml2
>gem install nokogiri </span><span class="pun">--</span> <span class="pun">--</span><span class="pln">use</span><span class="pun">-</span><span class="pln">system</span><span class="pun">-</span><span class="pln">libraries </span><span class="pun">--</span><span class="pln">with</span><span class="pun">-</span><span class="pln">iconv</span><span class="pun">-</span><span class="pln">dir</span><span class="pun">=</span><span class="str">/opt/</span><span class="pln">local </span><span class="pun">--</span><span class="pln">with</span><span class="pun">-</span><span class="pln">xml2</span><span class="pun">-</span><span class="pln">dir</span><span class="pun">=</span><span class="str">/opt/</span><span class="pln">local </span><span class="pun">--</span><span class="pln">with</span><span class="pun">-</span><span class="pln">xslt</span><span class="pun">-</span><span class="pln">dir</span><span class="pun">=</span><span class="str">/opt/</span><span class="pln">local</span>

floor() und float-Variablen: Gaanz evil!!!

Erkenntnis zu PHP des heutigen Tages:
* floor(255) ergibt nicht etwa einen Integer, sondern einen Float-Wert. WTF!?
* floor() kann gründlich in die Hose gehen. Unter Umständen arbeiten wir hier mit einem Float-Wert, bei dem durch die Berechnungen eine Ungenauigkeit entstanden ist, z.b. $test = 7.99999999999999544 anstatt 8. Damit erhalten wir mit floor($test) als Ergebnis 7 anstatt die erwarteten 8. Scheinbar bleibt als einzige Lösung, den Float-Wert vorher mit round() zu runden. bevor floor() ausgeführt wird.