Archiv für den Monat: Juni 2018

Serverumzug von Uberspace zu Uberspace

Hört sich komisch an, ist aber so…
Uberspace stellt eine neue Version ihrer Dienstleistung bereit: Uberspace7

Viele Verbesserungen und zwei davon haben mich überzeugt den Aufwand für einen Umzug in Kauf zu nehmen. Habe viele Domain auf Uberspace6 liegen, welche diese Features nicht benötigen. Darum habe ich noch nur meine private (weiher.io) und geschäftliche (suplanus.de) Domain umgezogen. Hauptgründe:

  • PHP Instanz sofort verfügbar (Performance)
  • Rspamd (Spam Schutz, derzeit wohl der meist gelobte)

Mit dieser Anleitung ging das relativ schnell und einfach.
Dennoch musste ich meine SQL Datenbanken dann nochmal neu verknüpfen und im WordPress paar Links ersetzen, was aber überschaubar war.

Domains hab ich gleich zu Gandi umgezogen. Für mich der beste Platz für Domains.

Mit Mail musste ich mich mehr ärgern, aber da hab ich mir mein eigenes Grab mit Namespaces im U6 geschaufelt. Wusste es nicht besser und darum hab ich Sie auf dem neuen Server dann wieder aufgetrennt in eigene User.

Mein User bekommt mehr Email-Aliase, Familienmitglieder nur jeweils eine (pro Domain, automatisch).
Rspamd hab ich mit dieser Anleitung noch geändert. Alles in die Datei .mailfilter , diese wird per default ausgeführt. Trefferquote scheint wirklich gut zu sein.

Es war schon eine Nacht Arbeit, aber es hat sich gelohnt, vor allem das Aufräumen von Altlasten. Nach wie vor kann ich Uberspace nur empfehlen, für Leute die ein bisschen mehr aus ihrem Webspace rausholen wollen und keine Angst vor einem Terminal haben.

Von |2018-06-06T12:08:00+02:002018-06-06|Allgemein|

BackgroundWorker in der EPLAN API

… geht offiziell nicht. Steht auch so in der Dokumentation. Darum hier gleich der Vermerk: Es handelt sich um eine interne Funktionalität welche nicht supported wird.

Dennoch hat es genau mein Problem gelöst:
Ich habe eine ProgressBar welche über einen BackgroundWorker viel Arbeit macht. An paar Stellen brauche ich die EPLAN API. Hier hatte ich aber komisches Verhalten (DLLs wurden nicht gefunden, usw.).
Zurückzuführen war es darauf dass der EPLAN Thread nicht wusste wo er suchen soll.

Mit EplanMainThreadDispatcher  gibt es die Möglichkeit Code im Dispatcher und somit im Thread von EPLAN auszuführen. Hier ein Beispiel:

new EplanMainThreadDispatcher().ExecuteInMainThreadSync(o =>
{
  new CommandLineInterpreter().Execute("reports /TYPE:PROJECT");
  return null;
}, null);

Hab mir das mal bisl vereinfacht mit einer Helper-Klasse:

using Eplan.EplApi.Base.Internal;
using Action = System.Action;

namespace Suplanus.Sepla.Application
{
  public class EplanDispatcher
  {
    public static void ExecuteInMainThread(Action action)
    {
      new EplanMainThreadDispatcher().ExecuteInMainThreadSync(o =>
      {
        action.Invoke();
        return null;
      }, null);
    }
  }
}

Dann brauch ich nur noch:

EplanDispatcher.ExecuteInMainThread(() =>
  {
    new CommandLineInterpreter().Execute("reports /TYPE:PROJECT");
  }
);
Von |2018-07-19T10:53:25+02:002018-06-01|EPLAN, EPLAN-API|
Nach oben