CF7 unterstützt keine direkte Verwendung von pattern Attributen in seinen Shortcodes, das wäre mir neu. Du kannst dir allerdings mit ein paar Tricks und JavaScript ein benutzerdefiniertes pattern erstellen. Habe ich schonmal gemacht letztes Jahr für ein Projekt, ist kein Hexenwerk

...zur Antwort

Du musst nur die Bildschirmkoordinaten und die Kamera-Offset-Koordinaten durch this.canvas.zoom dividieren, um den Zoom-Faktor zu berücksichtigen. Anschließend musst du dass selbe mit der Leinwand, also (scaleX und scaleY) machen, um die angepasste Größe der Leinwand im Viewport zu berücksichtigen.

 // Apply camera position offset to screen coordinates

einfach screenPosition.x + this.camera.x * 2 in Klammern setzen und hinten dran dann / this.canvas.zoom;

 // Convert adjusted screen coordinates to canvas coordinates

hier dass selbe, nur brauchst du hier keine Klammer zu setzen

...zur Antwort

Mir ist jetzt so aufgefallen, dass du in deiner use-Methode deiner Blockklasse (AcaciaCraftingBenchBlock) nicht InteractionResult.CONSUME zurückgibst, wenn das GUI erfolgreich geöffnet wird. Also kann dein Code nicht wissen ob alles erfolgreich war. 

schau dich mal hier um ->

Block Interaction - Forge Community Wiki (gemwire.uk)

@Override
public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) {
    int x = pos.getX();
    int y = pos.getY();
    int z = pos.getZ();
    if (!world.isClientSide) {  
        AcaciaCraftingBenchOnBlockRightClickedProcedure.execute(world, x, y, z, player);
        return InteractionResult.CONSUME;  
    }
    return InteractionResult.SUCCESS;
}

probier es mal so.

Ich würde generell in so einem Projekt mit try-catch Blöcken arbeiten. Du hast in deinem Code nicht eine einzige Fehlerbehandlung wenn was schief geht. So kannst du deinen Code definitiv nicht verwenden. Mir sind auch noch viele andere Dinge aufgefallen die man grundsätzlich anderes hätte machen sollen, aber da geh ich jetzt nicht weiter drauf ein. Ändere zuerst deinen public InteractionResult use Block und schau ob dass dein Problem löst

Gruß EchoTech

...zur Antwort
Role-Based Access Control (RBAC) in Next.js?

Ich arbeite an der Implementierung einer Role-Based Access Control (RBAC) für meine API basierend auf Next.Js und möchte sicherstellen, dass ich die Best Practices für effiziente Datenbankabfragen einhalte. Meine Anwendung verwendet Next.js zusammen mit einer Backend-Datenbank ORM (drizzle-orm), um Benutzerrollen und Berechtigungen zu verwalten.

CREATE TABLE Users (
    user_id SERIAL PRIMARY KEY,
    username VARCHAR(255) UNIQUE NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    password_hash VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE Roles (
    role_id SERIAL PRIMARY KEY,
    role_name VARCHAR(50) UNIQUE NOT NULL
);

CREATE TABLE UserRoles (
    user_id INT REFERENCES Users(user_id),
    role_id INT REFERENCES Roles(role_id),
    PRIMARY KEY (user_id, role_id)
);

CREATE TABLE Permissions (
    permission_id SERIAL PRIMARY KEY,
    permission_name VARCHAR(50) UNIQUE NOT NULL
);

CREATE TABLE RolePermissions (
    role_id INT REFERENCES Roles(role_id),
    permission_id INT REFERENCES Permissions(permission_id),
    PRIMARY KEY (role_id, permission_id)
);

CREATE TABLE Sessions (
    session_id UUID PRIMARY KEY,
    user_id INT REFERENCES Users(user_id),
    valid_until TIMESTAMP,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Derzeit werden bei jeder Anfrage die einem Benutzer zugewiesenen Rollen und Berechtigungen aus der Datenbank abgerufen, um die Zugriffsebene zu bestimmen. Ich bin jedoch besorgt über die potenziellen Auswirkungen dieses Ansatzes auf die Leistung, insbesondere wenn die Anwendung skaliert.

Was sind die besten Praktiken für die Implementierung von RBAC in Next.js bei gleichzeitiger Minimierung der Anzahl von Datenbankabfragen? Insbesondere interessiere ich mich für Strategien zur Zwischenspeicherung von Rollen- und Berechtigungsdaten, zur Optimierung der Token-basierten Autorisierung und zum Umgang mit dem Ablauf und der Ungültigkeit von Caches

...zur Frage

deine Abfragen sind ja jetzt nicht wirklich groß, schau dir mal an wie viele Abfragen beispielsweise bei einem statistikprogramm, erp programm,... gemacht werden. In dem Fall werden die meisten Daten durch Prozeduren abgefragt, damit man nicht wegen jeder kleinigkeit, wenn zum beispiel nur der Name gefragt wird eine neue Abfrage abschicken muss. Das ist einfach nicht effizient und würde bei mehreren Abfragen auf einmal dann irgendwann den temporären Speicher füllen.

Für solche kleinen Abfragen wie du zum beispiel, kannst du auch einfach Token verwenden, zum beispiel JSON Web Tokens, da kannst du kleinere Daten in einer json Datei Abfragen und ändern. Das geht viel schneller und spart Platz in der Datenbank. Wenn du aber auch Daten aus der DB abfägst würde ich immer JOINS verwenden zur Abfrage, um in einer Abfrage alle benötigten Informationen zu laden. Ist besser als alles einzeln Abzufragen, bei großen Daten würde das sonst die Datenbank irgendwann überlasten.

für dein vorhaben ist also eine Kombination von JWT für die Token-basierte Autorisierung, Caching (z.B. mit Redis), effiziente Datenbankabfragen und eine saubere Invalidierung des Caches bei Änderungen von Vorteil, so hast du kaum Abfragen und so gut wie keine Datenbanklast

...zur Antwort

Die Fehlermeldung erwähnt spezifisch das GRE-Protokoll. Nicht alle Mobilfunkanbieter unterstützen dieses Protokoll über ihre Netzwerke. Es könnte sein, dass dein Mobilfunkanbieter GRE-Pakete blockiert, was die VPN-Verbindung verhindert. Es könnte auch sein, dass die iPhone-Hotspot-Einstellungen oder die Netzwerkbeschränkungen deines Mobilfunkanbieters die VPN-Verbindung blockieren. Schau am betsen nochmal in deinem Vertag nach

...zur Antwort
PROGRAM PLC_PRG

VAR
  AnalogInputValue AT %IW2 : INT; (* Analogeingang *)
  Voltage : REAL;         (* Berechnete Spannung in Volt *)
END_VAR

das sind deine deklarieten Variablen, die sehen in Ordnung aus

Dein Programmcode stimmt aber nicht...

wie kommst du auf 10478 ?

Die Konstante 10478 hat nichts mit einem 10 Bit-Wert zu tun -> (0-1023) ist die Konstante

also so;

Voltage := (AnalogInputValue / 1023.0) * 11.0;
...zur Antwort

Ne, PDF-Metadaten enthalten keine Informationen über die Geräte-ID oder das Herkunftsland des Erstellers. PDF-Metadaten sind Informationen wie Titel, Autor, Erstellungsdatum, das Änderungsdatum, die Software, die zur Erstellung des Dokuments verwendet wurde, ... Diese Metadaten sind jedoch standardisiert und enthalten keine sensiblen Informationen über das Gerät oder das Herkunftsland des Erstellers.

...zur Antwort

der Text wurde in einen Container gesetzt

<body>
    <div class="container">
        <div class="content">
            <h1>Willkommen auf deinem Portal für Hyper-News!</h1>
            <p>Ein einfacher Text, der schön zentriert auf der Seite dargestellt wird.</p>
        </div>
    </div>
</body>

im css Teil wurde dann der Container und der Inhalt angepasst, so ungefähr:

body, html {
    margin: 0;
    height: 100%;
    font-family: Arial, sans-serif;
}


.container{
    display: flex;
    justify-content: center;
    text-align: center;
    height: 100vh;
}


.content{
    width: 80%;
}

Du musst dich einfach dran probieren. Css ist recht einfach. Wenn später allerdings Javascript dazu kommt, wird es etwas schwieriger. Üb dich erstmal an html, css

Gruß EchoTech

...zur Antwort

Eure while Schleifen sind leider ziemlich unschön. Diese Schleifen halten das Programm in einem Zustand fest, solange die Bedingung wahr ist. Das bedeutet, wenn einer der Sensoren aktiviert wird (Lichtwert unter 800 fällt), tritt das Programm in die entsprechende while Schleife ein und bleibt dort, bis der Wert wieder über 800 steigt. Dadurch können andere Sensoren nicht überprüft werden.

Für euer Vorhaben würde ich definitiv If anstatt while schleifen verwenden.

Ihr könntet die Logik so anpassen, dass die LED leuchtet, wenn irgendein Sensor aktiviert wird. Dies könnt ihr erreichen, indem ihr eine Variable verwendet, die den Status der LED steuert und sie entsprechend den Werten der Sensoren aktualisiert.

So könnt ihr in keine Endlosschleife kommen. Wenn ihr hilfe beim code braucht sagt bescheid

Gruß EchoTech

...zur Antwort

naja wenn man von einer 5 Tage Woche ausgeht hast du am Tag dann 10 Stunden

=NETTOARBEITSTAGE.INTL(F27;MIN(F27+8-REST(F27;7);MONATSENDE(F27;0));1)*10

verstehst du wie die Formel aufgebaut ist ? ansonsten kann ich das gerne nochmal erklären

...zur Antwort
Binärer Suchalgorithmus - wo liegt der Fehler?

Hallo liebe Community,

ich arbeite an einem Suchalgorithmus, der in einer sortierten Liste das Element finden soll, das einem gegebenen Wert am nächsten liegt. Trotz ausführlicher Tests mit über 100 Edge Cases, die alle fehlerfrei terminiert haben, liegt noch ein Fehler im Code. Bisher konnte ich jedoch keinen Fall finden, der nicht korrekt funktioniert.
Kann jemand von euch vielleicht einen Blick darauf werfen und mir helfen, mögliche Schwachstellen oder Fehler zu identifizieren? Ich wäre für jeden Tipp oder Testfall, der mein Problem offenlegen könnte, sehr dankbar!

  1.  Suche nach einem Wert 5 of 7 tests passing
  2. Die Methode 
  3. int search(int[] sortedData, int value, Result result)
  4.  soll mittels binärer Suche nach dem Index vom übergebenen Wert suchen.
  5. Dabei wird immer der mittlere Wert vom Suchbereich angesehen. Falls dies der gesuchte Wert ist, kann dessen Index zurück gegeben werden. Ansonsten verkleinert sich der Suchbereich auf die Indices, in denen der gesuchte Wert noch liegen kann. Falls der Suchbereich nur noch einen Wert enthält, soll ebenfalls abgebrochen werden.
  6. Wenn der Wert nicht im Array enthalten ist, soll stattdessen der Index vom nächst größeren oder nächst kleineren Wert zurückgegeben werden. Welcher der beiden Indices ist dabei egal, solange der zurückgegebene Index im Array liegt.
Code: 

public static int search(int[] sortedData, int value, Result result) {
     int left = 0;
    int right = sortedData.length - 1;
    int nearestindex = -1;
    int currentSmallest = Integer.MAX_VALUE;

    while(left <= right) {
        int middle = left + (right - left) / 2;
        int difference = Math.abs(value - sortedData[middle]);

        if(difference < currentSmallest) {
            currentSmallest = difference;
            nearestindex = middle;
        } else if(difference == currentSmallest) {
            if(Math.abs(value - nearestindex) > Math.abs(value - middle)) {
                nearestindex = middle;
            }
        }
        result.addStep(middle);

        if(sortedData[middle] == value) {
            return middle;
        }
        if (sortedData[middle] < value) {
            left = middle + 1;
        } else {
            right = middle - 1;
        }
    }
    return nearestindex;
}
...zur Frage

Du aktualisiert nearestindex basierend auf der Bedingung difference < currentSmallest. Dies sieht korrekt aus, aber die darauf folgende Bedingung (else if (difference == currentSmallest)) könnte Probleme verursachen. Die innere Bedingung vergleicht Math.abs(value - nearestindex) mit Math.abs(value - middle), was inkorrekt ist, da nearestindex ein Index und kein Wert aus sortedData ist. Die korrekte Implementierung sollte Math.abs(value - sortedData[nearestindex]) sein.

else if (difference == currentSmallest) {
  if(Math.abs(value - sortedData[nearestindex]) > Math.abs(value - sortedData[middle])) {
    nearestindex = middle;
  }
}
...zur Antwort

Hallo

In C gibt es keinen eingebauten Operator für Exponentiation.

Da es sich nur um die dritte Potenz handelt, kannst du einfach die Zahl dreimal mit sich selbst multiplizieren:

int result = 38 * 38 * 38;

Du kannst aber auch pow aus der Mathematik Bibliothek verwenden, pow arbeitet aber mit double-Typen, das kannst du also nicht immer verwenden

#include <stdio.h>
#include <math.h>

int main() {
  double result = pow(38, 3);
  printf("38 hoch 3 ist %f\n", result);
  return 0;
}
...zur Antwort

Hallo Tristan,

Dein Problem mit der Excel-Formel ist ziemlich häufig, besonders weil die Funktion FINDEN einen Fehler ausgibt, falls der gesuchte Text in der Zelle nicht vorhanden ist. Das bringt die gesamte WENN-Formel zum Abbruch.

Eine gute Lösung hierfür wäre, die Funktion ISTFEHLER in deine Formel zu integrieren. Das hilft, Fehler abzufangen, bevor sie die Ausführung der Formel stören. So könntest du deine Formel umschreiben:

=WENN(ISTFEHLER(FINDEN("Maxi"; B5)); WENN(ISTFEHLER(FINDEN("Medi"; B5)); WENN(ISTFEHLER(FINDEN("Mini"; B5)); ""; "0116"); "0117"); "0118")

Diese Version prüft jede Bedingung der Reihe nach und gibt die entsprechende Nummer aus, wenn der Text gefunden wird. Wenn keiner der Texte vorhanden ist, gibt sie einfach einen leeren String zurück. So erhältst du natürlich auch keine Probleme.

Du kannst auch WENNS benutzen (ab Version 2016), die ist ein bisschen übersichtlicher;

=WENNS(NICHT(ISTFEHLER(SUCHEN("Maxi"; B5))); "0118",
      NICHT(ISTFEHLER(SUCHEN("Medi"; B5))); "0117",
      NICHT(ISTFEHLER(SUCHEN("Mini"; B5))); "0116",
      WAHR; "")

WENNS ist praktisch, weil es direkt die erste zutreffende Bedingung nimmt und das Ergebnis ausgibt, und das alles ohne die Verschachtelung, die bei vielen WENN-Bedingungen notwendig wäre.

Gruß EchoTech

...zur Antwort

Hi

Der Devolo Giga Bridge Coax ist wirklich eine solide Option, wenn du das Coaxialkabel in deinem Haus nutzen möchtest, um eine Internetverbindung zu etablieren, ohne dass du neue Ethernet-Kabel verlegen musst. Viele Leute wählen diese Lösung, weil sie einfach und effektiv ist, besonders wenn du bereits eine Coax-Verkabelung im Haus hast, die früher vielleicht für Kabel-TV genutzt wurde. Die meisten Nutzer sind zufrieden mit der Leistung und der Zuverlässigkeit, allerdings hängt das natürlich auch immer etwas von der Qualität der bestehenden Verkabelung ab.

Was die Sache mit den Adaptern von Cat 7 auf Coax angeht, sieht es etwas anders aus. Theoretisch gibt es solche Adapter, aber praktisch sind sie oft nicht die beste Lösung. Ethernet und Coax verwenden unterschiedliche Arten der Signalübertragung, was bedeutet, dass ein einfacher Adapter ohne spezielle Konvertierung zwischen den Technologien eher nicht funktionieren wird. Die Signale, die über Ethernet-Kabel gesendet werden, sind nicht direkt kompatibel mit den Hochfrequenzsignalen, die in Coax-Kabeln genutzt werden. Daher sind diese einfachen Adapter normalerweise nicht zu empfehlen, weil sie nicht effizient arbeiten und oft Probleme verursachen können.

Wenn du also eine stabile und schnelle Internetverbindung über dein bestehendes Coax-Kabel aufbauen willst, ist der Devolo Giga Bridge Coax wahrscheinlich der Weg, den du gehen solltest. Über direkte Adapter von Cat 7 auf Coax würde ich eher abraten, da sie wahrscheinlich nicht die erhoffte Leistung bringen würden die du dir vorstellst.

mit freundlichen Grüßen

EchoTech

...zur Antwort

Also, der Knackpunkt bei der Sache ist, dass die Farbwerte in Java im Bereich von 0 bis 255 definiert sind. Wenn deine Berechnung der Graustufen darüber hinausschießt, knallt es – deshalb die Exception.

Du hast die richtige Idee mit der Umrechnung der Farbwerte zu Grautönen – Rot mit 29,9%, Grün mit 58,7% und Blau mit 11,4%. Aber wie gesagt, das Ergebnis muss zwingend in unserem 0-255 Bereich liegen.

for (int x = 0; x < breite; x++) {
    for (int y = 0; y < hoehe; y++) {
        int roterAnteil = pixel[x][y].getRed();
        int gruenerAnteil = pixel[x][y].getGreen();
        int blauerAnteil = pixel[x][y].getBlue();
        int grauwert = (int)(roterAnteil * 0.299 + gruenerAnteil * 0.587 + blauerAnteil * 0.114);
        // Klammern setzen, um sicherzustellen, dass die Multiplikation zuerst ausgeführt wird!
        grauwert = Math.min(grauwert, 255); // Das hier stellt sicher, dass der Wert nicht > 255 ist.
        pixelNeu[x][y] = new Color(grauwert, grauwert, grauwert); // Und ab damit ins neue Pixelarray.
    }
}

Die Math.min() Funktion ist hier dein Freund, sie hält den Wert im Rahmen. Probiere das mal aus und sag mir, ob's geklappt hat!

...zur Antwort

hi,

hast du Code:Blocks schon eingerichtet ?

wenn nicht;

öffne Code::Blocks -> Einstellungen > Compiler. Schau nach ob der GCC-Compiler ausgewählt ist und die Pfade korrekt sind.

Danach Einstellungen > Debugger, dort kannst du GDB als Debuuger festlegen

Danach solltest du eigentlich damit arbeiten können

Grüße EchoTech

...zur Antwort
A: Ich bin sehr klein und Teil eines Zeichens

Das könnte auf ein Bit hinweisen, die kleinste Informationseinheit in der Computertechnik, die Teil eines Zeichens (wie in einem Byte) ist.

B: Ich kann nur zwei Werte annehmen

Das ist definitiv ein Bit, das nur die Werte 0 oder 1 annehmen kann.

C: Bei mir sind manche breit und manche schmal

Hier geht’s vermutlich um Datenbusse. Manche haben mehr Leitungen (sind "breiter") und können mehr Daten gleichzeitig transportieren, andere weniger (sind "schmaler").

D: An mir kannst du sehen, wer zu wem gehört

eventuell Klammern, die benutzt werden, um zu zeigen, welche Operationen oder Funktionen zusammengehören.

E: Ich stelle grundsätzlich Beziehungen dar

da bin ich mir jetzt nicht ganz sicher entweder Schnittstelle (Datenbanken, API usw.) oder Graphen, die genutzt werden um Beziehungen zwischen Objekten darzustellen

Angaben ohne Gewähr :)

...zur Antwort