Unterabschnitte von Home

Unterabschnitte von WebApps

Dart-i

(ToDo!) — Hier gehts zur Dokumentation ->

pas 13.05.2023

Mini-Office

(ToDo!) — Hier gehts zur Dokumentation ->

pas 13.05.2023

in arbeit in arbeit

Chapter X

Some Chapter title

Lorem Ipsum.

pas 07.02.2021

Unterabschnitte von Musik

Klingeltöne

Klingeltöne IPhone (noch verschieben)

audacity -> .m4a -> rename .m4r max-länge 30s wenn auch als Hinweiston File auf iphon kopieren - (Das File ist, nach kopieren, nicht sichtbar in browser)

Unterabschnitte von Essen - Trinken

Gin Fizz

ZUTATEN

  • 5cl Gin
  • 3cl frischer Zitronensaft
  • 2cl Zuckersirup
  • ca.10cl Soda
  • Eiswürfel

ZUBEREITUNG

  • Alles bis auf Soda in den Shaker geben und 12.5 Sekunden shaken ;-)
  • in Longdrinkglas geben und mit Soda auffüllen.
pas 24.12.2020

Pulledpork

Einkaufsliste

Material Für 4-6 Personen
Fleisch vom Hals oder Schulter - hoher Fettgehalt und gleichmässig marmoriert 2.5 kg
Gemüsebullion (doppelt konzentriert) 150 ml
Rub (6 Esslöffel Kräutermischung + 2 Esslöffel Brauner Zucker) 8 Esslöfel
Annanas oder Apfelsaft oder … 250 ml
Barbecuesauce
Brötchen 10

Schritt für Schritt

Aufwand

30 Minuten

Dauer

36 Stunden

gantt dateFormat YY-MM-DD-HH axisFormat T%H:%m title 2.5 kg Hals (10 Portionen) todayMarker stroke-width:3px,stroke:#0f0,opacity:0.5 section Arbeit Mit Rub einreiben : st1, 2023.05.15 06:00, 10m Auf den Grill oder in SlowCooker : st3, after st2, 5m Warmstellen : st6, after st5, 5m Zupfen und mit Saft mischen : st8, after st7, 10m section Warten Kühlstellen (24h): st2, after st1, 1d Grill (130°C) bis 92°C im Kern (8-10h) : st4, after st3, 10h Oder -> 10-12 H SlowCooker : st5, after st3, 10h Fleisch 1-3 h Ruhenlassen : st7, after st6, 1h

Unterabschnitte von VCS

Unterabschnitte von Git-Repositories

Basics

Init

  • git init

Zustand abfragen

  • git status

add to stage

  • git add -A

  • git add -u

remove from

  • git rm --cached <file/pattern>

Remove pycache

  • git rm --cached -r **pycache**/

commiten

  • git commit -m 'update node-red'

Remote Server

  • git remote add origin git@github.com:user/repo.git

RemoteRepo aktualisieren pushen zum Remot-Repo

  • ssh-keygen -t rsa -C "your_email@example.com"

  • cat ~/.ssh/id_rsa.pub | pbcopy

  • git push

  • git push --force --set-upstream origin master

vom RemoteRepo ziehen

  • git pull

  • git pull --recurse-submodules

git log

  • git log --all --graph --decorate --oneline
  • git log --all --graph --decorate

hard reset

git fetch origin master

git reset --hard origin/master

Backup aller repositories ziehen

USER=**USER**;
curl --user \${USER} 'https://api.bitbucket.org/2.0/repositories/**TEAM**?pagelen=100' | grep -o '"git@[^ ,]\+' | xargs -L1 git clone
Quellen

Scripts for ...

Git pull force

#/bin/sh

# Fetch the newest code
git fetch

# Delete all files which are being added,
# so there are no conflicts with untracked files
for file in `git diff HEAD..origin/master --name-status | awk '/^A/ {print $2}'`
do
    echo "Deleting untracked file $file..."
    rm -vf "$file"
done

# Checkout all files which have been locally modified
for file in `git diff HEAD..origin/master --name-status | awk '/^M/ {print $2}'`
do
    echo "Checking out modified file $file..."
    git checkout $file
done

# Finally merge all the changes (you could use merge here as well)
git pull
Quellen

in arbeit in arbeit

Kapitel 3

Virtualisierung

Beginne mit dem einrichten einer virtuellen Umgebung. Das klingt zunächst … In wenigen Minuten eingerichtet … grosse Vorteile … Für Private Kostenlos …

Minimal anforderung Hardware:

  • MacMini (ESXi Host)
  • RaspberryPi (Terminal)
  • Tastatur + Maus
  • Monitor
  • Netzkabel Cat5e
  • USB-Disk für Backup’s (Kapazität: doppelt so viel wie HD im MacMini)

Optional:

  • NAS
  • 2-3 USB-Disks
pas 20.09.2020

Unterabschnitte von ESXi

Host einrichten

NAS mount from the config file.

´´´esxcfg-nas -r´´´

noch ein ort….

VBox:

mac:

  1. diskutil list

  2. diskutil unmountDisk /dev/disk2

  3. ls -al /dev/disk2

  4. sudo chown :staff /dev/disk2

  5. VBoxManage internalcommands createrawvmdk -filename /Users/[Username]/Documents/usbdrive.vmdk -rawdisk /dev/disk2

  6. diskutil unmountDisk /dev/disk2

  7. Nun startet Ihr VirtualBox und erstellt eine neue Virtuelle Maschine. Wenn Ihr zu dem Punkt kommt, wo Ihr eine Festplatte erzeugen oder eine vorhandene Festplatte auswählen sollt, könnt Ihr dort eure erstellte .vmdk auswählen.

MacOs

Notizen:

sudo defaults write /Library/Preferences/com.apple.windowserver DisplayResolutionEnabled -bool NO sudo /Library/Application\ Support/VMware\ Tools/vmware-resolutionSet 2560 1600

Unterabschnitte von Containering

Unterabschnitte von Docker

Installation

Ubuntu-Server 20.4

    sudo apt install apt-transport-https ca-certificates curl software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
    sudo apt update
    apt-cache policy docker-ce
    sudo apt install docker-ce

    sudo usermod -aG docker ${USER}
    su - ${USER}
    id -nG
Quellen

Netzwerk Docker

in arbeit in arbeit

host

Netzanschluss des Containers wie direkt am “switch”. … Bezieht aber keinen DHCP-Lease von externem DHCP-Server ohne DHCP-Relay

bridge

none

macvlan

debian

sudo ip link set eno1 promisc on

Bridge mode

docker network create -d macvlan \
  --subnet=192.168.xxx.y/24 \
  --gateway=192.168.xxx.y \
  -o parent=eno1 macvlan_x

802.1q trunk bridge mode

docker network create -d macvlan \
  --subnet=192.168.xxx.0/24 \
  --gateway=192.168.xxx.1 \
  -o parent=eno1.123 macvlan_xxx

ipvlan

docker network create -d ipvlan \
    --subnet=192.168.xxx.0/24 \
    --gateway=192.168.xxx.1 \
     -o ipvlan_mode=l2 ipvlanxxx

overlay

offene Ports auflisten

debian

sudo netstat -tulpn | grep LISTEN

Quellen

Speedtest CLI

moutten/speedtest-cli

docker run --rm moutten/speedtest-cli

docker run --rm moutten/speedtest-cli --help

docker run --rm moutten/speedtest-cli --list

in arbeit in arbeit

Chapter X

Some Chapter title

Lorem Ipsum.

Einrichten und Starten

config File erstellen

## traefik.yml
# Docker configuration backend
providers:
  docker:
    defaultRule: "Host(`{{ trimPrefix `/` .Name }}.master.k8s`)"
# API and dashboard configuration
api:
  insecure: true

container starten

docker run -d --name traefik -p 8080:8080 -p 80:80 \
-v /data/traefik_data/traefik.yml:/etc/traefik/traefik.yml \
-v /var/run/docker.sock:/var/run/docker.sock \
traefik:v2.0

Quellen:

pas 29.04.2020

in arbeit in arbeit

Chapter X

Some Chapter title

Lorem Ipsum.

Unterabschnitte von Ansible

Installation

Installation

MacOs

… …

sudo pip3 install --upgrade pip
sudo pip3 install ansible
ansible --version

ToDo:

Elasticsearch

Kibana

Grafana

ptrg

esp32/esp8266

pas 20.04.2020

Unterabschnitte von Monitoring

Checkmk

Demo-Dashboard Demo-Dashboard

pas 13.05.2023

Zabbix

Zabbix auf Raspberry?

container

https://www.zabbix.com/documentation/current/manual/installation/containers

Fehler.Behebungen:

Fehler - in Msql - Docker

2020-09-27T05:58:55.367060Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: ‘8.0.21’ socket: ‘/var/run/mysqld/mysqld.sock’ port: 3306 MySQL Community Server - GPL. mbind: Operation not permitted mbind: Operation not permitted mbind: Operation not permitted …

Behebung (docker-compose):

unter zB database mysql: security_opt: - seccomp:unconfined

Unterabschnitte von Netzwerk

Unterabschnitte von Exports

ssh

ssh-schlüssel tauschen:

  #### wenn noch kein ssh-key:
        ssh-keygen
  #### dann:
        cat ~/.ssh/id_rsa.pub | ssh pi@office "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

pub key copy in zwischenablage:

ssh-keygen
pbcopy < ~/.ssh/id_rsa.pub

oder

xclip < ~/.ssh/id_rsa.pub

oder

cat ~/.ssh/id_rsa.pub

nfs

sudo apt update && sudo apt install nfs-kernel-server -y sudo apt update && sudo apt install nfs-common -y

snippet Bemerkung
showmount -e nas Freigaben abfragen
sudo mkdir ~/mnt/nas_homes_nfs
sudo mount -t nfs -o vers=4 nas:/homes /nas_homes_nfs/ bei Version3 = uid muss passen oder mappen
mount | grep nfs
mount -t nfs -o uid=1000,gid=1000,tcp,rw :/path/to/export /mnt/freenasMnt
Quellen

DNS sinkhole

Pi-Hole

Eigene DNS-Einträge

Datei /etc/dnsmasq.d/50-custom-dns-names.conf erstellen.

Hosteeinträge erstellen (Wildcard .xyz. wie bei server02 im beispiel)

address=/server01.lan/192.168.xxx.11
address=/.server02.lan/192.168.yyy.11
Quellen

Unterabschnitte von Raspberry Pi

Videokonferenz

So einfach wie möglich

Motivation

2020-04-06: Das Virus COVID-19 hat sich über die ganze Welt verbreitet. Die 2 einzigen Mittel der Menschheit sich vor dem Virus zu schützen, Hygiene und soziale Distanz/Isolation.

Besonders der Kontakt zu den liebsten in Pflege- und Altersheimen ist oft schwierig. Video-Konferenzen helfen diese schwierigen Zeiten erträglicher zu machen. Soziale Kontakte zu Familie, Freunden und Interessengruppen können aus sicherrer Distanz gepflegt werden.

Um dieses “Fenster nach Aussen” auch für Menschen mit NULL Computer- oder Smartphone-Kenntnissen zugänglich zu machen, muss allerdings etwas sehr einfach zu bedienendes her. Zumal selbst Kurze Schulungen aktuell nicht möglich sind und das Pflegepersonal nicht weiter belastet werden soll!

Die Bedienung soll sich also dabei, im Idealfall auf das Ein- und Ausschalten beschränkt.

Eine mögliche Lösung kann mit einem Laptop realisiert werden. Idealerweise verfügt dieser über eine eingebaute WebCam, Microfon, Lautsprechern und Wifi. Besonders wenn ein nichtmehr benutztes Gerät vorhanden ist, eine sehr Kostengünstige Lösung. An dem von mir verwendetetn Rechner ist zum Beispiel die Tastatur defekt. Aber macht ja nichts, wird eh nicht mehr benötigt wenn der Rechner fertig Eingerichtet ist.

Los gehts.


Installation

Betriebssystem installieren

(Debian mit Xfce4)

Das Betriebssystem soll eine graphische Oberfläche haben und dabei möglichst schlank sein, schnell starten und schnell herunterfahren. Ich habe mich für Debian mit Xfce4 entschieden. (Download) Die installation ist (hier) beschriebn. VideoCam, Mikrofon und Lautsprecher werden in der regel Automatisch erkannt und Eingerichtet.


Software installieren

(Web-Browser und 2 Helfer um die Maus automatisch zu steuern)

System Aktualisieren mit:

su -
apt update
apt upgrade

WebBrowser und Software für die Maussteuerung installieren mit:

su -
apt install chromium
apt install unclutter
apt install xdotool

Mehr brauchen wir nicht.


Konfiguration

kiosk-user erstellen

su -
adduser kiosk

Autologin

Filename: /etc/lightdm/lightdm.conf

...
autologin-user = kiosk
...

Autostarts definieren

Mauszeiger nach 1 sekunde verschwinden lassen

Filename: /home/kiosk/.config/autostart/mouseoff/.desktop

[Desktop Entry]
Type=Application
Name=chromium
Comment=mauszeigeroff
Exec=unclutter -idle 1
OnlyShowIn=XFCE;
Terminal=false
Hidden=true

Name[de_CH]=mouseoff.desktop

ToDo? -> https://wiki.ubuntuusers.de/unclutter/


Jitsi Meet mit chromium starten

Filename: /home/kiosk/.config/autostart/chromium.desktop

[Desktop Entry]
Type=Application
Name=chromium
Comment=chromium Kiosk
TryExec=xfce4-clipman
Exec=chromium --kiosk --password-store=basic https://meet.jit.si/.....(hier meeting angeben)
OnlyShowIn=XFCE;
Terminal=false
Hidden=false

Name[de_CH]=chromium.desktop

Automatische Mausklicks

(Falls ein Maus-Klick für den Benutzer zu anspruchvoll und mehr möglich ist … habe leider noch keine zuverlässigere Lösung gefunden)

Filename: /home/kiosk/.config/autostart/mousemove.desktop

[Desktop Entry]
Type=Application
Name=mousemove
Comment=mauszeigerverschieben
Exec=xdotool mousemove 850 750
OnlyShowIn=XFCE;
Terminal=false
Hidden=false

Filename: /home/kiosk/.config/autostart/mousemove.desktop

[Desktop Entry]
Type=Application
Name=mouseleftclick
Comment=mauszeigerverschieben
Exec=xdotool click --repeat 10 --delay 10000 1
OnlyShowIn=XFCE;
Terminal=false
Hidden=false

Herunterfahren über PowerButton

Über Menue

Anwendungen -> Einstellungen -> Energieverwaltung -> Allgemein -> Knöpfe, BeiBetätigung der Ein/Austaste = Herunterfahren.


Quellen:

macOS

open -a "Google Chrome" --args --kiosk "https://meet.jit.si/pasch.ch"

2020-07-14T19:29:00+02:00 06.04.2020

Raspbian

Protokolldateien

sudo journalctl -b

Service

systemctl status networking sudo systemctl restart homebridge; sudo journalctl -fau homebridge

User und Gruppen

id -u

id -g

Unterabschnitte von Raspbian

Datenträger

Datenträger auflisten

lsblk -o NAME,VENDOR,MODEL,LABEL,SIZE,STATE,FSTYPE,MOUNTPOINT,UUID

Beispiele für dauerhaftes einhängen (/etc/fstab)

tmpfs /var/log tmpfs size=25M,noatime 0 0
UUID=e084f291-7471-44dd-bea1-16a9b712e6a8 /home/pi/data/pull-from ext4 auto,nofail,sync,users,rw 0 0
LABEL=restic-repo /home/pi/data/restic-repos ext4 auto,nofail,sync,users,rw 0 0
LABEL=restic-cache /home/pi/data/restic-cache ext4 auto,nofail,sync,users,rw 0 0
Quellen

Nodejs

node -v
nodejs -v
npm -v
curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
sudo apt install nodejs -y

Chapter X

SmartHome

https://buanet.de/2019/05/iobroker-unter-docker-auf-der-synology-diskstation-v3/

docker run -d -p 8889:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /share/CACHEDEV1_DATA/Container/my_data/portainer_data:/data portainer/portainer
docker run -d -p 8088:8081 --name iobroker --restart always -v /share/CACHEDEV1_DATA/Container/my_data/iobroker_data:/opt/iobroker buanet/iobroker:latest

stoppt Recreate Pull latest Image

pas 14.03.2020

Unterabschnitte von SmartHome

MQTT

graph LR; A(Publisher) --> B{MQTT-Broker} B -->|subskribierende| D(Client) B -->|subskribierende| E(Client) B -.- F(Client)

Vom Publisher erhält der Broker Nachrichten und liefert sie an die subskribierende Clients aus.

Topics

Am Anfang und Ende eines Topics kein Level Separator ‘/’

Beispiel: haus/zimmer/sensor

Wildcards

+ -> Single-Level : haus/+/sensor

# -> Multi-Level : haus/zimmer/# haus/# oder alles #

Quality of Service

QoS 0

fire and forget

QoS 1

Wenn Nachricht zwingend beim Empfänger ankommen muss und Duplikate keinen Rolle spielen.

QoS 2

Wenn Nachricht zwingend beim Empfänger genau 1 mal ankommen muss.

Publish

Topics-Werte an Broker senden, mit Angabe von QoS-Level

Retain flag

Immer die letzte Nachricht zu einem Topic speichern und neuen Subscribierenden sofort zusenden.

Subscribe / Unsubscribe

Topics-Werte von Broker erhalten, mit Angabe von QoS-Level

Unsubscribe

Bezug von Topics-Werten beenden

Quellen:

https://opus.hs-offenburg.de/frontdoor/deliver/index/docId/2771/file/THESIS_MARIO_SALLAT.pdf

MQTT.fx

Zigbee

ConBee2

Installation

Raspbian

sudo gpasswd -a $USER dialout
wget -O - http://phoscon.de/apt/deconz.pub.key | sudo apt-key add -
sudo sh -c "echo 'deb http://phoscon.de/apt/deconz $(lsb_release -cs) main' > /etc/apt/sources.list.d/deconz.list"
sudo apt update
sudo apt install deconz

Der deCONZ.sevice kann bei Bedarf auch ohne Upnp support (Port:1900 Upnp) gestartet werden. Zum Beispiel weil Port 1900 schon belegt ist. Aktive Verbindungen können mit sudo netstat -unlp abgefragt werden.

sudo netstat -unlp

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address    Foreign Address  State  PID/Program name
udp    70656      0 0.0.0.0:1900     0.0.0.0:*               1364/perl
udp        0      0 0.0.0.0:1900     0.0.0.0:*               1364/perl
...

Konfiguration bearbeiten: nano /lib/systemd/system/deconz.service and add –upnp=0

User=1000
ExecStart=/usr/bin/deCONZ -platform minimal --http-port=80 --upnp=0
Restart=on-failure
StartLimitInterval=60
...

Service automatisch starten:

systemctl enable deconz.service

Phoscon in Browser öffnen http://ip-adresse:80 Phoscon Phoscon

Esp32_8266

Lorem Ipsum.

Fhem

Backup auf Samba-Share

  • Netzfreigabe in Filesystem einhängen Edit /etc/fstab
//192.168.y.x/archiv/_ITConfigBackups/fhem/media/usb /media/usb cifs user=xxx,password=xxx,uid=fhem,gid=pi,x-systemd.automount 0 0
  • Manuell mount
  • Test mount nach reboot

Unterabschnitte von Fhem

Fhem als Dockercontainer betreiben

in arbeit in arbeit

docker-compose.yml

...

  fhemTUI:
    image: fhem/fhem:latest
    restart: always
    volumes:
      - ./fhemTUI/data/:/opt/fhem/
    ports:
      - "8083:8083"
    networks:
      - fhem-network
    environment:
      FHEM_UID: 6061
      FHEM_GID: 6061
      TIMEOUT: 10
      RESTART: 1
      TELNETPORT: 7072
      TZ: Europe/Zurich
      # CONFIGTYPE: configDB
...
Quellen:

https://hub.docker.com/r/fhem/fhem/tags?page=1&ordering=last_updated

Homebrige

Installation auf Raspberry Pi (rasbian-jessie)

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt update; sudo apt upgrade
nodejs --version
python --version
g++ --version
sudo apt-get install python g++ libavahi-compat-libdnssd-dev

sudo npm install -g --unsafe-perm homebridge
sudo npm install -g homebridge-fhem

sudo npm -g outdated
sudo npm -g update homebridge
sudo npm -g update homebridge-fhem

sudo useradd -m -c "Homebridge Service" -s /bin/bash -G audio,bluetooth,dialout,gpio,systemd-journal,video homebridge
sudo visudo -f /etc/sudoers.d/homebridge

homebridge ALL=(root) SETENV:NOPASSWD: /usr/local/bin/npm, /bin/systemctl restart homebridge, /usr/local/bin/node

sudo chmod 640 /etc/sudoers.d/homebridge

sudo mkdir -p /var/homebridge
sudo nano /var/homebridge/config.json
evtl. “username”: “CC:22:3D:E3:CE:30”, auf “username”: “CC:22:3D:E3:CE:31”
{
    "bridge": {
        "name": "Homebridge",
        "username": "CC:22:3D:E3:CE:30",
        "port": 51826,
        "pin": "031-45-154"
    },
    "platforms": [
        {
            "platform": "FHEM",
            "name": "FHEM",
            "server": "127.0.0.1",
            "port": "8083",
            "filter": "room=Homekit"
        }
     ],
    "accessories": []
}
sudo chown -R homebridge:homebridge /var/homebridge

sudo nano /etc/systemd/system/homebridge.service

[Unit]
Description=Node.js HomeKit Server
After=syslog.target network-online.target

[Service]
Type=simple
User=homebridge
EnvironmentFile=/etc/default/homebridge
ExecStart=/usr/local/bin/homebridge $HOMEBRIDGE_OPTS
Restart=on-failure
RestartSec=10
KillMode=process

[Install]
WantedBy=multi-user.target


sudo nano /etc/default/homebridge

# Defaults / Configuration options for homebridge
# The following settings tells homebridge where to find the config.json file and where to persist the data (i.e. pairing and others)
HOMEBRIDGE_OPTS=-I -U /var/homebridge

# If you uncomment the following line, homebridge will log more
# You can display this via systemd's journalctl: journalctl -f -u homebridge
# DEBUG=*


sudo systemctl daemon-reload

sudo systemctl enable homebridge

Test deamon start/restart

sudo systemctl restart homebridge; sudo journalctl -fau homebridge

Mapping

Beispiel Dummyschalter ja/nein > on/off

  1. attr <device> siriName <name>
  2. attr <device> genericDeviceType switch
  3. attr <device> homebridgeMapping On=ja=state,valueOff=nein,valueOn=ja,cmdOff=nein,cmdOn=ja

Config ui

Baustelle ab hier in arbeit in arbeit

https://github.com/oznu/homebridge-config-ui-x

sudo npm install -g --unsafe-perm homebridge-config-ui-x

Quellen:

Chapter X

Some Chapter title

install MacOS

xcode-select --install
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

brew install pyenv pyenv-virtualenv
brew install zlib sqlite
cd ~/

echo 'eval "$(pyenv init -)"' >> .zshrc

pyenv install -l
pyenv install 3.8.2

Visual Studio Code die Python-Erweiterung installiert
Shift + cmd + P -> Python: Select Interpreter

Manualls

  1. https://docs.python.org/3/
Quellen

https://opensource.com/article/19/6/python-virtual-environments-mac

https://bodo-schoenfeld.de/eine-virtuelle-umgebung-fuer-python-erstellen/

https://akrabat.com/creating-virtual-environments-with-pyenv/

todo

https://github.com/OpenReplyDE/bbbackup

https://www.data-science-architect.de/selektieren-von-daten-in-dataframes/

Inst

Ubuntu

https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-programming-environment-on-an-ubuntu-20-04-server-de

pas 22.03.2020

Unterabschnitte von Python

in arbeit in arbeit

OCR

OCR nachträglich …

pas 18.05.2020

Unterabschnitte von JupyterLab

Basics

  • Tuple = (“John”, “Peter”, “Vicky”)
  • dictionary = {“name”: “John”, “country”: “Norway”}
  • list = [“apple”, “banana”, “cherry”]
  • set = {“apple”, “banana”, “cherry”}
  • array = numpy …

Bildbearbeitung mit Pillow

Thumb’s erstellen

from PIL import Image
import glob, os, sys

size = 128, 128

folder = os.path.dirname(__file__)
os.chdir(folder)
print(os.getcwd())

# l = [f for f in os.listdir(folder) if f.endswith('.jpg')]

for infile in os.listdir(folder):
    try:
        im = Image.open(infile)
        file, ext = os.path.splitext(infile)
        print(infile)
        im.thumbnail(size, Image.ANTIALIAS)
        im.save(file + "-thumb.jpg", "JPEG")
    except:
        print("Unexpected error: " , sys.exc_info()[0])

Quellen

  1. http://effbot.org/imagingbook/image.htm#tag-Image.Image.verify

Unterabschnitte von Powershell

Flusssteuerung ode so … X

fluss

pas 16.03.2020

Unterabschnitte von Fluss

If

Quelle: https://adamtheautomator.com/powershell-if-else/

  if ($percentFree -gt $Warning) {
      $Status = 'Normal'
  }
  elseif ($percentFree -gt $Critical) {
      $Status = 'Warning'
  }
  elseif ($percentFree -le $Critical) {
      $Status = 'Critical'
  }
 Add-Type -AssemblyName System.Windows.Forms

function Click-MouseButton
{
    $signature=@' 
      [DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
      public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
'@ 

    $SendMouseClick = Add-Type -memberDefinition $signature -name "Win32MouseEventNew" -namespace Win32Functions -passThru 

        $SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0);
        $SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0);
}

for ($i=1; $i -le 10; $i++) {
  #$Pos = [System.Windows.Forms.Cursor]::Position
  $x = 940
  $y = 780
  [System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point($x, $y)
  Start-Sleep -Seconds 10
  Click-MouseButton
} 

autoit: sleep(3000) MouseMove(100,100) sleep(5000) For $i = 3 To 1 Step -1 sleep(2000) MouseClick(“left”, 650, 520, 1) Next MouseMove(10,10)

Beispiele:

# Define thresholds in percentage
$Critical = 20
$Warning = 70

# Get all Fixed Disk information
$diskObj = Get-CimInstance -ClassName CIM_LogicalDisk | Where-Object { $_.DriveType -eq 3 }

# Initialize an empty array that will hold the final results
$finalReport = @()

# Iterate each disk information
$diskObj.foreach(
    {
        # Calculate the free space percentage
        $percentFree = [int](($_.FreeSpace / $_.Size) * 100)

        # Determine the "Status"
        if ($percentFree -gt $Warning) {
            $Status = 'Normal'
        }
        elseif ($percentFree -gt $Critical) {
            $Status = 'Warning'
        }
        elseif ($percentFree -le $Critical) {
            $Status = 'Critical'
        }

        # Compose the properties of the object to add to the report
        $tempObj = [ordered]@{
            'Drive Letter'     = $_.DeviceID
            'Drive Name'       = $_.VolumeName
            'Total Space (GB)' = [int]($_.Size / 1gb)
            'Free Space (GB)'  = [int]($_.FreeSpace / 1gb)
            'Free Space (%)'   = "{0}{1}" -f [int]$percentFree, '%'
            'Status'           = $Status
        }

        # Add the object to the final report
        $finalReport += New-Object psobject -property $tempObj
    }
)

return $finalReport
$SendEmail = $true

$From = ""
$To = ""

$CCEnabled = $true
$CC = ""

$BCCEnabled = $true
$BCC = ""

$abortFlag = 0

if ($SendEmail) {
    if (!$From) {
        Write-Host "[From] is missing" -ForegroundColor Red
        $abortFlag = 1
    }

    if (!$To) {
        Write-Host "[To] is missing" -ForegroundColor Red
        $abortFlag = 1
    }

    if ($CCEnabled) {
        if (!$CC) {
            Write-Host "[CC] is missing" -ForegroundColor Red
            $abortFlag = 1
        }
    }

    if ($BCCEnabled) {
        if (!$BCC) {
            Write-Host "[BCC] is missing" -ForegroundColor Red
            $abortFlag = 1
        }
    }

    if ($abortFlag -eq 1) {
        Write-Host "The abort flag has been tripped. Exit script." -ForegroundColor Red
        break
    }
    else {
        Write-Host "Your email will be sent from this address $From" -ForegroundColor Green
        Write-Host "And will be sent to the following people:" -ForegroundColor Green
        Write-Host "To: $To" -ForegroundColor Green

        if ($CCEnabled -and $CC) {
            Write-Host "CC: $CC" -ForegroundColor Green
        }

        if ($BCCEnabled -and $BCC) {
            Write-Host "BCC: $BCC" -ForegroundColor Green
        }
    }
}

Chapter X

Some Chapter title

pas 15.03.2020

Chapter X

Some Chapter title

pas 15.03.2020

Unterabschnitte von Datentypen

Array

$array = @()
$array = 2..5

$arrayList = New-Object -TypeName "System.Collections.ArrayList"
$arrayList = [System.Collections.ArrayList]@()

$arrayList.GetType()
$arrayList.IsFixedSize

# Adden:
#  Bei fester Grösse (langsam!)
    $array += 6
#  Bei variabler Grösse (schnell)
    $arrayList.Add("guggus")

# Referenzieren:
#  erstes:
    $array[0]
#  letztes:
    $array[-1]
#  von bis:
    $array[0..3]

Quelle: https://adamtheautomator.com/powershell-arraylist/

pas 16.03.2020

Hashtable

$hashtable = [ordered]@{'erster key' = "erster -  value"; key = "2. Wert"}

$hashtable.Keys
$hashtable.Values
pas 15.03.2020
  • GIMP
  • DigiKam
pas 10.04.2020

Unterabschnitte von Foto

DigiKam

  1. esxi - ubuntu-desktop installieren:

  2. sudo apt install open-vm-tools

  3. user erstellen

  4. id user

  5. sudo usermod -u xyz name

  6. sudo groupmog -g xyz name

  7. sudo chown -hR name:name /home/name

  8. download digikam appimage

  9. app nach /home/user/Digikam/* verschieben

  10. file ausführbar machen

sudo apt install cifs-utils

sudo mount -t cifs -o user=xyz,uid=xyzz //nas.par/homes/name/bilder /home/name/nas

next:

  • mount fstab
pas 28.03.2020

Unterabschnitte von Holz

Holzkanu - Leistenbau

zur Gallery … This is my image This is my image

Bauzeit

April 2004 bis August 2004

gantt dateFormat YYYY-MM-DD title Vom Holzbrett bis zur Bootstaufe section Start Leisten Fräsen/Schleifen/Kehlen : gugus10, 2004-04-01,1d Bock : des20, after gugus10,2d Rumpf verleimen : des30, after des20, 10d Rumpf schleifen aussen : des40, after des30, 1d Rumpf schleifen innen : des45, after des40, 3d Rumpf Glasverbund : des50, after des45, 2d Hartholz-Elemente : des60, after des50, 2d Lackieren : des70, after des60, 1d section Total effektiv Arbeitstage ca. 22? : active, WDTotal, 2004-04-01,22d

Werkzeuge

  • Ziehklinge gerade
  • Ziehklinge geschweifft
  • Handhobel
  • Bandschleiffmaschine
  • Leistensäge / Stichsäge
  • Wasserkocher
  • Kunststoffrohr

Materialliste

Hölzer (Europäische Hölzer verwenden!)

Rumpf
  • Fichte
Hartholzelemente
  • Esche
  • Eiche

Leim/Kunstharz

Glasfasermatte

Diverses

  • Sicherheits-Gurte

Bau

Bild Beschreibung
Liz. Bauplan erwerben
Zeichnen - CAD
Verleimen der Steven - Die Eschenleisten werden vorher gedämpfen, gebogen und getrocknet.
Form auf Bock
Quellen
  • Ted Moores - Canoecraft

Unterabschnitte von Holzkanu - Leistenbau

Bildergalerie

Arbeitsschritte

Alle Bilder zum Kanubau

Gallery erstellt mit -> photoswipe

in arbeit in arbeit

Chapter X

Some Chapter title

Lorem Ipsum.

pas 10.04.2020

Unterabschnitte von Garten

Hoch-Beete

2020-04-10

gantt dateFormat YYYY MM DD title Versuch - Direktsaat section Beet-01 Schnittlauch : 2020-04-11, 2d Zwiebeln : 2020-04-10, 2020-04-12, 2d Pflücksalat : 2020-04-10, 2d section Beet-02 Tamila : 2020-04-10, 2d Wirsing : 2020-04-10, 2d section Beet-03 Schwarze Cherry : 2020-04-10, 2d Froschkönigs Goldkugel : 2020-04-10, 2d Berner Rosen sel. Z : 2020-04-10, 2d Sibirische Frühe : 2020-04-10, 2d San Marzano : 2020-04-10, 2d section Beet-04 Kürbis : 2020-04-10, 2d section Beet-05 Petersilie : 2020-04-10, 2d