Der HTML Code kann ausgegeben werden mit:
console.log(fixture.debugElement.nativeElement.innerHTML);
Der HTML Code kann ausgegeben werden mit:
console.log(fixture.debugElement.nativeElement.innerHTML);
Bei mir reicht es die Datei zu löschen:
C:\Users\MY_USER\AppData\Roaming\JetBrains\PhpStorm2022.2\options\other.xml
Dann PhpStorm/Webstorm neustartne und es läuft wieder.
Folgenden kostenlosen Service habe ich verwendet um einen Screenshot aufzuwerten:
Damit kann man einfach Scrrenshots in Tablets oder Handys mocken, wie z.B.:
Die Change Detection von Angular wird immer ausgeführt bei einem Array Input, wenn sich die Referenz des Arrays ändert, aber nicht der Inhalt:
console.log([1] === [1]); // ergibt false
In Angular kann man die Change Detection beeinflussen, indem man die Strategie der Change Detection für eine Komponente ändert. Eine der Strategien ist die „OnPush“-Strategie, bei der die Change Detection nur dann ausgelöst wird, wenn sich die Eingangsparameter einer Komponente ändern oder wenn ein Ereignis aufgerufen wird.
Um sicherzustellen, dass die Change Detection nur ausgeführt wird, wenn das Input-Array geändert wurde, können Sie den OnPush-Strategie für die Komponente verwenden und eine Überwachungsfunktion für das Input-Array hinzufügen, die nur dann ausgelöst wird, wenn sich die Werte des Arrays ändern.
Hier ist ein Beispiel einer solchen Komponente:
import { Component, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; @Component({ selector: 'app-example', template: '...', changeDetection: ChangeDetectionStrategy.OnPush }) export class ExampleComponent { @Input() items: any[] = []; constructor(private cd: ChangeDetectorRef) { } ngOnChanges(changes: any) { if (changes.items && !this.arrayEquals(changes.items.previousValue, changes.items.currentValue)) { this.cd.markForCheck(); } } private arrayEquals(a: any[], b: any[]): boolean { return JSON.stringify(a) == JSON.stringify(a); } }
Somit wird die Komponente nur neu gerendert, wenn sich an dem Items Array wirklich etwas ändert und nicht nur die Referenz.
Um eine alle möglichen Config Parameter eines Packetes anzuzeigen, kann man folgenden Konsolenbefehl verwenden:
php bin/console config:dump-reference doctrine_migrations
Ausgabe:
# Default configuration for extension with alias: "doctrine_migrations"
doctrine_migrations:
# A list of namespace/path pairs where to look for migrations.
migrations_paths:
# Prototype
namespace: ~
# A set of services to pass to the underlying doctrine/migrations library, allowing to change its behaviour.
services:
# Prototype
service: ~
# A set of callables to pass to the underlying doctrine/migrations library as services, allowing to change its behaviour.
factories:
# Prototype
factory: ~
# Storage to use for migration status metadata.
storage:
# The default metadata storage, implemented as a table in the database.
table_storage:
table_name: null
version_column_name: null
version_column_length: null
executed_at_column_name: null
execution_time_column_name: null
# A list of migrations to load in addition to the one discovered via "migrations_paths".
migrations: []
# Connection name to use for the migrations database.
connection: null
# Entity manager name to use for the migrations database (available when doctrine/orm is installed).
em: null
# Run all migrations in a transaction.
all_or_nothing: false
# Adds an extra check in the generated migrations to allow execution only on the same platform as they were initially generated on.
check_database_platform: true
# Custom template path for generated migration classes.
custom_template: null
# Organize migrations mode. Possible values are: "BY_YEAR", "BY_YEAR_AND_MONTH", false
organize_migrations: false
# Use profiler to calculate and visualize migration status.
enable_profiler: false
# Whether or not to wrap migrations in a single transaction.
transactional: true
COMPOSER_MEMORY_LIMIT=-1 composer update
Es gibt mehrere Möglichkeiten, mehrere Befehle mit Docker Compose auszuführen. Hier sind ein paar Beispiele:
&&
Zeichen, um mehrere Befehle in einer einzigen Zeile auszuführen:docker-compose exec <service-name> <command1> && <command2> && <command3>
docker-compose exec <service-name> <command1>; <command2>; <command3>
sh
aus:docker-compose exec <service-name> sh <script-file>
Nachdem Sie sich in die Bash-Eingabeaufforderung eingeloggt haben, können Sie mehrere Befehle eingeben und ausführen.
Wenn Sie sich mit einem bestimmten Benutzer anmelden möchten und mehrere Befehle ausführen möchten, können Sie auch den Befehl su
verwenden, um den Benutzer zu wechseln, bevor Sie die Befehle ausführen, so wie ich es in meiner vorherigen Antwort erwähnt habe.
docker-compose exec <service-name> su -c "<command1> && <command2> && <command3>" <username>
Wichtig ist dass, je nachdem welche Art von Befehlen Sie ausführen, bestimmte Bedingungen erfüllt sein müssen und es auch darauf ankommt ob diese Befehle in einer einzigen Zeile oder in mehreren Zeilen ausgeführt werden sollen.
Um sich mit einem bestimmten Benutzer in einen Docker-Container zu verbinden, können Sie den Befehl docker exec
verwenden. Der Befehl hat folgendes Format:
docker exec -it [container_name_or_id] [command]
Der Parameter -i
sorgt dafür, dass die Standardeingabe (stdin) an die angegebene Befehlszeile gebunden wird, während der Parameter -t
dafür sorgt, dass ein pseudo-Terminal erstellt wird. Der container_name_or_id
entspricht der ID oder dem Namen des Containers, mit dem Sie sich verbinden möchten. Der command
ist der Befehl, den Sie ausführen möchten, wenn Sie sich mit dem Container verbunden haben.
Um sich beispielsweise mit dem Benutzer „testuser“ in einen Container mit dem Namen „mycontainer“ zu verbinden und eine Bash-Sitzung zu starten, würden Sie den folgenden Befehl verwenden:
docker exec -it mycontainer bash -c 'su - testuser'
Beachten Sie, dass Sie nur dann in einen Container als bestimmter Benutzer verbinden können, wenn der Benutzer auch tatsächlich in dem Container vorhanden ist.
Wenn Sie Docker Compose verwenden, können Sie den Befehl docker-compose exec
verwenden, um sich mit einem bestimmten Benutzer in einen Container zu verbinden. Der Befehl hat folgendes Format:
Der service_name
ist der Name des Dienstes, der in der Compose-Datei definiert ist, mit dem Sie sich verbinden möchten. Der command
ist der Befehl, den Sie ausführen möchten, wenn Sie sich mit dem Container verbunden haben.
Um beispielsweise mit dem Benutzer „testuser“ in einen Dienst mit dem Namen „web“ zu verbinden und eine Bash-Sitzung zu starten, würden Sie den folgenden Befehl verwenden:
docker-compose exec web bash -c 'su - testuser'
Wie bereits erwähnt, beachten Sie, dass Sie nur dann in einen Container als bestimmter Benutzer verbinden können, wenn der Benutzer auch tatsächlich in dem Container vorhanden ist.
Ich habe das Google Pixel 7 Pro vor kurzem gekauft und bin sehr zufrieden mit dem Smartphone. Es läuft sehr flüssig und sieht auch gut aus. Die abgerundete Bauweise macht es angenehm in der Hand und das Curved Display ist kaum noch vorhanden, was ich bevorzuge.
Die Software des Pixel 7 Pro gefällt mir auch sehr gut. Die Benutzeroberfläche ist benutzerfreundlich und intuitiv und bietet auch einige Personalisierungsmöglichkeiten.
Die Kamera des Pixel 7 Pro ist auch sehr gut. Der Zoom bei 10x ist klar und scharf und der Zoom bei 30x ist auch gut. Die Selfie-Kamera macht auch schöne Bilder.
Insgesamt bin ich sehr zufrieden mit dem Pixel 7 Pro und würde es jedem empfehlen, der nach einem hochwertigen und leistungsstarken Smartphone sucht. Der Preis ist zwar etwas hoch, aber ich denke, dass das Smartphone den Preis wert ist.
Um End-To-End-Tests mit Cypress und Angular zu schreiben, können Sie folgende Schritte ausführen:
npm install -D cypress
installieren.npx cypress open
im Hauptverzeichnis Ihres Projekts. Cypress öffnet eine Benutzeroberfläche, in der Sie Ihre Tests aufzeichnen und ausführen können.describe('My First Test', () => { it('Does not do much!', () => { cy.visit('http://localhost:4200'); cy.contains('app-root h1', 'Welcome to my-app!'); }); });
cy.get()
, cy.click()
und cy.type()
.Um Cypress mit einem Docker-Container zu verwenden, können Sie folgende Schritte ausführen:
Dockerfile
in Ihrem Projektverzeichnis mit den folgenden Inhalten:FROM cypress/browsers:node18.6.0-chrome105-ff104 # Install your application's dependencies COPY package.json yarn.lock ./ RUN yarn # Add your application code COPY . ./ # Run the tests CMD ["yarn", "cy:run"]
docker build -t my-app .
docker run -it --rm -v $(pwd):/app my-app
aus. Dies führt die Cypress-Tests innerhalb des Containers aus.Durch das Hinzufügen von -v $(pwd):/app
werden Ihre Projektdateien in den Container gemountet und Cypress kann auf sie zugreifen.