Kategorien
Stacks

Patterns

Hier steht der Quelltext
Hier steht der Quelltext
class LowestPriceFilterTest extends ServiceTestCase
{
    /**
     * @test
     */
    public function lowest_price_promotions_filtering_is_applied_correctly():void{

        $enquiry = new \App\DTO\LowestPriceEnquiry();
        // Given
        $lowestPriceFilter = $this->container->get(LowestPriceFilter::class);
Kategorien
Befehle

PHP komplett entfernen (Linux)

Löscht alle Pakete/Packages in Verbindung mit php*

sudo apt-get purge php.*
Kategorien
Allgemein Linux

CORS, Preflight Request

Cross-Origin-Resource-Sharing – Anfragen im Browser an unterschiedliche Quellen müssen durch den referenzierten Server erlaubt werden. Der referenzierte Server (Zieladresse) muss uns erlauben (Access-Control-Allow-Origin) auf Ihn zugreifen zu dürfen.

Browser schicken dazu oft erstmal einen Vorabfrage (Preflight request) und dann erst den eigentlichen Request.

Lösung über die VHOST

// myserver.conf - vhost configuration
<Directory /var/www/webspace/app/api>
  Options Indexes FollowSymLinks
  AllowOverride All
  ...
  Heder set Access-Control-Allow-Origin "*"
  Header set Access-Control-Allow-Methods "GET,POST,DELETE,OPTIONS,PUT"
  Header set Access-Controll-Allow-Headers "Origin,authorization"
  
</Directory>

Lösung über die die .htaccess

// .htaccess
Heder always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "GET,POST,DELETE,OPTIONS,PUT"
Header always set Access-Controll-Allow-Headers "Origin,authorization"
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type,origin,authorization,accept,client-security-token"
  
Kategorien
Docker

How to install simultaneously Docker and Podman on RHEL 8/CentOS 8

https://faun.pub/how-to-install-simultaneously-docker-and-podman-on-rhel-8-centos-8-cb67412f321e

  • How to install simultaneously Docker and Podman on RHEL 8/CentOS 8 - https://faun.pub/how-to-install-simultaneously-docker-and-podman-on-rhel-8-centos-8-cb67412f321e
  • Is it safe to clean docker/overlay2/ - I got some docker containers running on Centos 8, the /var/lib/docker/overlay2 folder grows very fast in disk size. Docker uses /var/lib/docker to store your images, containers, and local named volumes. Deleting this can result in data loss and possibly stop the engine from running. The overlay2 subdirectory specifically contains the various filesystem layers for images […]
Kategorien
Datenbanken Mysql,MariaDB

Restriction – on Update, on Delete

Fremdschlüsseleinschränkungen mit ON Update, On Delete (Restrict, No Action, Cascade, Null)

Zögern Sie nicht, der Datenbank Einschränkungen aufzuerlegen. Sie können sicher sein, dass Sie über eine konsistente Datenbank verfügen, und das ist einer der guten Gründe, eine Datenbank zu verwenden. Vor allem, wenn Sie mehrere Anwendungen haben, die dies anfordern (oder nur eine Anwendung, aber mit einem direkten Modus und einem Batch-Modus mit unterschiedlichen Quellen).

Mit MySQL haben Sie keine erweiterten Einschränkungen wie in PostgreSQL, aber zumindest sind die Fremdschlüsselbeschränkungen ziemlich fortgeschritten.

Nehmen wir ein Beispiel, eine Firmentabelle mit einer Benutzertabelle, die Personen aus diesem Unternehmen enthält

CREATE TABLE COMPANY (
     company_id INT NOT NULL,
     company_name VARCHAR(50),
     PRIMARY KEY (company_id)
) ENGINE=INNODB;

CREATE TABLE USER (
     user_id INT, 
     user_name VARCHAR(50), 
     company_id INT,
     INDEX company_id_idx (company_id),
     FOREIGN KEY (company_id) REFERENCES COMPANY (company_id) ON...
) ENGINE=INNODB;

Schauen wir uns die ON UPDATE-Klausel an:

  • ON UPDATE RESTRICT : die Vorgabe : Wenn Sie versuchen, eine company_id in der Tabelle COMPANY zu aktualisieren, lehnt die Engine die Operation ab, wenn mindestens ein USER auf diese Firma verlinkt.
  • ON UPDATE NO ACTION : wie RESTRICT.
  • ON UPDATE CASCADE : normalerweise das Beste: Wenn Sie eine company_id in einer Zeile der Tabelle COMPANY aktualisieren, aktualisiert die Engine sie entsprechend für alle USER-Zeilen, die auf diese COMPANY verweisen (aber keine aktivierten Trigger in der USER-Tabelle, Warnung). Die Engine verfolgt die Änderungen für Sie, das ist gut.
  • ON UPDATE SET NULL : Wenn Sie eine company_id in einer Zeile der Tabelle COMPANY aktualisieren, setzt die Engine die zugehörigen USERs company_id auf NULL (sollte im Feld USER company_id verfügbar sein). Ich kann bei einem Update nichts Interessantes sehen, was damit zu tun hat, aber ich kann mich irren.

Und jetzt auf der ON DELETE-Seite:

  • ON DELETE RESTRICT : die Standardeinstellung: Wenn Sie versuchen, eine company_id-ID in der Tabelle COMPANY zu löschen, lehnt die Engine die Operation ab, wenn mindestens ein BENUTZER auf diese Firma verlinkt, kann Ihr Leben retten.
  • ON DELETE NO ACTION : wie RESTRICT
  • ON DELETE CASCADE : gefährlich : Wenn Sie eine Firmenzeile in der Tabelle COMPANY löschen, löscht die Engine auch die zugehörigen USERs. Dies ist gefährlich, kann aber verwendet werden, um automatische Bereinigungen für sekundäre Tabellen vorzunehmen (es kann also etwas sein, das Sie wollen, aber ganz sicher nicht für ein COMPANY<->USER-Beispiel)
  • ON DELETE SET NULL : handful : Wenn Sie eine COMPANY-Zeile löschen, haben die zugehörigen USERs automatisch die Beziehung zu NULL. Wenn Null Ihr Wert für Benutzer ohne Unternehmen ist, kann dies ein gutes Verhalten sein, z. B. müssen Sie die Benutzer möglicherweise als Autoren einiger Inhalte in Ihrer Anwendung behalten, aber das Entfernen des Unternehmens ist für Sie kein Problem.

Normalerweise ist meine Standardeinstellung: ON DELETE RESTRICT ON UPDATE CASCADE. mit einigen ON DELETE ON DELETE CASCADE für Track-Tabellen (Protokolle – nicht alle Protokolle–, solche Dinge) und ON DELETE SET NULL, wenn die Master-Tabelle ein „einfaches Attribut“ für die Tabelle ist, die den Fremdschlüssel enthält, wie eine JOB-Tabelle für die USER-Tabelle.

Kategorien
Allgemein

Symfony – Doctrine, Relationship

Um eine Beziehung zwischen 2 Entities herzustellen verwenden wir OneToMany, ManyToOne, ManyToMany, OneToOne

Beispielsweise wir haben eine App über die wir Bestellungen für ein Restaurant abwickeln. Kunde können aus mehrere Kategorien wählen. Die Beziehung wäre, einer Kategorie sind viele Gerichte zugordnet und

Getränke Vorspeise Hauptgericht Nachspeise
Wasser Spargelsuppe Schnitzel mit Pommes Vanille Pudding
Cola Shrimpssuppe Kartoffel mit Quark Schoko Pudding
Bier Frühlingsrollen Gemüseauflauf Himbeereis
Eistee

targetEntity und mappedBy oder inversedBy

targetEntity beschreibt die Zielentitätät mit der eine Beziehung hergestellt werden soll

inversedBy wird bei der Entity verwendet, die den Fremdschlüssel in der Tabelle enthält. Die Tabelle Gericht enthält somit einen Fremdschlüssel, der unse alle Kategorie IDs anzeigt, dazu wir verbinden uns mit der Eigenschaft/property „gericht“ in der Tabelle Kategorie (inversedBy=“gericht“). Die Entity Kategorie verwendet mappedBy, denn der Fremdschlüssel befindet sich in der Tabelle Gericht.

// ManyToOne, viele Gerichte sind einer Kategorie zugeordnet
class Gericht
{
...
     /**
     * @ORM\ManyToOne(targetEntity="App\Entity\Kategorie", inversedBy="gericht")
     * @Groups({"read", "write"})
     */
    private $kategorie;
// OneToMany, eine Kategorie kann viele Gerichte enthalten
class Kategorie
{
  ...

      /**
     * @ORM\OneToMany(targetEntity="App\Entity\Gericht", mappedBy="kategorie")
     */
    private $gericht;

# um alle getter und setter Klassen zu erstellen können wir folgenden Befehl aufrufen, es wird nach der Entity gefragt

php bin/console make:entity --regenerate

Kategorien
Allgemein

Javascript

Einfach gehalten: Dies und Das 😁

Kategorien
Javascript

Finden von Elementen bzw. Objekte in einem Array

find elements in array

//with array.some
var found = posts.some(el => el.id  === id ); // It returns true if id exist in an array
 if(found)
 {
  //Your codes here
 }

//with array.filter
var found = posts.filter(el => el.id === id).length > 0; // .length returns 1 if id exist in an array
if(found)
{
   //Your code goes here
}


//example to find element
let posts = [ { id: 1, username: 'foo' },{ id: 2, username: 'bar' } ];

let newObj = {"id": 3, "username": 'prasad'};
//console.log(posts);
let found = posts.some(el => el.id  === 2 );
 if(found)
 {
    for(num of posts){
        //console.log (3, num.id);
        if(4 === num.id){ 
          //Your code
            //console.log("error");
        } else {
          //Your code
            //console.log(num);
        }                
    }; 
    posts.push(newObj);
    console.log(posts);
 }

Kategorien
Javascript

keyup nach x Sekunden lesen

For example you like to request something after you ve typed something, but first after x-secondes we sent a request.

let input = document.getElementById('input');
let timeout = null;

input.addEventListener('keyup', function (e) {
    clearTimeout(timeout);
    timeout = setTimeout(function () {
        console.log('Value:', input.value);
    }, 1000);
});
Kategorien
Allgemein Nodejs React Sandboxes Vue

Sandboxes

Testen, probieren für Vue, JS, Node, Typscript und vieles mehr

https://stackblitz.com/