JS reverse() – Ein Array umkehren

Wer hat das noch nicht versucht? Ein array zu bekehren? 😉 In JS gibt es die Funktion reverse() die ein Array umdreht. Besipiel

const people = [{name: 'Alfons'},{name: 'Bernd'},{name: 'Christian'}];

Jetzt bekehren wir sie :-0

const convertetedPeople = people.reverse();

Array(3) [ {…}, {…}, {…} ]​
0: Object { name: "Christian" }​
1: Object { name: "Bernd" }​
2: Object { name: "Alfons" }​
length: 3​
<prototype>: Array []

JS ist einfach cool!

Sprechblassen mit HTML und CSS bauen

Es kommt immer mal wieder vor, dass man eine Sprechblase zum Beispiel in einer Kommentarbox bauen muss. Wie war das gleich nochmal?!? Man kann sich ja nicht immer alles merken und es gibt im Netzt auch nützliche Generatoren für diese Fälle. Für Sprechblasen könnte man zum Beispiel diesen hier nehmen: https://www.html-code-generator.com/css/speech-bubble-generator .

Mit ein paar weiteren Anpassungen ist die Sprechblasse innerhalb weniger Sekunden fertig.

Table colspan und rowspan Generator

Komplizierte Konstrukte mit Tabellen abzubilden war eigentlich eine Dispziplinzwischen den Jahr 2000 und 2003 herum. Immer wieder kommen aber bei Stackoverflow Fragen auf, wie man solche oder solche Tabellen darstellt. Statt auf das coole und moderne Grid System zurückzugreifen wird noch mit Tabellen gearbeitet. Wie auch immer. Wer sich den Horror mit colspans und rowspan ersparen will kann auf einen online Tabellen Generator zurückgreifen. Da klickt man sich die Tabelle einfach zusammen: https://tabletag.net/.

Mit sed Text in einer Datei ändern

Wer über die CLI in einer Textdatei etwas editieren möchte greift für gewöhnlich zu nano, vim etc. Aber es gibt auch eine andere Möglichkeit in einer Textdatei etwas zu ändern. Über eine Stream (Stream Edit). Das kann zum Beispiel bei einem Deploymentscript sinnvoll sein. Wenn man zum Beispiel ein Deploymentscript hat und mit Release Ordner arbeitet. In diesem speziellem Fall muss dann der Apache DocumentRoot angepasst werden. Standardmäßig ist dieser “/var/www/html”. Nach dem wir unseren neuen Code auf den r1 (realeas1) Ordner geladen haben, möchten wir dass die der neue Code in Produktion geht. Also passen wir unsere Apache apache2.conf Datei an. Und zwar mit folgender CLI Zeile:

sed -i 's/\/www\/html\//\www\/html\/r1\//g' apache2.conf.

Und den apache noch mal neu starten:

# systemctl restart apache
# service httpd restart

sed -i ‘s/original/neu/g’ datei.txt

Erläuterung:

sed = Stream Editor
-i = in-place (d.h. zurück in die Originaldatei speichern)

Die Befehlszeichenfolge:
    s = der Ersetzungsbefehl
    original = ein regulärer Ausdruck, der das zu ersetzende Wort beschreibt (oder nur das Wort selbst)
    new = der Text, durch den er ersetzt werden soll
    g = global (d.h. alles ersetzen und nicht nur das erste Vorkommen)

file.txt = der Dateiname

Larvel withCount mit Where Condition

Stellt Euch vor ihr habt ein Model Post mit einer Relation Comment. Auf der Übersichtsseite von Post möchtet ihr nur die Anzahl der Kommentare eines jeweiligen Post anzeigen. Dafür gibt es die echt hilfreiche Laravel Funktion withCount().

Post::withCount('comments')->all();

Aber bei Comments kann es ja sein, dass manchen noch approved werden müssen. Diese müssen dann noch rausgenommen werden. Das geht mit einer Where Condition innerhalb der withCount Funktion.

Post::withCount(['comments', function($query) {
   $query->where('comment_appoved', '=', true);
}])->all();

Und viola wir haben das was wir wollen. Larvel is nice 😉

Eine bestehende Datenbank auf einem Docker laufen lassen

Stellt euch vor ihr bekommt die undankbare Aufgabe ein altes WordPress Projekt zu upgraden. Das Projekt hinkt bereits zwei Major Releases hinterher. Das bedeutet ihr könnt nicht einfach im Produktivsystem ein upgrade vollziehen. Ihr müsst euch das Produsystem auf eure lokale Entwicklungsumgebung kopieren.

Dafür eignet sich Docker ganz gut. Heute gehe ich davon aus, dass wir nur die Datenbank dockerisieren. Dann schieben wir den Datenbankdump der Produktivumgebung in unseren Docker.
Vorraussetzung: Ihr habt docker auf eurem System, könnt mit der Konsole umgehen und hab bereits den Datenbank Dump.

  1. Erstellt ein Order wo ihr Euer Projekt erstellen möchtet.
  2. Erstellt eine docker-compose.yml
  3. kopiert diese Befehle in die eben erstellte docker-compose.yml rein *
  4. erstellt zwei Ordner: my-datavolume und dumps
  5. legt das SQL Dump file in diesen Ordner. Tut euch ein gefallen um bennent die Datei aussagekräftig um. Zum Beispiel 2021-11-11-dump.sql
  6. startet docker-compose mit docker-compose up -d
  7. checkt ob der container vorhanden ist: docker ps
  8. loggt euch jetzt in euer Container ein docker exec -it my_mysql bash
  9. loggt euch innerhalb des Containers in MySql ein mit mysql -uroot -p
  10. Okay, mir ist es gerade auch einwenig peinlich aber Passwort ist : password
  11. gebt ein source /home/2011-11-11-dump.sql
  12. A viola! Die Datenbank ist da
  13. exit und dann noch mal exit und ihr seid wieder im HOST

Über ein SQLTool wie MySQL Workbench könnt ihr solange der Conatiner läuft drauf zugreifen. Wenn ihr die DB in eure DB UI einfügen möchtet dann beachtet das der PORT nicht default 3306 ist sonder ich ihn in der docker-compose.yml mit 3309 angegeben habe. Das könnt ihr natürlich anpassen. Dafür müsst ihr nur den container wieder mit docker-compose down runterfahren.

* das docker-compose.yml file:

version: '3.1'

services:

  wordpress:
    image: wordpress:4
    restart: always
    ports:
      - '8090:80'
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - ./wordpress:/var/www/html

  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: password
    volumes:
      - ./db:/var/lib/mysql      
      - ./schema/:/home/dumps
      #- ./schema/:/docker-entrypoint-initdb.d
    ports:
      - "3309:3306"      
volumes:
  wordpress:
  db:

Ein Git reset wieder rückgängig machen

Stellt euch vor. Ihr habt ein commit gemacht und wollt diesen aber wieder zurücksetzen. Quasi ein Rollback um eins zurück. Das macht ihr mit git reset HEAD~1. Nun sagt ihr: Ähh, doch lieber nicht… Um das wieder rückgängig zu machen könnt ihr mit git reset –hard commit_id_des_letzten_HEAD den reset Commit wieder rückgängig machen und ihr habt wieder den Zustand “Stellt euch vor.”

$ git init
 Initialized empty Git repository in .git/
 $ echo "testing reset" > file1
 $ git add file1
 $ git commit -m 'added file1'
 Created initial commit 1a75c1d: added file1
  1 files changed, 1 insertions(+), 0 deletions(-)
  create mode 100644 file1
 $ echo "added new file" > file2
 $ git add file2
 $ git commit -m 'added file2'
 Created commit f6e5064: added file2
  1 files changed, 1 insertions(+), 0 deletions(-)
  create mode 100644 file2
 $ git reset --hard HEAD^
 HEAD is now at 1a75c1d… added file1
 $ cat file2
 cat: file2: No such file or directory
 $ git reflog
 1a75c1d… HEAD@{0}: reset --hard HEAD^: updating HEAD
 f6e5064… HEAD@{1}: commit: added file2
 $ git reset --hard f6e5064
 HEAD is now at f6e5064… added file2
 $ cat file2
 added new file

What does the -p option stand for in mkdir?

If you want to create several directories with the command mkdir you use the -p option. But what does the -p stand for? One could assume it stands for “Path”. But no. It stands for “parent”. And the flag is needed to create a parent directory if it is required. If you try to create a parent and a child directory without the p option, you would get an error.

Instead of -p you can also enter -parent. Both options work:

mkdir -p ParentFolder/ChildFolder
mkdir -paren ParentFolder/ChildFolder

SeoTheater Autoren