Kategorien
Diverses

Power Arbeitszeit

Ich lebe und arbeite in einer digitalen Welt, in der Ablenkungen an der Tagesordnung sind. Ich fand, dass ich meine Tage oft mit ständigen Unterbrechungen und der Notwendigkeit, auf zahlreiche Anfragen zu reagieren, verbrachte. Daher begann ich, jeden Nachmittag eine Power Arbeitszeit einzuplanen, die sich als äußerst produktiv erwiesen hat.

Jeden Nachmittag plane ich zwei Stunden meiner Power Arbeitszeit ein. Dies ist eine Zeitspanne, in der ich meine Kommunikations-Apps deaktiviere, mein Handy auf stumm schalte und alle potenziellen Ablenkungen ausschalte. Während dieser Zeit sind keine Meetings erlaubt. Ich habe festgestellt, dass ich während dieser zwei Stunden tatsächlich etwa 80% meiner täglichen Arbeit erledigen kann.

Die Planung beginnt bereits vorher. Ich erstelle eine Prioritätenliste der Aufgaben, die ich erledigen muss. Diese Liste hilft mir, meine Zeit effektiv zu nutzen und zu gewährleisten, dass ich während meiner Power Arbeitszeit an den wichtigsten und dringendsten Aufgaben arbeite.

Pünktlich zum Start meiner Power Arbeitszeit schalte ich mein Handy auf stumm und lege es außer Sichtweite. Ich deaktiviere alle Benachrichtigungen auf meinem Computer und schließe alle Tabs und Anwendungen, die nicht für meine Arbeit erforderlich sind. Besonders wichtig ist, dass ich alle Funktionen von Microsoft Teams und anderen Kommunikationstools, die ich verwende, deaktiviere.

Während meiner Power Arbeitszeit arbeite ich in konzentrierten Blöcken. Ich versuche, 1 bis 2 Stunden ununterbrochen an einer Aufgabe zu arbeiten, abhängig von der Art der Aufgabe und meiner Konzentrationsfähigkeit. Nach jedem Block mache ich eine kurze Pause, um meine Konzentration wiederherzustellen und meine Augen und meinen Körper zu entspannen.

Die Power Arbeitszeit hat meine Arbeitsweise revolutioniert. Sie hat mir geholfen, produktiver und fokussierter zu arbeiten und die Qualität meiner Arbeit zu verbessern. Ich habe weniger Stress und mehr Kontrolle über meinen Arbeitstag. Ich empfehle jedem, der Schwierigkeiten hat, sich auf seine Arbeit zu konzentrieren oder produktiv zu sein, diese Methode auszuprobieren. Sie könnte die Antwort sein, die Sie suchen, um mehr aus Ihrem Arbeitstag herauszuholen.

Kategorien
Symfony

Symfony Logging Verzeichnis anpassen

Um das Verzeichnis, in dem die Logs von Symfony gespeichert werden, zu ändern, kann man die Konfigurationsoption kernel.logs_dir verwenden. Diese Option definiert standardmäßig das Verzeichnis var/log.

Um das Log-Verzeichnis zu ändern, kann man den folgenden Code in der Konfigurationsdatei hinzufügen:

parameters:
    kernel.logs_dir: '/foo/log'

In diesem Beispiel wird das Verzeichnis /foo/log als Log-Verzeichnis verwendet.

Wenn man kernel.logs_dir in der config/services.yaml überschreibt, fügt man den oben genannten Code in den parameters-Abschnitt der Konfigurationsdatei ein.

Nach der Änderung von kernel.logs_dir muss man den Cache löschen, damit die Änderungen wirksam werden:

php bin/console cache:clear

Kategorien
Angular

Angular Test HTML Code der Komponente ausgeben

Der HTML Code kann ausgegeben werden mit:

console.log(fixture.debugElement.nativeElement.innerHTML);
Kategorien
JavaScript

Chrome remote debugging funktioniert nicht mehr mit Intellij IDE

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.

Kategorien
Uncategorized Webdeveloper Tools

Bilder mit in einem iPhone Rahmen darstellen

Folgenden kostenlosen Service habe ich verwendet um einen Screenshot aufzuwerten:

https://mockuphone.com

Damit kann man einfach Scrrenshots in Tablets oder Handys mocken, wie z.B.:

Kategorien
Angular

Angular Change Detection für Array Input

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.

Kategorien
Symfony

Symfony mögliche Konfigurationsparameter anzeigen

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
Kategorien
PHP

composer ohne Memory Limit ausführen

COMPOSER_MEMORY_LIMIT=-1 composer update
Kategorien
Docker

Mehrere Befehle mit docker ausführen

Es gibt mehrere Möglichkeiten, mehrere Befehle mit Docker Compose auszuführen. Hier sind ein paar Beispiele:

  1. Verwenden Sie das && Zeichen, um mehrere Befehle in einer einzigen Zeile auszuführen:
docker-compose exec <service-name> <command1> &amp;&amp; <command2> &amp;&amp; <command3>
  1. Verwenden Sie ein Semikolon, um mehrere Befehle in einer einzigen Zeile auszuführen
docker-compose exec <service-name> <command1>; <command2>; <command3>
  1. Erstellen Sie eine Bash-Skript-Datei mit mehreren Befehlen und führen Sie die Datei mit dem Befehl sh aus:
docker-compose exec <service-name> sh <script-file>
  1. Verwenden Sie eine Bash-Eingabeaufforderung, um mehrere Befehle auszuführen.




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> &amp;&amp; <command2> &amp;&amp; <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.

Kategorien
Docker

Verbinden mit einem Docker Container unter einem bestimmten User

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.

Verwendung von docker-compose

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.