Samstag, 30. Januar 2021

Warum eigentlich agil?

Das Scrum Manifest der agilen Softwareentwicklung definiert agile Methoden nach z.B. der Eigenschaft das sich Prozesse während der gesamten Projektzeit ständig weiterentwickeln und immer wieder neu bewertet müssen. Aber warum ist man überhaupt gezwungen agile Methoden zu verwenden?


Eine gute Antwort auf die Frage bietet mein Blog Eintrag vom April 2020  "Digitalisierung - The Six D's of Disruption". Mit Hilfe des Modells kann man verstehen, wie Technologien bzw. Digitalisierung uns beeinflussen.

In letzten Jahren kam es immer schneller zu einer "Demokratisierung" und Technologien sind immer schneller mehr und mehr Menschen zugänglich. Dies führt zu einem Verschwinden von alten Technologien bzw. kompletter Berufszweige. Die folgendene Grafik zeigt die Anzahl der Jahre, bis die aufgeführten Technologien eine Reichweite von 50 Millionen Nutzern erlangt hatten. So hatte Facebook bereits nach 3,5 Jahren 50 Millionen Nutzer. Das Telefon benötigt 75 Jahre für 100 Millionen Nutzer, das Fernsehen benötigte 13 Jahre und Candy Crush nur 1,3 Jahre bis es eine Nutzerschaft von 50 Millionen erreicht hatte.

Definition Agilität

Schnelle Reaktions-(Adaptions-)fähigkeit in einer komplexen Welt. Siehe hierzu auch "Die Komplexität von Scrum bzw. eines Projektes kann durch die Stacey Matrix dargestellt werden".

Die Themen Unsicherheit und Komplexität könne auch gut durch das Akronym VUCA beschrieben werden, welches sich aus den vier Begriffen Volatilität (Unstet - schneller Wandel - Flüchtigkeit), Unsicherheit (Unberechenbarkeit - keine Strategien), Komplexität (Multioptionen -
Vernetzung - Schnelligkeit) und Ambiguität (Mehrdeutigkeit - Multifaktoriell - verwirrend) zusammensetzt.


AGILE => "Always run a changing system" anstatt "Never change a running system"!

Montag, 25. Januar 2021

Raspberry Pi - statische IP bzw. initiale IP-Adresse vergeben (cmdline-txt)

Betreibt man den Raspberry Pi ohne Tastatur und Monitor, kann man sich per SSH (Raspberry Pi Stretch Lite - Installation incl. SSH Fernsteuerung) von einem anderen Rechner aus einloggen. In der Regel erfolgt per default die Vergabe der IP-Adresse automatisch per DHCP.


Mit der folgenden Methode lässt sich eine feste IP-Adresse direkt per SD-Karte (cmdline-txt) vergeben

In der Datei "cmdline.txt" auf der SD-Karte (vFat-Partition) an der ersten und einzigen Zeile die folgende Syntax hinzufügen:

ip=<Raspi-ip>:<Netboot-ip>:<Gateway-ip>:<Subnetzmaske>:<Hostname>:<Netzwerkkarte>:<Autoconf>

Beispiel:

ip=192.168.1.111::192.168.1.1:255.255.255.0:pihole:eth0:off

Bedeutung der oben genannten Felder:

  • Raspi-ip: IP-Adresse die der Raspberry bekommen soll
  • Netboot-ip: IP eines Netboot-Servers, wird in der Regel nicht benötigt
  • Gateway-ip: IP des Routers
  • Subnetzmaske: Netzmaske, in der Regel 255.255.255.0
  • Hostname: Hostname des Raspberry Pi (im LAN ansprechbar, optional)
  • Netzwerkkarte: das Netzwerk-Gerät für die Zuweisung (z.B. eth0, wlan0)
  • Autoconf: Aktivierung/Deaktivierung der automatische Konfiguration (off)


Alternativ ist (im Nachgang) die folgende Methode (Anpassung der /etc/dhcpcd.conf) weiterhin gültig.

Samstag, 23. Januar 2021

PowerShell - Datum (Erstelldatum) von Dateien nachträglich ändern (rekursiv)

Möchte man das Erstelldatum von Dateien anpassen bzw. manipulieren, bietet sich das nachfolgende PowerShell-Script an.


Mit dem Befehl $dt = get-date 1.8.2020-13:45 lässt sich ein bestimmtes Datum setzen oder alternativ das aktuelle Datum verwenden.

Mit dem Befehl $User = [Environment]::UserName kann man den aktuellen Benutzernamen auslesen und so ggf. in der Variable "$scriptPath" verwendet werden.

Mit Hilfe von Get-ChildItem, kann man rekursiv und auch nur nach Bestimmten Dateien *.doc,*.pdf suchen.

Durch SetCreationTime wird für die jeweils gefundene Datei ein neues Erstelldatum gesetzt.
---

#$dt = get-date 1.8.2020-13:45
$dt = get-date

$User = [Environment]::UserName
#Write-Host $User.ToLower()

$scriptPath = "C:\Users\" + $User.ToLower() + "\OneDrive\"
#get the content of a directory you can use
$files = Get-ChildItem $scriptPath -Recurse #-Include *.doc,*.pdf

#loop
for ($i=0; $i -lt $files.Count; $i++) {
    #$outfile = $files[$i].FullName + "out"
    Write-Host "Found file - " + $files[$i].FullName -ForegroundColor Magenta
    [System.IO.File]::SetCreationTime($files[$i].FullName, $dt)
}

 

Mittwoch, 20. Januar 2021

Agile - Zusammenarbeit und Regeln für (virtuelle) verteile Teams

In der agilen Softwareentwicklung bietet z.B. Scrum bereits  Regeln, wie "Scrum: Werte & Prinzipien - Empowered, self-organized teams" und "Der Scrum Rahmen ist ein Zusammenspiel von der Organisation, dem Produkt und dem Team" vor. Gerade in Zeiten von Corona und Homeoffice empfiehlt es sicher daher für (virtuelle) verteile Teams Richtlinien zu definieren.


Folgende Grundsätze können als Basis für die Zusammenarbeit in virtuellen Teams verwendet werden:

  • Für alle Mitglieder im Team sollten Kernerreichbarkeitszeiten definiert werden, wie zum Beispiel von 09:00 bis 11:00 Uhr und von 13:00 bis 15:00 Uhr. In dieser Zeit sollte dann auch jeder zu erreichen sein.
    • Wichtig: Arbeiten die Teams ggf. in verschiedenen Zeitzonen, müssen diese Kernzeiten ggf. angepasst werden.
  • Eine "Definition of Done (DoD)" sollte definiert werden, damit allen im Team klar ist, ab wann einen Aufgabe wirklich als "erledigt" gilt.
  • Meetings bzw. Regeltermine sollte nur während der Kernarbeitszeiten stattfinden.
  • In einem kurzen "Daily" Meeting analog dem "Daily Scrum" sollte der Fortschritt aller Mitglieder transparent kommuniziert werden.
  • Vorgaben für den Krankheitsfall bzw. eine Vertretung innerhalb des Teams müssen vorab definiert werden.

Fazit: Die o.g. Vorgaben können nur als Idee dienen. Die Teams sollten gemeinsam die Regeln definieren und nach einer gewissen Zeit immer wieder auf den Prüfstand stellen. Gerade hierbei spielt eine offene und ehrliche Feedbackkultur eine wichtige Rolle.

Samstag, 16. Januar 2021

Effizienz - "Arbeit geht den Weg des geringsten Widerstandes"

Frau Hess zieht in dem Buch "Digital anders arbeiten: Effektive Methoden und neue Tools für den heutigen Büroalltag" den Schluss, "Wer ... fleißig alles zuverlässig abarbeitet, kann sich darauf verlassen, dass ihm oder ihr immer mehr Aufgaben zuwaschen". Siehe auch "Bill Jensen - Radikal vereinfachen: Den Arbeitsalltag besser organisieren und sofort mehr erreichen".


Bill Jensen hat hierzu ein LOGIK-Modell entwickelt, welches für E-Mails (ähnlich zu meinem Blogeintrag E-Mail - Posteingang mit der richtigen Strategie bearbeiten (Inbox Zero Methode)) , aber auch für alle anderen Aufgaben/Taks/ToDos angewendet werden kann.

  • Limits: Gehört diese Aufgabe zu den laufenden Projekten?
  • Ordnung: Sind die nächsten Schritte klar erkennbar?
  • Gewünschtes Resultat: Was soll als Ergebnis herauskommen?
  • Instrumente: Wie und womit werden Sie den Auftrag erledigen?
  • Konsequenz: Kommt für mich etwas dabei heraus?


Fazit: Erfüllt eine Aufgabe oder E-Mail nicht diese Kriterien, dann sollte dies Thema erstmal nicht weiter beachtet werden. E-Mails könnten in dem Fall sogar direkt gelöscht werden. Vermutlich macht aber eine sehr einseitige Anwendung des MOGIK-Modell wiederum nicht in jedem Fall Sinn. Die Kriterien sollten vielmehr ein Anstoser zum Nachdenken sein.

Mittwoch, 13. Januar 2021

PowerShell - Ausführung von Skripts auf diesem System deaktiviert (enable execution)

Nach zum Beispiel einer Neuinstallation von Windows 10 ist das Ausführen von PowerShell Scripten (z.B. https://sebastianhemel.blogspot.com/2020/12/deutscher-pressevertrieb-pdf-dateien.html) nicht mehr erlaubt. Eine Aktivierung ist mit dem folgenden Befehl möglich.

Meldung: Ausführung von Skripts auf diesem System deaktiviert

Die Datei "xyz.ps1" kann nicht geladen werden, da die Ausführung von Skripts auf diesem System deaktiviert ist. Weitere Informationen finden Sie unter
"about_Execution_Policies" (https:/go.microsoft.com/fwlink/?LinkID=135170).
    + CategoryInfo          : Sicherheitsfehler: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnauthorizedAccess


Die Ausführung von PowerShell-Scripts zulassen

Die Windows PowerShell mit der Option "Als Administrator ausführen" starten.
Hinweis: Nur Mitglieder der Administratorgruppe auf dem Computer können die Ausführungsrichtlinie ändern.

Die Ausführung nicht signierter Skripte wird mit dem folgenden Befehl aktiviert:

Set-Execution-Politik ferngesteuert


Mittwoch, 6. Januar 2021

Microsoft Outlook 2016 2019 - Löschsymbol (Kreuz, X) fehlt in der Nachrichtenvorschau (Posteingang, Liste)

Auf meinem neuen Notebook mit Outlook 2019 war das Löschsymbol (rotes "X"), welches bei jeder einzelnen E-Mail in der Nachrichtenvorschau (Liste) angezeigt und das direkte Löschen der selektierten E-Mail ermöglicht, verschwunden.

Dies ist immer dann der Fall, wenn der "Touchscreen" (Fingermodus) Modus aktiv ist!

Um das "X" bzw. Löschsymbol wieder anzuzeigen, muss der "Mausmodus" aktiv sein!

Dafür muss man ggf. über die Symbolleiste den "Touch/Mausmodus" einblenden und den "Mausmodus" aktivieren. Jetzt sollte auch wieder das Löschsymbol neben den E-Mails angezeigt werden, wenn man mit der Maus Maus darüber fährt.

Samstag, 2. Januar 2021

Raspberry Pi-hole - Update Pi-hole

Derzeit kann man Pi-hole noch nicht über die Weboberfläche aktualisieren, da u.a. der Server neu gestartet werden muss.

Der folgende Befehl muss daher per Konsole (SSH-Verbindung) eingegeben werden:

pihole -up

Siehe auch Raspberry Pi-hole - Installation.

Android - (App) APK Decompiler und Quellcode anzeigen

Mit Hilfe von einem APK Decompiler wie z.B. "jadx - Dex to Java decompiler" ist es möglich eine kompilierte Android App wieder zurück in den Source Code umzuwandeln. Dies ist oft der erste Schritt um im Quellcode sensible Informationen (z.B. Passwörter eines Admin-Accounts oder Zugangsdaten zu Datenbanken bzw. Schnittstellen) zu finden.

Des Weiteren ist es möglich die Funktionsweise bzw. Programmierung der jeweiligen App genauer nachvollziehen umso IT-Security Schwachstellen zu finden. 


Die APK (Android Package Kit) Datei der Android App wird benötigt

Um an die Datei zu kommen, gibt es verschieden Möglichkeiten:

  1. APK Datei vom Smartphone auf PC kopieren mit Hilfe von ADB, wie man die Android Debug Bridge installieren kann, hatte ich bereits in einem älteren Artikel ABD Installation Amazon Fire-Tablet - Spezialangebote (Werbung) entfernen beschrieben.
    • adb shell pm list packages (z.B. "com.example.appname")
    • adb shell pm path com.example.appname (Pfadnamen der App anzeigen)
    • adb pull /data/app/com.example.appname-2.apk D:\Downloads
  2. Installierte Apps im Total Commander anzeigen und auf die SD-Karte oder WebDAV kopieren.
  3. Mit Hilfe von Sideloading die Android-App aus einem anderen Marketplace herunterladen.

Update 05.06.2022

APK-Quellen im Internet:


Dekompilieren

Mit einem Dekompilier wandelt man den Bytecode (Maschinen- oder Objektcode) wieder lesbaren Quellcode in eine höhere Programmiersprache um. Dabei wird versucht, den Vorgang des Kompilierens umzukehren und den Quellcode wieder bestmöglich herzustellen.

Hinweis: Das Dekompilieren darf nicht mit dem Disassemblern verwechselt werden, denn die Assemblersprache ist nur eine andere Darstellung des kompilierten Maschinencodes!

Dekompilieren einer APK Datei mit jadx => JAVA

Update 05.06.2022

Die APK Datei wird mit Hilfe von jadx direkt in die entsprechenden Java-Dateien umgewandelt.

Download des aktuellen Release von github: https://github.com/skylot/jadx/releases/latest

Am einfachsten verwendet man "jadx" mit einer grafischen Benutzeroberfläche. Der Start erfolgt mit der Datei jadx-gui-1.2.0.exe . Anschließend wählt man im Fenster die APK Datei aus, welche dekompiliert werden soll.

Wurde die Datei ausgewählt, dekompiliert jadx sie und stellt auf der linken Seite der Anwendung alle Java-Pakete und -Dateien der APK aufgelistet bereit. Hinweis: Verwendet die App als native Code Basis Cordova, basiert die App selbst auf Javascript (der Quellcode befindet sich in dann unter Resources / Assets / www).

Jetzt ist es möglich nach sensiblen Informationen z.B. http(s)://, passw, key, user, rsa, aes, sslsocket und secret zu suchen.

Dekompilieren per Webseite

Zum Beispiel die Webseiten http://www.decompileandroid.com/ und http://www.javadecompilers.com/apk bieten das Dekompilieren als Online-Service an.