2022-11-07

Buch: Fluent Python: Clear, Concise, and Effective Programming

 Fluent Python, 2nd Edition

Ich habe die erste Auflage irgendwie verpasst und bin über einen Vortrag des Autors auf einer Python Conference auf das Buch gestoßen.

Keine leichte Kost und sicher nichts für Anfänger. Oder doch? Vielleicht is die breite der Informationen, bei der auch der langjährigen Python Benutzer (25+ Jahre in meinem Fall) noch viel mitnehmen kann. Auch die Verweise auf anderen Ressourcen am Ende jeden Kapitels sind wirklich eine Bereicherung. 

Achtung: Es gibt noch ein anderes Buch: "Fluent Python, Programming for Beginners". Dieses ist hier nicht gemeint,


2022-08-31

Online resizing a partition on Ubuntu

Just to remember myself: How to a resize a file system at runtime on Ubuntu. In this example I want to increase the size of /dev/sda3 - my root partition on a virtual dev system.

  • Extend the "physical" disk, in my case in VMware vSphere
  • Then run then following commands as root
    • echo 1 > /sys/block/sda/device/rescan  # make sure the OS rescan the disc
    • growpart /dev/sda 3  # grow the partition on the disk
    • resize2fs /dev/sda3   # grow the file system on the partition


2020-04-13

MoneyMoney von Python aus steuern

Ich benutze das hervorragende Programm MoneyMoney unter MacOS zum abfragen aller meiner Banktransaktionen. Mit war bekannt, dass es eine API in Lua gibt, mit denen man Erweiterungen schreiben kann. Unter anderem kann man eine Erweiterung laden, dass einem alle Amazon Einkäufe der letzten 23 Jahre .... aber lassen wir das.

Vor kurzem habe ich gelernt, dass man MoneyMoney auch via AppleScript fernsteure kann.

Also habe ich eine kleine Python Bibliothek zum testen gebaut. Näheres auf https://github.com/MirkoDziadzka/py-money 

MacOS Startup Sound

Für seine neuen Laptop Modelle hat Apple den Startsound abgestellt. Normalerweise ist das ok. Wenn man aber öfter mal spezielle Boot Tastencodes benutzen will, Ist iss schon ganz nett akustisch zu erfahren wann man die drücken soll.

Kurz:

$ sudo nvram StartupMute=

leistet das gewünschte. Wenn man den wieder ausschalten will, einfach das 00  durch 01 ersetzen.

Buch: The Pragmatic Programmer, 2nd edition

Seit kurzem gibt es die Neuauflage vom "The Pragmatic Programmer". Ein Buch was ich jedem Softwareentwickler nur empfehlen kann.

Die Autoren geben 100 Grundregeln, an denen man den eigenen Softwareentwicklungsprozess überprüfen kann. Alle mit Beispielen und Begründungen hinterlegt.

2018-11-07

MacOS file system check

To see if you new APFS file system is consistent,  you can:

$ sudo fsck_apfs -ln /dev/disk1s1

Let me explain this in details:

  • sudo - assume admin rights
  • fsck_apfs - the low level program to check an APFS file system
  • -ln - scan this in "live mode" and do "no changes"
  • /dev/disk1s1 - the name of your main disk. You can find this by either doing a "df ~" or "diskutil list". The later gives the following output on my system:


$ diskutil list
/dev/disk0 (internal):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                         500.3 GB   disk0
   1:                        EFI EFI                     314.6 MB   disk0s1
   2:                 Apple_APFS Container disk1         500.0 GB   disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +500.0 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            478.9 GB   disk1s1
   2:                APFS Volume Preboot                 47.5 MB    disk1s2
   3:                APFS Volume Recovery                512.8 MB   disk1s3
   4:                APFS Volume VM                      1.1 GB     disk1s4

 If this tells you that you should repair your disk, you must boot your Mac into single user mode (console mode). To do this, reboot and press CMD+S during reboot. You will get a unix console with a root prompt.

here you can run

# fsck_apfs -y /dev/disk1s1

-y means here: repair without asking

2018-07-07

Vortrag: A better language for OWASP Core Rule Set

Ich habe unser Projekt für eine bessere Sprache für das OWASP Core Rule Set auf dem Core Ruleset Summit am Rande der AppSec EU in London vorgestellt.

Die Folien und alle Materialien gibt es hier auf der Projektseite https://github.com/avinetworks/owasp-crs-technical-discussion

2017-01-02

Replizieren von SVN repositories

Ja, ich weiss. SVN ist nicht mehr hip und alle nehmen git. Aus "historischen Gründen" lauft hier aber noch SVN.

Für Backup, Redundanz und eventuell offline work, möchte man manchmal read-only Replikas von SVN haben.

Alles gut dokumentiert, hier eine Kurz-Zusammenfassung:

1. Auf dem Mirror das repository erzeugen:

$ svnadmin create "${SVN_MIRROR}/${REPO_NAME}"

2.  Den pre-revprop-change hook anlegen

$ cat "${SVN_MIRROR}/${REPO_NAME}/hooks/pre-revprop-change"
#!/bin/bash 
exit 0

3. Die Replika initialisieren:

$ svnsync init --source-username "${USERNAME}" "file:///${SVN_MIRROR}/${REPO_NAME}" "${REMOTE_REPO}"

4. Initiales und inkrementelles replizieren

$ svnsync sync --source-username "${USERNAME}" "file:///${SVN_MIRROR}/${REPO_NAME}"


2016-03-06

Nespresso Pixie reparieren

Letztes Wochenende hat meine Nespresso Pixie den Geist aufgegeben.

Ja, ich trinke gerne einen Espresso nach dem Aufstehen und alle anderen Methoden sind mir persönlich zu aufwendig. Empfehlen kann ich übrigens die Kapseln von Dallmayr, die einzigen die (mir) nicht schlechter schmecken als die Nespresso Kapseln selber.

Aber letztes Wochenende gab die Ihren Geist auf. Das Wasser kam nicht mehr vorne raus, sondern unten aus dem Gehäuse.

Erstmal geflucht. Dann entschieden, das Ding mal aufzuschrauben. Für die  Seitenwände braucht mal Torx Schraubenzieher, aber dafür liegt ja das iFixit Set rum. Geht also auch für andere Dinge als Rechner.

Nur, nachdem die Schrauben raus sind, hat man erstmal nichts gewonnen. Die Seitenwände sind immer noch fest. Also mit 'ner Plastikkarte die Wände abgehebelt.

Danach sieht man nicht viel mehr. Die Maschine is immer noch ein kompakter Kunststoffblock mit kleinen Öffnungen und es ist nicht klar wie sie weiter.


Aber ich habe schon drei lose Teile gesehen. Später gelernt, daß das Teile vom Schalldämpfer sind. Die sind sind nach 2 Jahren einfach so abgefallen, anscheinend hat sich as Schraubgewinde links gelöst.


Reparatur ganz einfach, man muß nur rankommen. Auf dieses weiße Ding muss das wieder rauf.



Also weiter auseinanderbauen. Aber keine Ahnung wie.

Google angeworfen und gesucht. Aber es ist wirklich schwer, hier was zu finden. Natürlich gibt es nichts bei Nespresso. Warum sollte man auch sowas veröffentlichen.
Am Ende habe ich ein Service Manual für die Nespresso Pixie EF 280 auf manualslib  gefunden.

Nicht ganz meine Machine, aber besser als nichts.

Zwei Plastik Clips mußte ich abbrechen, aber an einer Stelle, an der es nicht stört. Ich habe bis heute keine Ahnung, wie der Ring um den Wasserfilter sonst abgehen soll.




Aber am Ende hat es funktioniert. Es tropft nicht mehr und ich bekommen wieder meinen Espresso nach dem Aufstehen.

Mein Fazit:

Hersteller sollten verdammt nochmal sowas wie ein Repair Manual auf ihre Webseite packen. Wenn ich das nicht auf manualslib gefunden hätte, hätte ich die Machine wegwerfen können.
Es wäre auch nicht schlecht, Schrauben statt Plastik Clips zu nehmen. Ich bezweifle, dass man die Pixie ohne Anleitung auseinanderbekommt. Mit Schrauben wäre das einfacher.

Update: Bilder ergänzt






2015-11-18

Vortrag: HTTP/2 Was ist das und warum will man es haben


Im Rahmen des Münchener OWASP Stammtisch habe ich was zum Thema HTTP/2 erzählt.

Die Folien gibt es wie immer direkt auf meiner Webseite zum download.

2014-05-20

MacOS start scripte

Für einen Unix Benutzer gibt es unter MacOS viele ungewohnte Dinge, zum Beispiel start scripte. Das wird auf MacOS alles vom launchd übernommen.

Hier mal zur Dokumentation ein Beispiel, wie man ein Programm zur boot Zeit als root ausführen lassen kann.

Mein konkretes Problem: Ich benutze tinc als Lösung, um alle meine Rechner via VPN zu verbinden. Ich würde gerne zur Boot Zeit folgendes Kommando ausführen

/usr/local/sbin/tincd  -n dziadzka.net
Unter MacOS erstelllt man hierzu eine plist Datei im XML format und kopiert sie nach /Library/LaunchDaemons.

Konkret lege ich eine Datei /Library/LaunchDaemons/net.dziadzka.tincd.plist mit dem folgende Inhalt

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>KeepAlive</key>
    <true/>
    <key>Label</key>
    <string>net.dziadzka.tincd</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/sbin/tincd</string>
        <string>-n</string>
        <string>dziadzka.net</string>
        <string>-D</string>
    </array>
</dict>
</plist>
Im wesentlichen ist das eine 3-elementige property liste mit den werten

Label: net.dziadzka.tincd
KeepAlive: true
ProgrammArguments: ["/usr/local/sbin/tincd", "-n", "dziadzka.net", "-D"]

KeepAlive == true heist, dass sich der Launchd darum kümmert, das Programm nach unfreiwilliger beendigung neu zu starten. Deswegen auch das zusätzliche Argument "-D" für den tincd, damit der sich nicht in den Hintergrund verabschiedet.









2014-03-18

Vortrag: Vulnerability Management Systeme am Beispiel von ThreadFix

Im Rahmen des Münchener OWASP Stammtisch habe ich kurz das Vulnerability Management Tool ThreadFix vorgestellt.

Die Folien gibt es wie immer auf direkt meiner Webseite zum download.


2013-12-04

MacOS: Sparse Bundle kleiner machen

Aus bestimmten Gründen(tm) benutze ich unter MacOS eine virtuelle Festplatte für den Source Code eines Projekts. Diese virtuelle Festplatte ist unter MacOS als ein Sparse Bundle implementiert.

Das heist, diese virtuelle Festplatte wächst automatisch, wenn mehr Platz gebraucht wird. Leider wird sie nicht automatisch kleiner, wenn Daten gelöscht werden. Das muss man manuell anstossen:

$ hdiutil compact -batteryallowed ~/Documents/WOD.sparsebundle
Starting to compact…
Reclaiming free space…
...............................................................................
Finishing compaction…
Reclaimed 60.1 GB out of 83.8 GB possible.

2013-11-20

Vortrag: Was eine WAF (nicht) kann

Am Dienstag habe ich die 2013 Ausgabe von meinem Vortrag "Was eine WAF (nicht) kann" im Rahmen des OWASP Stammtisch München gehalten.

Die Folien gibt es wie immer direkt auf meiner Webseite.

2013-08-08

Wie kopiere ich ein ISO Image auf einen USB Stick (unter MacOS)

Da ich das öfter gefragt werde, hier eine Kurzanleitung.

Es braucht keine Spezielprogramme, im Prinzip, genauso wie unter Linux mit dd.

Vorbemerkung: Das dd Kommando weiter unten überschreibt die Daten ohne nachfragen. Also bitte aufpassen, das man wirklich den USB Stick überschreibt und nicht was anderes.


1. USB stick einstecken

2. Alle "Platten" anzeigen lassen.

$ diskutil list
....
/dev/disk5
#:                       TYPE NAME                    SIZE       IDENTIFIER
0:                 FDisk_partition_scheme         *4.0 GB     disk5
1:                 DOS_FAT_32 UNTITLED    4.0 GB     disk5s1


Bei mir ist disk5 die richtige. Das merken wir uns mal

3. abmounten om USB Stick

$ diskutil unmountDisk /dev/disk5
Unmount of all volumes on disk5 was successful

Jetzt ist der USB Stick im Finder nicht mehr zu sehen, aber mit diskutil sieht man ihn immer noch
$ diskutil list
....
/dev/disk5
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                 FDisk_partition_scheme         *4.0 GB     disk5
   1:                 DOS_FAT_32 UNTITLED    4.0 GB     disk5s1

4. Kopieren der Daten auf den USB Stick
$ sudo dd bs=1024k if=~/Downloads/Fedora-Live-LXDE-x86_64-19-1.iso of=/dev/disk5
Password:
691+0 records in
691+0 records out
724566016 bytes transferred in 1141.584431 secs (634702 bytes/sec)
Das sudo brauchen wir hier, weil wir ansonsten keine Rechte haben, direkt auf das device /dev/disk5 zuzugreifen.
  • bs ist hier die zu verwenden lese/schreibe block size. Wenn die nicht gesetzt wird, nimmt dd 512byte und es dauert ewig.
  • if ist das input file, hier ein Fedora ISO image
  • of ist das output file, hier unser USB Stick

Am Ende muss die Partition eventuell noch bootfähig gemacht werde
$ sudo fdisk /dev/disk5
Und dann mit f die entsprechende Partition markieren

2013-08-05

Wie mache ich aus Bildern einen Film

Wir haben auf der OHM2013 mit 'ner Webcam unser Village aufgenommen. Jede Sekunde ein Bild. Das Resultat sind ~300000 Einzelbilder.

Nun wollte ich aus diesen Einzelbildern einen kleinen Zeitrafferfilm machen.

ffmpeg scheint da das Tool der Wahl zu sein, und schnell wurden auch dir richtigen Optionen gefunden.


$ ffmpeg -pattern_type glob -i '20130801*.jpg' day2.mp4

Leider stieg das nach ein paar Minuten mit der Fehlermeldung

20130801*.jpg: Input/output error

aus. Sehr hilfreich. Not.

Stellte sich nach etwas suchen heraus, das wir einige leere Files unter den Bildern hatten.

Ein

$ find . -name \*.jpg -size 0 | xargs rm

hat geholfen.




2013-02-05

Windows Batch File quirks

Musste mal ein Windows Batch file debuggen:

if SOMETHING_TRUE (
   SET FOO=42
   SET BAR=%FOO%
)
echo %FOO%
echo %BAR%

gibt was aus? Ja, FOO ist dann 42, aber BAR ist ein leerer String. Gut, man kann's erklären aber intuitiv ist das sicher nicht, oder?

Wie repariere ich unter MacOS eine Platte mit defektem Journal

Auf einer meiner Backup Platten (MacOS / Time Machine) war das Journal defekt. Die Platte lässt sich nicht mehr mounten.

Disk Utility ist nicht sehr hilfreich, Repair sagt alles in Ordnung (aber das Journal ist kaputt), Verify sagt, das Journal ist kaputt.

Also das Journal vom HFS+ abstellen. Geht ja auch ohne. Nun kann man das mit den üblichen MacOS tools nur bei einem gemounteten File System abstellen, mounten geht aber nicht ...

Kleine Internet Recherche: Wie bei Linux auch, wird bei MacOS von den disktools ein filesystem spezifisches Programm zum reparieren benutzt, dass kann dann eventuell auch etwas mehr.

Hier: Das Journal auf einem nicht gemountetem Filesystem abschalten:
/System/Library/Filesystems/hfs.fs/hfs.util -N /dev/diskNsM
Danach geht auch das Repair/Verify gut und die Platte lässt sich wieder benutzen - und erstmal backup-en

2012-11-08

German OWASP Day 2012

Gestern war der dritte German OWASP Day, diesmal wieder in München. Die Veranstaltung ist in den letzten Jahren richtig gut geworden, ich konnte mich oftmals nicht zwischen den 2 (oder 3)  Tracks entscheiden.

Nächstes Jahr wird das deutsche Chapter der OWASP die AppSec EU in Hamburg durchführen. Sicher eine sehr besuchenswerte Veranstaltung.


2012-10-30

Vortrag: Praktische Anwendungen von Metaklassen

Heute habe ich auf der PyCon DE 2012 einen Vortrag zum Thema "Praktische Anwendungen von Metaklassen" gehalten. Die Folien und etwas Beispiel Code gibt es auf meiner Webseite.