Sonntag, 28. November 2021

Agile - Priorität und Qualität vom Shopify CEO (Tobias Lütke) lernen

In dem Artikel "Zeitmanagement - MoSCoW Priorisierung / Prinzip" habe ich beschrieben, wie man mit Hilfe des MoSCoW-Prinzip seine Aufgaben priorisieren kann. In dem Artikel "Shopify-Gründer Tobi Lütke: CEOs müssen die Hüter der Qualität sein" beschreibt Tobi Lütke welche Prioritäten man als guter CEO setzen soll.

Shopify bietet für kleine, mittelständische Händler und mittlerweile auch Konzerne ein einfach einzurichtendes Online-Shopsystem samt Hosting und Bezahldiensten.

Lütke empfiehlt die folgende Prioritätenliste, damit CEOs den Fokus auf die Qualität des Produktes setzen:

  1. "Lasst uns das bestmögliche Produkt bauen."
  2. "Wir müssen ab und zu Geld verdienen, damit wir Prio eins finanzieren können."
  3. "Niemals Prio eins und zwei verwechseln."
"Ich finde es interessant, wie häufig Firmen das falsch herum machen. Das ist bis heute eigentlich mein Hauptjob bei Shopify: Herumrennen und jeden daran erinnern, dass es das Wichtigste ist, ein gutes Produkt zu machen. CEOs müssen die Hüter der Qualität sein."
Aus meiner Sicht kann man diese Prioritätenliste auch in der Softwareentwicklung anwenden, wenn es z.B. um "Softwaretest bei agiler Entwicklung durch Testautomatisierung" geht.

Donnerstag, 18. November 2021

Rund um Linux - Distributionsinformationen in der Shell anzeigen

Bereits in den folgenden Beiträgen finden sich nützliche Befehle für die Shell. Rund um Linux - Einige nützliche Befehle für die Shell I und Rund um Linux - Einige nützliche Befehle für die Shell II (Download mit wget und seq).

Möchte man sich Linux Distributionsinformationen anzeigen lassen, geht dies in der Regel mit den folgenden Befehlen.

Betriebssystemversion per Befehlszeile prüfen
cat /etc/os-release

Linux-Kernelversion herausfinden
uname -r


Mittwoch, 17. November 2021

Raspberry Pi - Shinobi Netzwerkvideorekorder (NVR)

Die Installation und Konfiguration eines NVR (Network Video Recorder) auf einem Raspberry Pi ist mit Hilfe von Shinobi möglich. Die Steuerung und Verwaltung der Kameras erfolgt dabei ganz einfach über ein Webinterface.

Als erstes muss das Raspberry Pi OS incl. SSH-Zugriff installiert werden, siehe hierzu auch Raspberry Pi Stretch Lite - Installation incl. SSH Fernsteuerung.

Shinobi installieren

  1. Notwendige Software installieren (wenn noch nicht vorhanden)
    • sudo apt-get update 
    • sudo apt-get install curl nano -y
  2. Ninja Installer ausführen
    • sudo su
    • bash <(curl -s https://gitlab.com/Shinobi-Systems/Shinobi-Installer/raw/master/shinobi-install.sh)
  3. Ubuntu Touchless auswählen. 
    •  

Nach der Installation läuft Shinobi standardmäßig auf Port 8080.

Über den Webbrowser, sollte man jetzt durch aufrufen von http://RPI_IP_ADDRESSE:8080/super , ein  Admin-Konto erstellen:
  • Standard-Superuser: admin@shinobi.video
  • Standard-Superuser-Passwort: admin

Nachdem erstellen des Konto kann man aich auf der folgenden Seite einloggen: http://RPI_IP_ADDRESSE:8080/.

Hinweis: Weitere Installationsanleitungen finden such auch hier https://shinobi.video/docs/start.

Als gute Netzwerk Überwachungskamera empfiehlt such zum Beispiel die INKOVIDEO V-110-8MW.

Eine gute Anleitung für die Objekterkennung (Motion Detection) findet sich in der offiziellen Dokumentation https://shinobi.video/docs/configure#content-setting-up-motion-detection.

Samstag, 6. November 2021

Hacking - Nützliche Tools (PassView, Windows Login Unlocker, Recovery, Process Hacker, Network Sniffer)

In der aktuellen c't 23/2021 bieten die Artikel "Hack Dich selbst" und "Kali Linux auf USB-Stick einrichten" einen guten Überblick über aktuelle Angriffsszenarien von Hackern.

Über den Link ct.de/y41x findet sich eine Sammlung von Tools, welche die folgenden Themen betreffen:

  • Windows Passwort zurücksetzen
    • NTPWEdit - Windows-Konten entsperren, neues Kennwort vergeben
    • Windows Login Unlocker - Windows-Konten aufsperren, die mit einem Microsoft-Konto verknüpft sind

  • Gelöschte Dateien retten
    • PhotoRec - Wiederherstellung digitaler Bilder und Dateien
  • Kommunikationsverhalten bzw. Netzwerkverkehr loggen
    • NirSoft - Network Monitoring Tools Package
    • PacketCache - Windows service designed to continuously monitor the network interfaces of a computer and store the captured packets in memory (RAM)
    • NetworkMiner - Open source Network Forensic Analysis Tool (NFAT) for Windows
    • Security - Nmap Netzwerkscanner und Kali Linux 
    • Wifite2 - Is designed to use all known methods for retrieving the password of a wireless access point (router)
  • Content-Management-Systeme (WordPress), Datenbanken, Browser- und App-Traffic

Fast alle Tools finden sich unter "Kali Linux", siehe auch Kali Linux Live image für CD/DVD/USB/PXE.

Montag, 1. November 2021

Cloud - Open-Source Software im Cloudumfeld

Nach der Vorstellung von "Cloud - Basics (Konzepte, Werkzeuge und Methoden)" gehe ich kurz auf die Open-Source Software im Cloudumfeld ein. Siehe auch CNCF Cloud Native Interactive Landscape.


Docker

  • Freie Software der Firma Docker Inc. zur Containervirtualisierung.

Ansible und Terraform

  • Mit Ansible werden die "Rezepte" erstellt, um Cloud Server bestellen und konfigurieren zu können und fungiert als Admin Kommandozeilenwerkzeug. Terraform eignet sich für die Bestellung der Cloud Server bei den Anbietern.


Git, GitHub und GitLab

  • Git ist eine Software zur Versionsverwaltung von Dateien, es lassen sich dabei verschiedene Entwicklungspfade zu verfolgen und so können mehrere Entwickler parallel entwickeln. Siehe auch Agile Softwareentwicklung - GitHub Flow notwendig?.
  • GitHub ist einer der weltweit am bekanntesten Hoster für Git-Repositories inklusive Continuous Integration (CI) / Continuous Delivery (CD) Lösungen.
  • GitLab ist eine Webanwendung zur Versionsverwaltung für Softwareprojekte auf Git-Basis, welche man selber hosten kann.

Kubernetes (k8s)

  • Automatisiert den Betrieb von Container, sprich Kubernetes verwaltet somit die Cluster von Servern, die wiederum Container ausführen.

OpenStack

  • Ist der "Baukasten" für Cloudserver und soll Unternehmen dabei unterstützen den Aufbau eigener Clouds zu erleichtern um die eigene digitale Souveränität zu gewährleisten.

S3 (Simple Storage Service)

  • S3 wurde von Amazon entwickelt und kann man als Blockspeicherplatz-Angebot beschreiben. Dateien werden in Buckets (Ordner ohne Verschachtelung) abgelegt. Der Zugriff erfolgt über HTTP / HTTPS. Es ist sehr gut skalierbar und somit wird es gerade von Dropbox oder auch Netflix zum Ablegen von Dateien aller Art verwendet.

Cloud Native Computing Foundation (CNCF)

 

Montag, 25. Oktober 2021

Cloud - Basics (Konzepte, Werkzeuge und Methoden)

Nach meinem Artikel "Cloud - Pizza as a Service: Was hat eigentlich "Pizza" mit Cloud Services zu tun?" gehe ich in diesem Beitrag auf die "Cloud Basics" ein. Hierbei handelt es sich um Werkzeuge und Methoden, welche vor einer möglichen Umsetzung / Einführung / Migration unbedingt bekannt sein sollten.



CI/CD (Continuous Integration/Continuous Delivery)

Release early, release often - Mit Hilfe der CI/CD-Pipelines, welche in einem agilen Softwareprojekt zwingend erforderlich sind, welche den Prozess des fortlaufenden Zusammenfügens von Komponenten hin zu einer Anwendung garantieren, müssen Änderungen am Quellcode bzw. neue Funktionen nicht mehr bis zum nächsten großen Release gesammelt werden. Siehe auch "Agile Softwareentwicklung - GitHub Flow notwendig?".

Änderungen am Quellcode, die in der Versionsverwaltung eingecheckt werden, können sofort automatisch von Skripten getestet (siehe auch Softwaretest bei agiler Entwicklung durch Testautomatisierung) und zu einem auslieferungsfähigen Paket verpackt werden.

Die Tools der Wahl sind hier zum Beispiel Jenkins (build, test, and deploy their software) oder GitHub Actions, GitLab (end-to-end software development platform with built-in version control, issue tracking, code review), Maven (build automation tool used primarily for Java projects) und Nexus (software repository manager).

Cloud-Native

Entwickler bezeichnen Software als Cloud-Native, welche die Vorteile der Cloud im eigenen Rechenzentrum (Flexibilität, Skalierbarkeit und Reproduzierbarkeit) bieten. Die Software ist daher in der Regel für den Betrieb in Containern (Raspberry Pi - Docker installieren) optimiert und kann somit auf eigenen oder auf gemieteten Servern laufen.

Container

Hier erfolgt eine Isolierung von Anwendungen mit Hilfe von Containervirtualisierung (siehe z.B. Raspberry Pi - Docker Compose installieren). Sie nutzen den Kernel des darunterliegenden Betriebssystems und blockieren somit keinen Arbeitsspeicher und haben nur eine sehr geringe Bootzeit. Alle Abhängigkeiten sind enthalten, dadurch lassen sich Container schnell starten, vervielfältigen, auf anderen Servern oder auch ganze Rechenzentren übertragen.

DevOps

Die Entwickler und der Betrieb / Service einer Software (Development und Operations) werden bei diesem Modell nicht hart getrennt, sondern arbeiten eng miteinander zusammen. Flexible Mietserver und Konzepte aus dem Cloudumfeld (zum Beispiel CI/CD) unterstützen dabei, die DevOps Methoden umzusetzen.

Hybrid 

In der Regel wird nicht die komplette Serverinfrastruktur eines vorhandenen Rechenzentrums durch Cloud-Infrastruktur ersetzt. Dies ist vor allem der Fall, wenn es um besonders sensible Daten geht. Die lokale Software sollte aber idealerweise "Cloud-Native" sein, damit Hybride Strategien gut funktionieren. Die restliche Software kann dann in der flexiblen Public Cloud betrieben werden.

laaS (Infrastructure as a Service)


Hierbei handelt es sich eigentlich um Marketing Kreation der Cloud Anbieter. Hierbei kann man Angebote oder Dienste zum Minutenpreis mieten, oft auch Platform as a Service (PaaS) genannt. 


Infrastructure as Code


Die Infrastruktur lässt sich immer wieder neu einrichten. Die jeweils gewünschte Konfiguration wird z.B. in Dateien mit YAML-Format beschrieben. Mit Hilfe von Terraform oder Ansible erfolgt dann die Umsetzung im Cloud-Umfeld.


Public Cloud & Private Cloud


Siehe hierzu auch "Hybrid" Beschreibung oben, Public Cloud sind Angebote für flexibel abgerechnete Server und weitere Dienstleistungen. Private Cloud sind eigene physische Server, welche zum Beispiel mit der Software Open Stack verwaltet werden.
Unternehmen, die idealerweise mit cloud-nativen Tools arbeiten, haben sie die Möglichkeit ihre Dienste jederzeit aus der "Private Cloud" in eine "Pubilc Cloud" zu migrieren.
 


Semantic Versioning


Es handelt sich um eine Standardisierung der Software-Versionierung. Sie besteht aus drei Zahlen (1.3.08) besteht: Die major version (1), minor version (3) und patch version (08). Siehe auch https://semver.org/lang/de/.


SaaS (Software as a Service)


Analog zu IaaS, Software wird zum Monatspreis an Kunden vermietet. Man muss sich nicht um die Administration, Updates oder Backups der Software kümmern. In der Regel laufen die Anwendungen auf Cloud-Infrastruktur wie zum Beispiel Amazon (aws).


Vendor Lock-in


Beschreibt die Befürchtung, dass man mit der Entscheidung für eine Software oder Service im Dienstleisteruniversum eingesperrt ist. Dies kann man mit der Verwendung von Open-Source-Software aus dem Cloud-Native-Umfeld umgehen. Als Beispiel ist hier Kubernetes als Plattform für seine Container und eigenen Betrieb von Open-Source-Software selbst genannt.

Samstag, 16. Oktober 2021

Linux - chafa Grafikrenderer für die Befehlszeile/Kommandozeile

Mit chafa ist es möglich eine Bildvorschau oder Animationen im Terminal anzeigen zu lassen.

Installation (Ubuntu)

sudo add-apt-repository ppa:hpjansson/chafa
sudo apt install chafa


Siehe auch https://hpjansson.org/chafa/download/

Der Aufruf erfolgt mit chafa dateiname.jpg