JohannWeiher

Über Johann Weiher

Der Autor hat bisher keine Details angegeben.
Bisher hat Johann Weiher, 523 Blog Beiträge geschrieben.

Webspace Umzug #4

Manchmal fühle ich mich alt… Zum Beispiel wenn ich danach suche wann ich Suplanus das letzte mal umgezogen habe… 2013 bin ich damals zum grandiosen Hoster Uberspace und war rundum zufrieden… Vor 10 (!!!) Jahren…

Warum dann der Umzug? Naja, ich habe mich über die Wintertage mal in Proxmox reingenerded und uns für ibKastl ein eigenes Cluster mit drei Servern aufgebaut.

Es handelt sich um zwei bare-metal Server und einen dedizierten Server, welcher in der Hetzner Cloud läuft. Letzterer Dient als Monitoring-Server.
Für das Monitoring der Dienste nutzen wir das grandiose Kuma. Um die Hardware im Blick zu haben nutzen wir CheckMK. Das ganze mit Push-Services wenn irgendein Server Zuneigung benötigt.

In OpnSense habe ich mich auch verliebt. Gestartet habe ich damit, da ich eine Firewall haben wollte. Aber nun übernimmt Sie auch noch die Aufgaben als HaProxy, WireGuard VPN Server, UnboundDns Dienst, DHCP, uvm.

Eigentlich hat mir das ganze Web-Hosting usw. nie richtig Spaß gemacht. Aber ich muss sagen, wenn man das selbst von Grund selbst aufbaut mit “eigener” Hardware und Netzwerk, ist das schon ein seeehr interessantes Thema. Ich hab viel über Netzwerk-Layer gelernt und durch die VMs auch viel von Linux (Ubuntu & Debian) gelernt.

Kann jedem empfehlen, sich mal die Videos von Dennis Schröder anzuschauen, denn das war meine Grundlage für den Einstieg in das ganze Thema.

Nun laufen alle ibKastl und Suplanus Dienste / Webseiten / usw. auf unseren Servern. Start vom Umzug war bereits Anfang des Jahres. Wir haben Stück für Stück die VMs aufgebaut und Dienst für Dienst umgezogen, somit war der Druck nie groß und wenn mal was aufgefallen ist auch genügend Zeit zum fixen.

Man könnte meinen dass man dadurch mehr Arbeit hat, wenn man die Infrastruktur selbst betreibt. Aber in unserem Fall ist das eindeutig nicht so. Wir hatten verschiedene Hoster mit unterschiedlichen Verträgen. Oftmals kamen wir hier an die Grenzen alá “Können wir kurz per SSH auf die Kiste und xy installieren?”.

Lange Rede, kurzer Sinn:
Es hat mir sehr viel Spaß gemacht mich in das Thema einzuarbeiten und wir sind mit dem Setup mehr als zufrieden. Achja, Performance ist auch besser, aber die war vorher schon gut!

Von |2023-04-18T06:44:44+02:002023-04-17|Allgemein|

BMK anpassen / ändern

Das sichtbare BMK anpassen… hört sich erstmal einfach an.

Ist aber leider nicht ganz so einfach in der API, zumindest wenn man nicht weiß wie. So ging es mir und dank dem grandiosen EPLAN API Support sind wir auch auf eine Lösung gekommen, welche meinen Anforderungen entspricht:

  • Optional: neues BMK zuweisen
  • BMK korrekt auflösen

Ist z.B. das BMK -MAA1 nicht korrekt eingegeben worden (z.B. alles im Feld Zähler) dann löst der Code das BMK korrekt auf (wie in der Oberfläche).

functionBase.VisibleName = functionBase.VisibleName; // Same device tag
new NameService(newPage).AdjustFullName(functionBase);
Von |2023-02-28T10:33:51+01:002023-02-28|EPLAN, EPLAN-API|

PopUpMenu

In meinem Beitrag zum Erstellen eines Ribbons in EPLAN, gab es mehrfach den Wunsch eigene Untermenüs zu definieren.
Das ist leider so nicht direkt möglich.

Ich habe ein Script gebaut, dass man per Befehl im Menüband aufrufen kann.

 

Befehlszeile:

PopUpMenu /Items:"Item 1;TestAction;Tooltip 1|Item 2;TestAction;Tooltip 2|Item 3;TestAction;Tooltip 3"

Es werden alle Menü-Einträge übergeben, mit Text;Action;Tooltip. In meinem Beispiel drei.

using System.Windows.Forms;
using Eplan.EplApi.ApplicationFramework;
using Eplan.EplApi.Base;
using Eplan.EplApi.Scripting;

internal class PopUpMenu
{
  [DeclareAction("PopUpMenu")]
  public bool ActionPopUpMenu(ActionCallingContext acc)
  {
    // Get items
    string itemsString = null;
    acc.GetParameter("Items", ref itemsString);

    if (string.IsNullOrEmpty(itemsString))
    {
      return false;
    }

    ContextMenuStrip menu = new ContextMenuStrip();
    var itemsSplit = itemsString.Split('|');
    foreach (var itemSplit in itemsSplit)
    {
      var split = itemSplit.Split(';');
      if (split.Length < 2)
      {
        new Decider().Decide(EnumDecisionType.eOkDecision, "Wrong parameter value.", "PopUpMenu",
                             EnumDecisionReturn.eOK, EnumDecisionReturn.eOK, "PopUpMenu", false,
                             EnumDecisionIcon.eFATALERROR);
        return false;
      }

      // Create item
      ToolStripMenuItem menuItem = new ToolStripMenuItem();
      string text = split[0];
      menuItem.Text = text;

      // Action
      string action = split[1];
      menuItem.Click += (sender, args) => { new CommandLineInterpreter().Execute(action); };

      // Tooltip
      if (split.Length > 2)
      {
        string tooltipText = split[2];
        menuItem.ToolTipText = tooltipText;
      }

      menu.Items.Add(menuItem);
    }

    menu.Show(Cursor.Position);

    return true;
  }

  [DeclareAction("TestAction")]
  public void ActionTest()
  {
    MessageBox.Show("Hello!");
  }
}
Von |2022-11-30T16:55:35+01:002022-11-30|EPLAN, EPLAN-Scripts|
Nach oben