<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://kb.son-schiet.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Martin</id>
	<title>Meine persönliche Wissensdatenbank - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://kb.son-schiet.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Martin"/>
	<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Spezial:Beitr%C3%A4ge/Martin"/>
	<updated>2026-07-02T09:01:57Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=M%C3%B6glichkeiten_formatierter_Ausgabe&amp;diff=161</id>
		<title>Möglichkeiten formatierter Ausgabe</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=M%C3%B6glichkeiten_formatierter_Ausgabe&amp;diff=161"/>
		<updated>2026-05-09T04:51:35Z</updated>

		<summary type="html">&lt;p&gt;Martin: Die Seite wurde neu angelegt: „Es gibt mehrere Möglichkeiten:  # klassisch # mit Maske # Methodenaufruf  ===Klassische Formatierung=== &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt; var1=&amp;#039;Welt&amp;quot; print(f&amp;quot;Hallo {var1}!&amp;quot;) &amp;lt;/syntaxhighlight&amp;gt;  Ergibt: Hallo Welt!  ===Formatierung mit Maske=== &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt; var1=&amp;#039;Welt&amp;quot; var2=&amp;quot;Wetter&amp;quot; maske=&amp;quot;Hallo {} mit schönem {}!&amp;quot; print(maske.format(var1, var2) &amp;lt;/syntaxhighlight&amp;gt;  Ergibt: Hallo Welt mit schönem Wetter!  ===Methodenaufruf=== &amp;lt;syntaxhigh…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Es gibt mehrere Möglichkeiten:&lt;br /&gt;
&lt;br /&gt;
# klassisch&lt;br /&gt;
# mit Maske&lt;br /&gt;
# Methodenaufruf&lt;br /&gt;
&lt;br /&gt;
===Klassische Formatierung===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
var1=&#039;Welt&amp;quot;&lt;br /&gt;
print(f&amp;quot;Hallo {var1}!&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ergibt: Hallo Welt!&lt;br /&gt;
&lt;br /&gt;
===Formatierung mit Maske===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
var1=&#039;Welt&amp;quot;&lt;br /&gt;
var2=&amp;quot;Wetter&amp;quot;&lt;br /&gt;
maske=&amp;quot;Hallo {} mit schönem {}!&amp;quot;&lt;br /&gt;
print(maske.format(var1, var2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ergibt: Hallo Welt mit schönem Wetter!&lt;br /&gt;
&lt;br /&gt;
===Methodenaufruf===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
heute=now()&lt;br /&gt;
print(heute.strftime(&#039;%d.%m.%Y&#039;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gibt das aktuelle Datum im Format dd.mm.YYYY aus&lt;br /&gt;
[[Kategorie:Python]]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Pypthon&amp;diff=160</id>
		<title>Pypthon</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Pypthon&amp;diff=160"/>
		<updated>2026-05-09T04:43:10Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* Snipets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Python]]&lt;br /&gt;
==Programme==&lt;br /&gt;
Shebang für Python-Programme:&lt;br /&gt;
 #!/usr/bin/env python3&lt;br /&gt;
&lt;br /&gt;
===Snipets===&lt;br /&gt;
Lösungen für Telaufgaben&lt;br /&gt;
&lt;br /&gt;
* pandas: [[Prüfen, ob Variable NaN (keine Zahl) oder ein Zeitstempel ist]]&lt;br /&gt;
* [[Möglichkeiten formatierter Ausgabe]]&lt;br /&gt;
&lt;br /&gt;
===SHA256-Checksummen-Checker===&lt;br /&gt;
Keine besondere Erfinderhöhe. Daher ohne Copyright, sondern Freeware.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem:&#039;&#039;&#039; Wenn man im Internet Dateien zum Download angeboten bekommt, kann man die Datenintegrität oft anhand eines angezeigten SHA256-Hashes überprüfen. Dazu existieren unter allen Betriebssystemen Shell-Tools, um den Hasch einer Datei zu berechnen.&lt;br /&gt;
&lt;br /&gt;
Unter Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;sha256sum&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das Resultat kann man dann mit dem auf der Webseite vorgegebenen Hash-String vergleichen. Das finde ich eher mühsam; warum kann man den Hash nicht gleich mit prüfen? Für GTK gibt es diverse Tools und einige können auch die Vorgabe gleich mit prüfen. GTK finde ich aber übertrieben. Das kann gern in der Konsole laufen.&lt;br /&gt;
&lt;br /&gt;
Die schafft mein kleines Progrämmchen shc.py (sha256-check):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
import hashlib&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
version 		= &#039;\nSHA256-Checker version 0.1 Free and open source software\n&#039;&lt;br /&gt;
helptext		= &amp;quot;Help: run parameters are: filename expected-sha256-string\n&amp;quot;&lt;br /&gt;
txt_color_gn	= &amp;quot;\033[0;32m&amp;quot; # green colored text&lt;br /&gt;
txt_color_rd 	= &amp;quot;\033[0;31m&amp;quot; # red colored text&lt;br /&gt;
txt_color_wt	= &amp;quot;\033[0;0m&amp;quot;  # white colored text (default)&lt;br /&gt;
&lt;br /&gt;
def calculate_sha256(filename, chunk_size=65536):&lt;br /&gt;
    sha256 = hashlib.sha256()&lt;br /&gt;
    with open(filename, &#039;rb&#039;) as f:&lt;br /&gt;
        while True:&lt;br /&gt;
            data = f.read(chunk_size)&lt;br /&gt;
            if not data:&lt;br /&gt;
                break&lt;br /&gt;
            sha256.update(data)&lt;br /&gt;
    return sha256.hexdigest()&lt;br /&gt;
&lt;br /&gt;
# probe reading parameters&lt;br /&gt;
try:&lt;br /&gt;
    filename = sys.argv[1]&lt;br /&gt;
    hashvalue= sys.argv[2]&lt;br /&gt;
except IndexError:&lt;br /&gt;
    # in case of index error, print helpstring and exit&lt;br /&gt;
    print(version, &amp;quot;\n&amp;quot;, helptext, sep=&#039;&#039;) # sep=&#039;&#039; prevents leading space in output line&lt;br /&gt;
    sys.exit() # program ends here&lt;br /&gt;
&lt;br /&gt;
hashresult=calculate_sha256(filename)&lt;br /&gt;
if hashresult== hashvalue:&lt;br /&gt;
    print(version, txt_color_gn, &amp;quot;\nCheck OK:&amp;quot; ,hashresult) # output text in green&lt;br /&gt;
else:&lt;br /&gt;
    print(version, txt_color_rd, &amp;quot;\nCheck fail! Calculated result:\n&amp;quot;, hashresult, sep=&#039;&#039;) # output text in red&lt;br /&gt;
&lt;br /&gt;
print(txt_color_wt, &amp;quot;\nDone.\n&amp;quot;) # regular end of program&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Start ohne Parameter zeigt an, welche Parameter nötig sind und bricht dann ab:&lt;br /&gt;
&lt;br /&gt;
# Parameter: zu prüfende Datei&lt;br /&gt;
# Parameter: erwarteter sha256-String&lt;br /&gt;
&lt;br /&gt;
Vor Anwendung unter Linux: &amp;lt;pre&amp;gt;chmod +x shc.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um es ausführbar zu machen.&lt;br /&gt;
&lt;br /&gt;
Was das Programm nicht kann:&lt;br /&gt;
# Per Link zum Kopieren bereitgestellten Hashes ist gelegentlich (?) ein &#039;sha256:&#039; vorangestellt. Dieser Prefix wird vom Skript nicht entfernt und führt zum Scheitern des Stringvergleichs; auch wenn er korrekt ist.&lt;br /&gt;
# Ist die angegebene Datei nicht vorhanden, bricht das Skript mit einer Fehlermeldung ab.&lt;br /&gt;
&lt;br /&gt;
Diese Eventualitäten kann man natürlich im Skript abfangen.&lt;br /&gt;
[[Kategorie:Python]]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Pr%C3%BCfen,_ob_Variable_NaN_(keine_Zahl)_oder_ein_Zeitstempel_ist&amp;diff=159</id>
		<title>Prüfen, ob Variable NaN (keine Zahl) oder ein Zeitstempel ist</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Pr%C3%BCfen,_ob_Variable_NaN_(keine_Zahl)_oder_ein_Zeitstempel_ist&amp;diff=159"/>
		<updated>2026-05-08T05:46:29Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* Pseudocode */ Formatierung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Python]]&lt;br /&gt;
==Problem==&lt;br /&gt;
Es gibt verschiedene Möglichkeiten, zu prüfen, ob eine Variable NaN ist (z.B. math.isnan(val). Das funktioniert wie erwartet, wenn die Variable NaN ist, ist sie jedoch nicht NaN, sondern wie in meinem Fall, ein Timestamp, tritt ein Fehler auf.&lt;br /&gt;
&lt;br /&gt;
==Lösung==&lt;br /&gt;
Damit reicht eine einfache Abfrage, ob die Variable NaN ist, nicht aus. Anstatt eines ELSE-Zweiges, muss ein Fehler abgefangen werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def getDate(d1, d2):&lt;br /&gt;
    datum2=datum1=d2.strftime(&#039;%d.%m.%Y&#039;)&lt;br /&gt;
    try:&lt;br /&gt;
        if math.isnan(d1):&lt;br /&gt;
            datum=datum2&lt;br /&gt;
    except TypeError:&lt;br /&gt;
        datum1=d1.strftime(&#039;%d.%m.%Y&#039;)&lt;br /&gt;
        maske=&#039;{}–{}&#039;&lt;br /&gt;
        datum=maske.format(datum1, datum2)&lt;br /&gt;
    return datum&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obige Lösung gibt ein Datum (d2) zurück, wenn d1==NaN ist.  &lt;br /&gt;
&lt;br /&gt;
Ist d1 nicht NaN, gibt sie zurück d1–d2.&lt;br /&gt;
&lt;br /&gt;
==Pseudocode==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
  if math.isnan(val):&lt;br /&gt;
    do_something&lt;br /&gt;
except TypeError:&lt;br /&gt;
  do_something_else&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tests==&lt;br /&gt;
Getestet mit pandas.&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Pr%C3%BCfen,_ob_Variable_NaN_(keine_Zahl)_oder_ein_Zeitstempel_ist&amp;diff=158</id>
		<title>Prüfen, ob Variable NaN (keine Zahl) oder ein Zeitstempel ist</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Pr%C3%BCfen,_ob_Variable_NaN_(keine_Zahl)_oder_ein_Zeitstempel_ist&amp;diff=158"/>
		<updated>2026-05-08T05:31:48Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* Lösung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Python]]&lt;br /&gt;
==Problem==&lt;br /&gt;
Es gibt verschiedene Möglichkeiten, zu prüfen, ob eine Variable NaN ist (z.B. math.isnan(val). Das funktioniert wie erwartet, wenn die Variable NaN ist, ist sie jedoch nicht NaN, sondern wie in meinem Fall, ein Timestamp, tritt ein Fehler auf.&lt;br /&gt;
&lt;br /&gt;
==Lösung==&lt;br /&gt;
Damit reicht eine einfache Abfrage, ob die Variable NaN ist, nicht aus. Anstatt eines ELSE-Zweiges, muss ein Fehler abgefangen werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def getDate(d1, d2):&lt;br /&gt;
    datum2=datum1=d2.strftime(&#039;%d.%m.%Y&#039;)&lt;br /&gt;
    try:&lt;br /&gt;
        if math.isnan(d1):&lt;br /&gt;
            datum=datum2&lt;br /&gt;
    except TypeError:&lt;br /&gt;
        datum1=d1.strftime(&#039;%d.%m.%Y&#039;)&lt;br /&gt;
        maske=&#039;{}–{}&#039;&lt;br /&gt;
        datum=maske.format(datum1, datum2)&lt;br /&gt;
    return datum&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obige Lösung gibt ein Datum (d2) zurück, wenn d1==NaN ist.  &lt;br /&gt;
&lt;br /&gt;
Ist d1 nicht NaN, gibt sie zurück d1–d2.&lt;br /&gt;
&lt;br /&gt;
==Pseudocode==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
  if math.isnan(val):&lt;br /&gt;
    do_something&lt;br /&gt;
  except TypeError:&lt;br /&gt;
    do_something_else&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tests==&lt;br /&gt;
Getestet mit pandas.&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Pr%C3%BCfen,_ob_Variable_NaN_(keine_Zahl)_oder_ein_Zeitstempel_ist&amp;diff=157</id>
		<title>Prüfen, ob Variable NaN (keine Zahl) oder ein Zeitstempel ist</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Pr%C3%BCfen,_ob_Variable_NaN_(keine_Zahl)_oder_ein_Zeitstempel_ist&amp;diff=157"/>
		<updated>2026-05-08T05:31:29Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* Programm */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Python]]&lt;br /&gt;
==Problem==&lt;br /&gt;
Es gibt verschiedene Möglichkeiten, zu prüfen, ob eine Variable NaN ist (z.B. math.isnan(val). Das funktioniert wie erwartet, wenn die Variable NaN ist, ist sie jedoch nicht NaN, sondern wie in meinem Fall, ein Timestamp, tritt ein Fehler auf.&lt;br /&gt;
&lt;br /&gt;
==Lösung==&lt;br /&gt;
Damit reicht eine einfache Abfrage, ob die Variable NaN ist, nicht aus. Anstatt eines ELSE-Zweiges, muss ein Fehler abgefangen werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def getDate(d1, d2):&lt;br /&gt;
    datum2=datum1=d2.strftime(&#039;%d.%m.%Y&#039;)&lt;br /&gt;
    try:&lt;br /&gt;
        if math.isnan(d1):&lt;br /&gt;
            datum=datum2&lt;br /&gt;
    except TypeError:&lt;br /&gt;
        datum1=d1.strftime(&#039;%d.%m.%Y&#039;)&lt;br /&gt;
        maske=&#039;{}–{}&#039;&lt;br /&gt;
        datum=maske.format(datum1, datum2)&lt;br /&gt;
    return datum&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Programm===&lt;br /&gt;
Obige Lösung gibt ein Datum (d2) zurück, wenn d1==NaN ist.  &lt;br /&gt;
&lt;br /&gt;
Ist d1 nicht NaN, gibt sie zurück d1–d2.&lt;br /&gt;
&lt;br /&gt;
==Pseudocode==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
  if math.isnan(val):&lt;br /&gt;
    do_something&lt;br /&gt;
  except TypeError:&lt;br /&gt;
    do_something_else&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tests==&lt;br /&gt;
Getestet mit pandas.&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Pr%C3%BCfen,_ob_Variable_NaN_(keine_Zahl)_oder_ein_Zeitstempel_ist&amp;diff=156</id>
		<title>Prüfen, ob Variable NaN (keine Zahl) oder ein Zeitstempel ist</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Pr%C3%BCfen,_ob_Variable_NaN_(keine_Zahl)_oder_ein_Zeitstempel_ist&amp;diff=156"/>
		<updated>2026-05-08T05:30:49Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* Lösung */ Tippfehler&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Python]]&lt;br /&gt;
==Problem==&lt;br /&gt;
Es gibt verschiedene Möglichkeiten, zu prüfen, ob eine Variable NaN ist (z.B. math.isnan(val). Das funktioniert wie erwartet, wenn die Variable NaN ist, ist sie jedoch nicht NaN, sondern wie in meinem Fall, ein Timestamp, tritt ein Fehler auf.&lt;br /&gt;
&lt;br /&gt;
==Lösung==&lt;br /&gt;
Damit reicht eine einfache Abfrage, ob die Variable NaN ist, nicht aus. Anstatt eines ELSE-Zweiges, muss ein Fehler abgefangen werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def getDate(d1, d2):&lt;br /&gt;
    datum2=datum1=d2.strftime(&#039;%d.%m.%Y&#039;)&lt;br /&gt;
    try:&lt;br /&gt;
        if math.isnan(d1):&lt;br /&gt;
            datum=datum2&lt;br /&gt;
    except TypeError:&lt;br /&gt;
        datum1=d1.strftime(&#039;%d.%m.%Y&#039;)&lt;br /&gt;
        maske=&#039;{}–{}&#039;&lt;br /&gt;
        datum=maske.format(datum1, datum2)&lt;br /&gt;
    return datum&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Programm==&lt;br /&gt;
Obige Lösung gibt ein Datum (d2) zurück, wenn d1==NaN ist.  &lt;br /&gt;
&lt;br /&gt;
Ist d1 nicht NaN, gibt sie zurück d1–d2.&lt;br /&gt;
&lt;br /&gt;
==Pseudocode==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
  if math.isnan(val):&lt;br /&gt;
    do_something&lt;br /&gt;
  except TypeError:&lt;br /&gt;
    do_something_else&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tests==&lt;br /&gt;
Getestet mit pandas.&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Pr%C3%BCfen,_ob_Variable_NaN_(keine_Zahl)_oder_ein_Zeitstempel_ist&amp;diff=155</id>
		<title>Prüfen, ob Variable NaN (keine Zahl) oder ein Zeitstempel ist</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Pr%C3%BCfen,_ob_Variable_NaN_(keine_Zahl)_oder_ein_Zeitstempel_ist&amp;diff=155"/>
		<updated>2026-05-08T05:29:48Z</updated>

		<summary type="html">&lt;p&gt;Martin: Check if NaN&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Python]]&lt;br /&gt;
==Problem==&lt;br /&gt;
Es gibt verschiedene Möglichkeiten, zu prüfen, ob eine Variable NaN ist (z.B. math.isnan(val). Das funktioniert wie erwartet, wenn die Variable NaN ist, ist sie jedoch nicht NaN, sondern wie in meinem Fall, ein Timestamp, tritt ein Fehler auf.&lt;br /&gt;
&lt;br /&gt;
==Lösung==&lt;br /&gt;
Damit reicht eine einfache Abfrage, ob die Variable NaN ist, nicht aus. Anstann eines ELSE-Zweiges, muss ein Fehler abgefangen werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def getDate(d1, d2):&lt;br /&gt;
    datum2=datum1=d2.strftime(&#039;%d.%m.%Y&#039;)&lt;br /&gt;
    try:&lt;br /&gt;
        if math.isnan(d1):&lt;br /&gt;
            datum=datum2&lt;br /&gt;
    except TypeError:&lt;br /&gt;
        datum1=d1.strftime(&#039;%d.%m.%Y&#039;)&lt;br /&gt;
        maske=&#039;{}–{}&#039;&lt;br /&gt;
        datum=maske.format(datum1, datum2)&lt;br /&gt;
    return datum&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Programm==&lt;br /&gt;
Obige Lösung gibt ein Datum (d2) zurück, wenn d1==NaN ist.  &lt;br /&gt;
&lt;br /&gt;
Ist d1 nicht NaN, gibt sie zurück d1–d2.&lt;br /&gt;
&lt;br /&gt;
==Pseudocode==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
  if math.isnan(val):&lt;br /&gt;
    do_something&lt;br /&gt;
  except TypeError:&lt;br /&gt;
    do_something_else&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tests==&lt;br /&gt;
Getestet mit pandas.&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Pypthon&amp;diff=154</id>
		<title>Pypthon</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Pypthon&amp;diff=154"/>
		<updated>2026-05-08T05:17:46Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* Programme */ Snipets&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Python]]&lt;br /&gt;
==Programme==&lt;br /&gt;
Shebang für Python-Programme:&lt;br /&gt;
 #!/usr/bin/env python3&lt;br /&gt;
&lt;br /&gt;
===Snipets===&lt;br /&gt;
Lösungen für Telaufgaben&lt;br /&gt;
&lt;br /&gt;
* pandas: [[Prüfen, ob Variable NaN (keine Zahl) oder ein Zeitstempel ist]]&lt;br /&gt;
&lt;br /&gt;
===SHA256-Checksummen-Checker===&lt;br /&gt;
Keine besondere Erfinderhöhe. Daher ohne Copyright, sondern Freeware.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem:&#039;&#039;&#039; Wenn man im Internet Dateien zum Download angeboten bekommt, kann man die Datenintegrität oft anhand eines angezeigten SHA256-Hashes überprüfen. Dazu existieren unter allen Betriebssystemen Shell-Tools, um den Hasch einer Datei zu berechnen.&lt;br /&gt;
&lt;br /&gt;
Unter Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;sha256sum&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das Resultat kann man dann mit dem auf der Webseite vorgegebenen Hash-String vergleichen. Das finde ich eher mühsam; warum kann man den Hash nicht gleich mit prüfen? Für GTK gibt es diverse Tools und einige können auch die Vorgabe gleich mit prüfen. GTK finde ich aber übertrieben. Das kann gern in der Konsole laufen.&lt;br /&gt;
&lt;br /&gt;
Die schafft mein kleines Progrämmchen shc.py (sha256-check):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
import hashlib&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
version 		= &#039;\nSHA256-Checker version 0.1 Free and open source software\n&#039;&lt;br /&gt;
helptext		= &amp;quot;Help: run parameters are: filename expected-sha256-string\n&amp;quot;&lt;br /&gt;
txt_color_gn	= &amp;quot;\033[0;32m&amp;quot; # green colored text&lt;br /&gt;
txt_color_rd 	= &amp;quot;\033[0;31m&amp;quot; # red colored text&lt;br /&gt;
txt_color_wt	= &amp;quot;\033[0;0m&amp;quot;  # white colored text (default)&lt;br /&gt;
&lt;br /&gt;
def calculate_sha256(filename, chunk_size=65536):&lt;br /&gt;
    sha256 = hashlib.sha256()&lt;br /&gt;
    with open(filename, &#039;rb&#039;) as f:&lt;br /&gt;
        while True:&lt;br /&gt;
            data = f.read(chunk_size)&lt;br /&gt;
            if not data:&lt;br /&gt;
                break&lt;br /&gt;
            sha256.update(data)&lt;br /&gt;
    return sha256.hexdigest()&lt;br /&gt;
&lt;br /&gt;
# probe reading parameters&lt;br /&gt;
try:&lt;br /&gt;
    filename = sys.argv[1]&lt;br /&gt;
    hashvalue= sys.argv[2]&lt;br /&gt;
except IndexError:&lt;br /&gt;
    # in case of index error, print helpstring and exit&lt;br /&gt;
    print(version, &amp;quot;\n&amp;quot;, helptext, sep=&#039;&#039;) # sep=&#039;&#039; prevents leading space in output line&lt;br /&gt;
    sys.exit() # program ends here&lt;br /&gt;
&lt;br /&gt;
hashresult=calculate_sha256(filename)&lt;br /&gt;
if hashresult== hashvalue:&lt;br /&gt;
    print(version, txt_color_gn, &amp;quot;\nCheck OK:&amp;quot; ,hashresult) # output text in green&lt;br /&gt;
else:&lt;br /&gt;
    print(version, txt_color_rd, &amp;quot;\nCheck fail! Calculated result:\n&amp;quot;, hashresult, sep=&#039;&#039;) # output text in red&lt;br /&gt;
&lt;br /&gt;
print(txt_color_wt, &amp;quot;\nDone.\n&amp;quot;) # regular end of program&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Start ohne Parameter zeigt an, welche Parameter nötig sind und bricht dann ab:&lt;br /&gt;
&lt;br /&gt;
# Parameter: zu prüfende Datei&lt;br /&gt;
# Parameter: erwarteter sha256-String&lt;br /&gt;
&lt;br /&gt;
Vor Anwendung unter Linux: &amp;lt;pre&amp;gt;chmod +x shc.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um es ausführbar zu machen.&lt;br /&gt;
&lt;br /&gt;
Was das Programm nicht kann:&lt;br /&gt;
# Per Link zum Kopieren bereitgestellten Hashes ist gelegentlich (?) ein &#039;sha256:&#039; vorangestellt. Dieser Prefix wird vom Skript nicht entfernt und führt zum Scheitern des Stringvergleichs; auch wenn er korrekt ist.&lt;br /&gt;
# Ist die angegebene Datei nicht vorhanden, bricht das Skript mit einer Fehlermeldung ab.&lt;br /&gt;
&lt;br /&gt;
Diese Eventualitäten kann man natürlich im Skript abfangen.&lt;br /&gt;
[[Kategorie:Python]]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Pypthon&amp;diff=153</id>
		<title>Pypthon</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Pypthon&amp;diff=153"/>
		<updated>2026-05-05T08:31:25Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* Programme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Python]]&lt;br /&gt;
==Programme==&lt;br /&gt;
Shebang für Python-Programme:&lt;br /&gt;
 #!/usr/bin/env python3&lt;br /&gt;
&lt;br /&gt;
===SHA256-Checksummen-Checker===&lt;br /&gt;
Keine besondere Erfinderhöhe. Daher ohne Copyright, sondern Freeware.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem:&#039;&#039;&#039; Wenn man im Internet Dateien zum Download angeboten bekommt, kann man die Datenintegrität oft anhand eines angezeigten SHA256-Hashes überprüfen. Dazu existieren unter allen Betriebssystemen Shell-Tools, um den Hasch einer Datei zu berechnen.&lt;br /&gt;
&lt;br /&gt;
Unter Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;sha256sum&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das Resultat kann man dann mit dem auf der Webseite vorgegebenen Hash-String vergleichen. Das finde ich eher mühsam; warum kann man den Hash nicht gleich mit prüfen? Für GTK gibt es diverse Tools und einige können auch die Vorgabe gleich mit prüfen. GTK finde ich aber übertrieben. Das kann gern in der Konsole laufen.&lt;br /&gt;
&lt;br /&gt;
Die schafft mein kleines Progrämmchen shc.py (sha256-check):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
import hashlib&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
version 		= &#039;\nSHA256-Checker version 0.1 Free and open source software\n&#039;&lt;br /&gt;
helptext		= &amp;quot;Help: run parameters are: filename expected-sha256-string\n&amp;quot;&lt;br /&gt;
txt_color_gn	= &amp;quot;\033[0;32m&amp;quot; # green colored text&lt;br /&gt;
txt_color_rd 	= &amp;quot;\033[0;31m&amp;quot; # red colored text&lt;br /&gt;
txt_color_wt	= &amp;quot;\033[0;0m&amp;quot;  # white colored text (default)&lt;br /&gt;
&lt;br /&gt;
def calculate_sha256(filename, chunk_size=65536):&lt;br /&gt;
    sha256 = hashlib.sha256()&lt;br /&gt;
    with open(filename, &#039;rb&#039;) as f:&lt;br /&gt;
        while True:&lt;br /&gt;
            data = f.read(chunk_size)&lt;br /&gt;
            if not data:&lt;br /&gt;
                break&lt;br /&gt;
            sha256.update(data)&lt;br /&gt;
    return sha256.hexdigest()&lt;br /&gt;
&lt;br /&gt;
# probe reading parameters&lt;br /&gt;
try:&lt;br /&gt;
    filename = sys.argv[1]&lt;br /&gt;
    hashvalue= sys.argv[2]&lt;br /&gt;
except IndexError:&lt;br /&gt;
    # in case of index error, print helpstring and exit&lt;br /&gt;
    print(version, &amp;quot;\n&amp;quot;, helptext, sep=&#039;&#039;) # sep=&#039;&#039; prevents leading space in output line&lt;br /&gt;
    sys.exit() # program ends here&lt;br /&gt;
&lt;br /&gt;
hashresult=calculate_sha256(filename)&lt;br /&gt;
if hashresult== hashvalue:&lt;br /&gt;
    print(version, txt_color_gn, &amp;quot;\nCheck OK:&amp;quot; ,hashresult) # output text in green&lt;br /&gt;
else:&lt;br /&gt;
    print(version, txt_color_rd, &amp;quot;\nCheck fail! Calculated result:\n&amp;quot;, hashresult, sep=&#039;&#039;) # output text in red&lt;br /&gt;
&lt;br /&gt;
print(txt_color_wt, &amp;quot;\nDone.\n&amp;quot;) # regular end of program&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Start ohne Parameter zeigt an, welche Parameter nötig sind und bricht dann ab:&lt;br /&gt;
&lt;br /&gt;
# Parameter: zu prüfende Datei&lt;br /&gt;
# Parameter: erwarteter sha256-String&lt;br /&gt;
&lt;br /&gt;
Vor Anwendung unter Linux: &amp;lt;pre&amp;gt;chmod +x shc.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um es ausführbar zu machen.&lt;br /&gt;
&lt;br /&gt;
Was das Programm nicht kann:&lt;br /&gt;
# Per Link zum Kopieren bereitgestellten Hashes ist gelegentlich (?) ein &#039;sha256:&#039; vorangestellt. Dieser Prefix wird vom Skript nicht entfernt und führt zum Scheitern des Stringvergleichs; auch wenn er korrekt ist.&lt;br /&gt;
# Ist die angegebene Datei nicht vorhanden, bricht das Skript mit einer Fehlermeldung ab.&lt;br /&gt;
&lt;br /&gt;
Diese Eventualitäten kann man natürlich im Skript abfangen.&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Pypthon&amp;diff=152</id>
		<title>Pypthon</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Pypthon&amp;diff=152"/>
		<updated>2026-05-05T08:23:42Z</updated>

		<summary type="html">&lt;p&gt;Martin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Python]]&lt;br /&gt;
==Programme==&lt;br /&gt;
Shebang für Python-Programme:&lt;br /&gt;
 #!/usr/bin/env python3&lt;br /&gt;
&lt;br /&gt;
===SHA256-Checksummen-Checker===&lt;br /&gt;
Keine besondere Erfinderhöhe. Daher ohne Copyright, sondern Freeware.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem:&#039;&#039;&#039; Wenn man im Internet Dateien zum Download angeboten bekommt, kann man die Datenintegrität oft anhand eines angezeigten SHA256-Hashes überprüfen. Dazu existieren unter allen Betriebssystemen Shell-Tools, um den Hasch einer Datei zu berechnen.&lt;br /&gt;
&lt;br /&gt;
Unter Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;sha256sum&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das Resultat kann man dann mit dem auf der Webseite vorgegebenen Hash-String vergleichen. Das finde ich eher mühsam; warum kann man den Hash nicht gleich mit prüfen? Für GTK gibt es diverse Tools und einige können auch die Vorgabe gleich mit prüfen. GTK finde ich aber übertrieben. Das kann gern in der Konsole laufen.&lt;br /&gt;
&lt;br /&gt;
Die schafft mein kleines Progrämmchen shc.py (sha256-check):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
import hashlib&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
version 		= &#039;\nSHA256-Checker version 0.1 Free and open source software\n&#039;&lt;br /&gt;
helptext		= &amp;quot;Help: run parameters are: filename expected-sha256-string\n&amp;quot;&lt;br /&gt;
txt_color_gn	= &amp;quot;\033[0;32m&amp;quot; # green colored text&lt;br /&gt;
txt_color_rd 	= &amp;quot;\033[0;31m&amp;quot; # red colored text&lt;br /&gt;
txt_color_wt	= &amp;quot;\033[0;0m&amp;quot;  # white colored text (default)&lt;br /&gt;
&lt;br /&gt;
def calculate_sha256(filename, chunk_size=65536):&lt;br /&gt;
    sha256 = hashlib.sha256()&lt;br /&gt;
    with open(filename, &#039;rb&#039;) as f:&lt;br /&gt;
        while True:&lt;br /&gt;
            data = f.read(chunk_size)&lt;br /&gt;
            if not data:&lt;br /&gt;
                break&lt;br /&gt;
            sha256.update(data)&lt;br /&gt;
    return sha256.hexdigest()&lt;br /&gt;
&lt;br /&gt;
# probe reading parameters&lt;br /&gt;
try:&lt;br /&gt;
    filename = sys.argv[1]&lt;br /&gt;
    hashvalue= sys.argv[2]&lt;br /&gt;
except IndexError:&lt;br /&gt;
    # in case of index error, print helpstring and exit&lt;br /&gt;
    print(version, &amp;quot;\n&amp;quot;, helptext, sep=&#039;&#039;) # sep=&#039;&#039; prevents leading space in output line&lt;br /&gt;
    sys.exit() # program ends here&lt;br /&gt;
&lt;br /&gt;
hashresult=calculate_sha256(filename)&lt;br /&gt;
if hashresult== hashvalue:&lt;br /&gt;
    print(version, txt_color_gn, &amp;quot;\nCheck OK:&amp;quot; ,hashresult) # output text in green&lt;br /&gt;
else:&lt;br /&gt;
    print(version, txt_color_rd, &amp;quot;\nCheck fail! Calculated result:\n&amp;quot;, hashresult, sep=&#039;&#039;) # output text in red&lt;br /&gt;
&lt;br /&gt;
print(txt_color_wt, &amp;quot;\nDone.\n&amp;quot;) # regular end of program&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Start ohne Parameter zeigt an, welche Parameter nötig sind und bricht dann ab:&lt;br /&gt;
&lt;br /&gt;
# Parameter: zu prüfende Datei&lt;br /&gt;
# Parameter: erwarteter sha256-String&lt;br /&gt;
&lt;br /&gt;
Vor Anwendung unter Linux: &amp;lt;pre&amp;gt;chmod +x shc.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um es ausführbar zu machen.&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Pypthon&amp;diff=151</id>
		<title>Pypthon</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Pypthon&amp;diff=151"/>
		<updated>2026-05-05T08:22:59Z</updated>

		<summary type="html">&lt;p&gt;Martin: shebang for python&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Python]]&lt;br /&gt;
==Programme==&lt;br /&gt;
Shebang für Python-Programme:&lt;br /&gt;
 #!/usr/bin/env python3&lt;br /&gt;
===SHA256-Checksummen-Checker===&lt;br /&gt;
Keine besondere Erfinderhöhe. Daher ohne Copyright, sondern Freeware.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem:&#039;&#039;&#039; Wenn man im Internet Dateien zum Download angeboten bekommt, kann man die Datenintegrität oft anhand eines angezeigten SHA256-Hashes überprüfen. Dazu existieren unter allen Betriebssystemen Shell-Tools, um den Hasch einer Datei zu berechnen.&lt;br /&gt;
&lt;br /&gt;
Unter Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;sha256sum&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das Resultat kann man dann mit dem auf der Webseite vorgegebenen Hash-String vergleichen. Das finde ich eher mühsam; warum kann man den Hash nicht gleich mit prüfen? Für GTK gibt es diverse Tools und einige können auch die Vorgabe gleich mit prüfen. GTK finde ich aber übertrieben. Das kann gern in der Konsole laufen.&lt;br /&gt;
&lt;br /&gt;
Die schafft mein kleines Progrämmchen shc.py (sha256-check):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
import hashlib&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
version 		= &#039;\nSHA256-Checker version 0.1 Free and open source software\n&#039;&lt;br /&gt;
helptext		= &amp;quot;Help: run parameters are: filename expected-sha256-string\n&amp;quot;&lt;br /&gt;
txt_color_gn	= &amp;quot;\033[0;32m&amp;quot; # green colored text&lt;br /&gt;
txt_color_rd 	= &amp;quot;\033[0;31m&amp;quot; # red colored text&lt;br /&gt;
txt_color_wt	= &amp;quot;\033[0;0m&amp;quot;  # white colored text (default)&lt;br /&gt;
&lt;br /&gt;
def calculate_sha256(filename, chunk_size=65536):&lt;br /&gt;
    sha256 = hashlib.sha256()&lt;br /&gt;
    with open(filename, &#039;rb&#039;) as f:&lt;br /&gt;
        while True:&lt;br /&gt;
            data = f.read(chunk_size)&lt;br /&gt;
            if not data:&lt;br /&gt;
                break&lt;br /&gt;
            sha256.update(data)&lt;br /&gt;
    return sha256.hexdigest()&lt;br /&gt;
&lt;br /&gt;
# probe reading parameters&lt;br /&gt;
try:&lt;br /&gt;
    filename = sys.argv[1]&lt;br /&gt;
    hashvalue= sys.argv[2]&lt;br /&gt;
except IndexError:&lt;br /&gt;
    # in case of index error, print helpstring and exit&lt;br /&gt;
    print(version, &amp;quot;\n&amp;quot;, helptext, sep=&#039;&#039;) # sep=&#039;&#039; prevents leading space in output line&lt;br /&gt;
    sys.exit() # program ends here&lt;br /&gt;
&lt;br /&gt;
hashresult=calculate_sha256(filename)&lt;br /&gt;
if hashresult== hashvalue:&lt;br /&gt;
    print(version, txt_color_gn, &amp;quot;\nCheck OK:&amp;quot; ,hashresult) # output text in green&lt;br /&gt;
else:&lt;br /&gt;
    print(version, txt_color_rd, &amp;quot;\nCheck fail! Calculated result:\n&amp;quot;, hashresult, sep=&#039;&#039;) # output text in red&lt;br /&gt;
&lt;br /&gt;
print(txt_color_wt, &amp;quot;\nDone.\n&amp;quot;) # regular end of program&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Start ohne Parameter zeigt an, welche Parameter nötig sind und bricht dann ab:&lt;br /&gt;
&lt;br /&gt;
# Parameter: zu prüfende Datei&lt;br /&gt;
# Parameter: erwarteter sha256-String&lt;br /&gt;
&lt;br /&gt;
Vor Anwendung unter Linux: &amp;lt;pre&amp;gt;chmod +x shc.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um es ausführbar zu machen.&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Pypthon&amp;diff=150</id>
		<title>Pypthon</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Pypthon&amp;diff=150"/>
		<updated>2026-05-05T08:18:20Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* SHA256-Checksummen-Checker */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Python]]&lt;br /&gt;
==Programme==&lt;br /&gt;
===SHA256-Checksummen-Checker===&lt;br /&gt;
Keine besondere Erfinderhöhe. Daher ohne Copyright, sondern Freeware.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem:&#039;&#039;&#039; Wenn man im Internet Dateien zum Download angeboten bekommt, kann man die Datenintegrität oft anhand eines angezeigten SHA256-Hashes überprüfen. Dazu existieren unter allen Betriebssystemen Shell-Tools, um den Hasch einer Datei zu berechnen.&lt;br /&gt;
&lt;br /&gt;
Unter Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;sha256sum&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das Resultat kann man dann mit dem auf der Webseite vorgegebenen Hash-String vergleichen. Das finde ich eher mühsam; warum kann man den Hash nicht gleich mit prüfen? Für GTK gibt es diverse Tools und einige können auch die Vorgabe gleich mit prüfen. GTK finde ich aber übertrieben. Das kann gern in der Konsole laufen.&lt;br /&gt;
&lt;br /&gt;
Die schafft mein kleines Progrämmchen shc.py (sha256-check):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
import hashlib&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
version 		= &#039;\nSHA256-Checker version 0.1 Free and open source software\n&#039;&lt;br /&gt;
helptext		= &amp;quot;Help: run parameters are: filename expected-sha256-string\n&amp;quot;&lt;br /&gt;
txt_color_gn	= &amp;quot;\033[0;32m&amp;quot; # green colored text&lt;br /&gt;
txt_color_rd 	= &amp;quot;\033[0;31m&amp;quot; # red colored text&lt;br /&gt;
txt_color_wt	= &amp;quot;\033[0;0m&amp;quot;  # white colored text (default)&lt;br /&gt;
&lt;br /&gt;
def calculate_sha256(filename, chunk_size=65536):&lt;br /&gt;
    sha256 = hashlib.sha256()&lt;br /&gt;
    with open(filename, &#039;rb&#039;) as f:&lt;br /&gt;
        while True:&lt;br /&gt;
            data = f.read(chunk_size)&lt;br /&gt;
            if not data:&lt;br /&gt;
                break&lt;br /&gt;
            sha256.update(data)&lt;br /&gt;
    return sha256.hexdigest()&lt;br /&gt;
&lt;br /&gt;
# probe reading parameters&lt;br /&gt;
try:&lt;br /&gt;
    filename = sys.argv[1]&lt;br /&gt;
    hashvalue= sys.argv[2]&lt;br /&gt;
except IndexError:&lt;br /&gt;
    # in case of index error, print helpstring and exit&lt;br /&gt;
    print(version, &amp;quot;\n&amp;quot;, helptext, sep=&#039;&#039;) # sep=&#039;&#039; prevents leading space in output line&lt;br /&gt;
    sys.exit() # program ends here&lt;br /&gt;
&lt;br /&gt;
hashresult=calculate_sha256(filename)&lt;br /&gt;
if hashresult== hashvalue:&lt;br /&gt;
    print(version, txt_color_gn, &amp;quot;\nCheck OK:&amp;quot; ,hashresult) # output text in green&lt;br /&gt;
else:&lt;br /&gt;
    print(version, txt_color_rd, &amp;quot;\nCheck fail! Calculated result:\n&amp;quot;, hashresult, sep=&#039;&#039;) # output text in red&lt;br /&gt;
&lt;br /&gt;
print(txt_color_wt, &amp;quot;\nDone.\n&amp;quot;) # regular end of program&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Start ohne Parameter zeigt an, welche Parameter nötig sind und bricht dann ab:&lt;br /&gt;
&lt;br /&gt;
# Parameter: zu prüfende Datei&lt;br /&gt;
# Parameter: erwarteter sha256-String&lt;br /&gt;
&lt;br /&gt;
Vor Anwendung unter Linux: &amp;lt;pre&amp;gt;chmod +x shc.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um es ausführbar zu machen.&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Pypthon&amp;diff=149</id>
		<title>Pypthon</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Pypthon&amp;diff=149"/>
		<updated>2026-05-05T08:17:18Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* SHA256-Checksummen-Checker */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Python]]&lt;br /&gt;
==Programme==&lt;br /&gt;
===SHA256-Checksummen-Checker===&lt;br /&gt;
Keine besondere Erfinderhöhe. Daher ohne Copyright, sondern Freeware.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem:&#039;&#039;&#039; Wenn man im Internet Dateien zum Download angeboten bekommt, kann man die Datenintegrität oft anhand eines angezeigten SHA256-Hashes überprüfen. Dazu existieren unter allen Betriebssystemen Shell-Tools, um den Hasch einer Datei zu berechnen.&lt;br /&gt;
&lt;br /&gt;
Unter Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;sha256sum&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das Resultat kann man dann mit dem auf der Webseite vorgegebenen Hash-String vergleichen. Das finde ich eher mühsam; warum kann man den Hash nicht gleich mit prüfen? Für GTK gibt es diverse Tools und einige können auch die Vorgabe gleich mit prüfen. GTK finde ich aber übertrieben. Das kann gern in der Konsole laufen.&lt;br /&gt;
&lt;br /&gt;
Die schafft mein kleines Progrämmchen shc.py (sha256-check):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
import hashlib&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
version 		= &#039;\nSHA256-Checker version 0.1 Free and open source software\n&#039;&lt;br /&gt;
helptext		= &amp;quot;Help: run parameters are: filename expected-sha256-string\n&amp;quot;&lt;br /&gt;
txt_color_gn	= &amp;quot;\033[0;32m&amp;quot; # green colored text&lt;br /&gt;
txt_color_rd 	= &amp;quot;\033[0;31m&amp;quot; # red colored text&lt;br /&gt;
txt_color_wt	= &amp;quot;\033[0;0m&amp;quot;  # white colored text (default)&lt;br /&gt;
&lt;br /&gt;
def calculate_sha256(filename, chunk_size=65536):&lt;br /&gt;
    sha256 = hashlib.sha256()&lt;br /&gt;
    with open(filename, &#039;rb&#039;) as f:&lt;br /&gt;
        while True:&lt;br /&gt;
            data = f.read(chunk_size)&lt;br /&gt;
            if not data:&lt;br /&gt;
                break&lt;br /&gt;
            sha256.update(data)&lt;br /&gt;
    return sha256.hexdigest()&lt;br /&gt;
&lt;br /&gt;
# probe reading parameters&lt;br /&gt;
try:&lt;br /&gt;
    filename = sys.argv[1]&lt;br /&gt;
    hashvalue= sys.argv[2]&lt;br /&gt;
except IndexError:&lt;br /&gt;
    # in case of index error, print helpstring and exit&lt;br /&gt;
    print(version, &amp;quot;\n&amp;quot;, helptext, sep=&#039;&#039;) # sep=&#039;&#039; prevents leading space in outup line&lt;br /&gt;
    sys.exit() # program ends here&lt;br /&gt;
&lt;br /&gt;
hashresult=calculate_sha256(filename)&lt;br /&gt;
if hashresult== hashvalue:&lt;br /&gt;
    print(version, txt_color_gn, &amp;quot;\nCheck OK:&amp;quot; ,hashresult) # output text in green&lt;br /&gt;
else:&lt;br /&gt;
    print(version, txt_color_rd, &amp;quot;\nCheck fail! Calculated result:\n&amp;quot;, hashresult, sep=&#039;&#039;) # output text in red&lt;br /&gt;
&lt;br /&gt;
print(txt_color_wt, &amp;quot;\nDone.\n&amp;quot;) # regular end of program&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Start ohne Parameter zeigt an, welche Parameter nötig sind und bricht dann ab:&lt;br /&gt;
&lt;br /&gt;
# Parameter: zu prüfende Datei&lt;br /&gt;
# Parameter: erwarteter sha256-String&lt;br /&gt;
&lt;br /&gt;
Vor Anwendung unter Linux: &amp;lt;pre&amp;gt;chmod +x shc.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um es ausführbar zu machen.&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Pypthon&amp;diff=148</id>
		<title>Pypthon</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Pypthon&amp;diff=148"/>
		<updated>2026-05-05T08:16:44Z</updated>

		<summary type="html">&lt;p&gt;Martin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Python]]&lt;br /&gt;
==Programme==&lt;br /&gt;
===SHA256-Checksummen-Checker===&lt;br /&gt;
Keine besondere Erfinderhöhe. Daher ohne Copyright, sondern Freeware.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Problem:&#039;&#039;&#039; Wenn man im Internet Dateien zum Download angeboten bekommt, kann man die Datenintegrität oft anhand eines angezeigten SHA256-Hashes überprüfen. Dazu existieren unter allen Betriebssystemen Shell-Tools, um den Hasch einer Datei zu berechnen.&lt;br /&gt;
&lt;br /&gt;
Unter Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;sha256sum&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das Resultat kann man dann mit dem auf der Webseite vorgegebenen Hash-String vergleichen. Das finde ich eher mühsam; warum kann man den Hash nicht gleich mit prüfen? Für GTK gibt es diverse Tool und einige können auch die Vorgabe gleich mit prüfen. GTK finde ich aber übertrieben. Das kann gern in der Konsole laufen.&lt;br /&gt;
&lt;br /&gt;
Die schafft mein kleines Progrämmchen shc.py (sha256-check):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
import hashlib&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
version 		= &#039;\nSHA256-Checker version 0.1 Free and open source software\n&#039;&lt;br /&gt;
helptext		= &amp;quot;Help: run parameters are: filename expected-sha256-string\n&amp;quot;&lt;br /&gt;
txt_color_gn	= &amp;quot;\033[0;32m&amp;quot; # green colored text&lt;br /&gt;
txt_color_rd 	= &amp;quot;\033[0;31m&amp;quot; # red colored text&lt;br /&gt;
txt_color_wt	= &amp;quot;\033[0;0m&amp;quot;  # white colored text (default)&lt;br /&gt;
&lt;br /&gt;
def calculate_sha256(filename, chunk_size=65536):&lt;br /&gt;
    sha256 = hashlib.sha256()&lt;br /&gt;
    with open(filename, &#039;rb&#039;) as f:&lt;br /&gt;
        while True:&lt;br /&gt;
            data = f.read(chunk_size)&lt;br /&gt;
            if not data:&lt;br /&gt;
                break&lt;br /&gt;
            sha256.update(data)&lt;br /&gt;
    return sha256.hexdigest()&lt;br /&gt;
&lt;br /&gt;
# probe reading parameters&lt;br /&gt;
try:&lt;br /&gt;
    filename = sys.argv[1]&lt;br /&gt;
    hashvalue= sys.argv[2]&lt;br /&gt;
except IndexError:&lt;br /&gt;
    # in case of index error, print helpstring and exit&lt;br /&gt;
    print(version, &amp;quot;\n&amp;quot;, helptext, sep=&#039;&#039;) # sep=&#039;&#039; prevents leading space in outup line&lt;br /&gt;
    sys.exit() # program ends here&lt;br /&gt;
&lt;br /&gt;
hashresult=calculate_sha256(filename)&lt;br /&gt;
if hashresult== hashvalue:&lt;br /&gt;
    print(version, txt_color_gn, &amp;quot;\nCheck OK:&amp;quot; ,hashresult) # output text in green&lt;br /&gt;
else:&lt;br /&gt;
    print(version, txt_color_rd, &amp;quot;\nCheck fail! Calculated result:\n&amp;quot;, hashresult, sep=&#039;&#039;) # output text in red&lt;br /&gt;
&lt;br /&gt;
print(txt_color_wt, &amp;quot;\nDone.\n&amp;quot;) # regular end of program&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Start ohne Parameter zeigt an, welche Parameter nötig sind und bricht dann ab:&lt;br /&gt;
&lt;br /&gt;
# Parameter: zu prüfende Datei&lt;br /&gt;
# Parameter: erwarteter sha256-String&lt;br /&gt;
&lt;br /&gt;
Vor Anwendung unter Linux: &amp;lt;pre&amp;gt;chmod +x shc.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um es ausführbar zu machen.&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Pypthon&amp;diff=147</id>
		<title>Pypthon</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Pypthon&amp;diff=147"/>
		<updated>2026-05-05T08:03:38Z</updated>

		<summary type="html">&lt;p&gt;Martin: Die Seite wurde neu angelegt: „Kategorie:Python“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Python]]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Hauptseite&amp;diff=146</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Hauptseite&amp;diff=146"/>
		<updated>2026-05-05T08:03:21Z</updated>

		<summary type="html">&lt;p&gt;Martin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wissensdatenbank für alle Fälle.&lt;br /&gt;
&lt;br /&gt;
==Haupt-Themen==&lt;br /&gt;
* [[Faunistische Begriffe]]&lt;br /&gt;
* Datenbank &amp;amp; SQL&lt;br /&gt;
** [[Datenbank-Server technisch]]&lt;br /&gt;
** [[Spinnendatenbank]]&lt;br /&gt;
* Betriebssystem&lt;br /&gt;
** [[Linux Essentials]]&lt;br /&gt;
** [[Programm starten]]&lt;br /&gt;
** [[Linux: Installierte Software]]&lt;br /&gt;
** [[Linux Network]]&lt;br /&gt;
** [[Linux Fehler]]&lt;br /&gt;
* PC und Technik allgemein&lt;br /&gt;
** [[Pypthon]]&lt;br /&gt;
* Raspian Pi &amp;amp; Co.&lt;br /&gt;
* Gesundheit&lt;br /&gt;
* [[Haushalt]]&lt;br /&gt;
&lt;br /&gt;
===Zum Wiki an sich===&lt;br /&gt;
[[Wiki-Konfiguration]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--== Starthilfen ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste der Konfigurationsparameter]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Häufige Fragen zu MediaWiki]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ Mailingliste zu neuen Versionen von MediaWiki]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Übersetze MediaWiki für deine Sprache]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Erfahre, wie du Spam auf deinem Wiki bekämpfen kannst]&lt;br /&gt;
-&amp;gt;&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Hauptseite&amp;diff=145</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Hauptseite&amp;diff=145"/>
		<updated>2026-05-05T08:03:02Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* Haupt-Themen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wissensdatenbank für alle Fälle.&lt;br /&gt;
&lt;br /&gt;
==Haupt-Themen==&lt;br /&gt;
* [[Faunistische Begriffe]]&lt;br /&gt;
* Datenbank &amp;amp; SQL&lt;br /&gt;
** [[Datenbank-Server technisch]]&lt;br /&gt;
** [[Spinnendatenbank]]&lt;br /&gt;
* Betriebssystem&lt;br /&gt;
** [[Linux Essentials]]&lt;br /&gt;
** [[Programm starten]]&lt;br /&gt;
** [[Linux: Installierte Software]]&lt;br /&gt;
** [[Linux Network]]&lt;br /&gt;
** [[Linux Fehler]]&lt;br /&gt;
* PC und Technik allgemein&lt;br /&gt;
** Pypthon&lt;br /&gt;
* Raspian Pi &amp;amp; Co.&lt;br /&gt;
* Gesundheit&lt;br /&gt;
* [[Haushalt]]&lt;br /&gt;
&lt;br /&gt;
===Zum Wiki an sich===&lt;br /&gt;
[[Wiki-Konfiguration]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--== Starthilfen ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste der Konfigurationsparameter]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Häufige Fragen zu MediaWiki]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ Mailingliste zu neuen Versionen von MediaWiki]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Übersetze MediaWiki für deine Sprache]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Erfahre, wie du Spam auf deinem Wiki bekämpfen kannst]&lt;br /&gt;
-&amp;gt;&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Linux_Fehler&amp;diff=144</id>
		<title>Linux Fehler</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Linux_Fehler&amp;diff=144"/>
		<updated>2026-05-05T08:00:37Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* Fehler konkret */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fehlerbeseitigung allgemein&lt;br /&gt;
&lt;br /&gt;
=Fehler konkret=&lt;br /&gt;
==Filemanager nemo 6.6.3 stürz bei Aufruf bestimmter Verzeichnisse ab!==&lt;br /&gt;
&lt;br /&gt;
Start von Nemo mit &amp;lt;pre&amp;gt;nemo --no-desktop&amp;lt;/pre&amp;gt; gibt bei Absturz eine Fehlermeldung auf der Stell aus. In meinem Falle: Speicherzugriffsfehler.&lt;br /&gt;
&lt;br /&gt;
===Lösung===&lt;br /&gt;
Dieser lies sich eliminieren, indem in Bearbeiten/Einstellungen/Vorschau die Option „Vorschaubilder anzeigen“ auf „nein“ gesetzt wurde.&lt;br /&gt;
&lt;br /&gt;
===Ausblick===&lt;br /&gt;
Web-Recherche: Über Abstürze von Nemo wurde bereits 2016 berichtet. Trotzdem wird empfohlen, Nemo unter Linux Mint nicht zu deinstallieren, weil das Programm für das System benötigt wird. Das Programm &#039;&#039;&#039;SpaceFM&#039;&#039;&#039; finde ich persönlich gelungener (Aktuelle Version in diesem Moment: 1.0.6); es unterstütz Tabs und die Anzeige zweier Verzeichnisse nebeneinander.&lt;br /&gt;
[[Kategorie:Linux]]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Linux_Fehler&amp;diff=143</id>
		<title>Linux Fehler</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Linux_Fehler&amp;diff=143"/>
		<updated>2026-05-05T08:00:09Z</updated>

		<summary type="html">&lt;p&gt;Martin: Die Seite wurde neu angelegt: „Fehlerbeseitigung allgemein  =Fehler konkret= ==Filemanager nemo 6.6.3 stürz bei Aufruf bestimmter Verzeichnisse ab!==  Start von Nemo mit &amp;lt;pre&amp;gt;nemo --no-desktop&amp;lt;/pre&amp;gt; gibt bei Absturz eine Feglermeldung auf der Stell aus. In meinem Falle: Speicherzugriffsfehler.  ===Lösung=== Dieser lies sich eliminieren, indem in Bearbeiten/Einstellungen/Vorschau die Option „Vorschaubilder anzeigen“ auf „nein“ gesetzt wurde.  ===Ausblick=== Web-Recherche: Übe…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fehlerbeseitigung allgemein&lt;br /&gt;
&lt;br /&gt;
=Fehler konkret=&lt;br /&gt;
==Filemanager nemo 6.6.3 stürz bei Aufruf bestimmter Verzeichnisse ab!==&lt;br /&gt;
&lt;br /&gt;
Start von Nemo mit &amp;lt;pre&amp;gt;nemo --no-desktop&amp;lt;/pre&amp;gt; gibt bei Absturz eine Feglermeldung auf der Stell aus. In meinem Falle: Speicherzugriffsfehler.&lt;br /&gt;
&lt;br /&gt;
===Lösung===&lt;br /&gt;
Dieser lies sich eliminieren, indem in Bearbeiten/Einstellungen/Vorschau die Option „Vorschaubilder anzeigen“ auf „nein“ gesetzt wurde.&lt;br /&gt;
&lt;br /&gt;
===Ausblick===&lt;br /&gt;
Web-Recherche: Über Abstürze von Nemo wurde bereits 2016 berichtet. Trotzdem wird empfohlen, Nemo unter Linux Mint nicht zu deinstallieren, weil das Programm für das System benötigt wird. Das Programm &#039;&#039;&#039;SpaceFM&#039;&#039;&#039; finde ich persönlich gelungener (Aktuelle Version in diesem Moment: 1.0.6); es unterstütz Tabs und die Anzeige zweier Verzeichnisse nebeneinander.&lt;br /&gt;
[[Kategorie:Linux]]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Hauptseite&amp;diff=142</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Hauptseite&amp;diff=142"/>
		<updated>2026-05-05T07:42:41Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* Haupt-Themen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wissensdatenbank für alle Fälle.&lt;br /&gt;
&lt;br /&gt;
==Haupt-Themen==&lt;br /&gt;
* [[Faunistische Begriffe]]&lt;br /&gt;
* Datenbank &amp;amp; SQL&lt;br /&gt;
** [[Datenbank-Server technisch]]&lt;br /&gt;
** [[Spinnendatenbank]]&lt;br /&gt;
* Betriebssystem&lt;br /&gt;
** [[Linux Essentials]]&lt;br /&gt;
** [[Programm starten]]&lt;br /&gt;
** [[Linux: Installierte Software]]&lt;br /&gt;
** [[Linux Network]]&lt;br /&gt;
** [[Linux Fehler]]&lt;br /&gt;
* PC und Technik allgemein&lt;br /&gt;
* Raspian Pi &amp;amp; Co.&lt;br /&gt;
* Gesundheit&lt;br /&gt;
* [[Haushalt]]&lt;br /&gt;
&lt;br /&gt;
===Zum Wiki an sich===&lt;br /&gt;
[[Wiki-Konfiguration]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--== Starthilfen ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste der Konfigurationsparameter]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Häufige Fragen zu MediaWiki]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ Mailingliste zu neuen Versionen von MediaWiki]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Übersetze MediaWiki für deine Sprache]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Erfahre, wie du Spam auf deinem Wiki bekämpfen kannst]&lt;br /&gt;
-&amp;gt;&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Spinnendatenbank&amp;diff=139</id>
		<title>Spinnendatenbank</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Spinnendatenbank&amp;diff=139"/>
		<updated>2026-03-08T19:29:57Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* Habitatbindung einer Art */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Anleitungen=&lt;br /&gt;
* In bestehende Tabelle [[Fangdaten nachladen]]&lt;br /&gt;
&lt;br /&gt;
=SQL-Sammlung für Spinnen-Datenbank=&lt;br /&gt;
&lt;br /&gt;
==Habitatbindung einer Art==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Art, btyp, Bindung&lt;br /&gt;
FROM info_Habitatbindung, info_rl_habitat&lt;br /&gt;
WHERE Art=&amp;quot;XXXXXXXX&amp;quot;&lt;br /&gt;
AND Habitattyp=mnemo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Etwas ausführlicher:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Art, mnemo as Kürzel, btyp as Biotoptyp, Bindung&lt;br /&gt;
FROM info_Habitatbindung, info_rl_habitat&lt;br /&gt;
WHERE Art=&amp;quot;XXXXXXXX&amp;quot;&lt;br /&gt;
AND Habitattyp=mnemo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Artenliste zum Habitat-Memo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Art, Bindung&lt;br /&gt;
FROM info_Habitatbindung&lt;br /&gt;
WHERE Habitattyp=&amp;quot;yyy&amp;quot;&lt;br /&gt;
ORDER BY Art&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Liste nach Datum Gruppieren==&lt;br /&gt;
Problem: Datum1 und Datum liegen als VChar vor und eine Sortierung würde nach den Tagen vorgenommen. Für korrekte Sortierung muss der Datumsstring in ein Datum umgewandelt werden: &amp;lt;code&amp;gt;STR_TO_DATE(datestring, Format)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die in MariaDB eingebaute Prozedur STR_TO_DATE() erwartet als ersten Parameter den Datumsstring und als zweiten einen Formatstring, welcher definiert, welches Format der Datumsstring hat.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT * FROM `data_raw_idx` &lt;br /&gt;
WHERE datum LIKE &amp;quot;%2024&amp;quot;&lt;br /&gt;
AND OrtID=314 -- = NSG Höltigbaum&lt;br /&gt;
GROUP BY STR_TO_DATE(datum, &#039;%d.%m.%Y&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Welche Orte gibt es in Projekt mit ProjektID=1?==&lt;br /&gt;
Mit Angabe der OrtID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT OrtID, Ortsname &lt;br /&gt;
FROM meta_Orte, ref_Projekte_Orte&lt;br /&gt;
WHERE ProjektID=1&lt;br /&gt;
AND OrtID=IDOrt&lt;br /&gt;
GROUP BY Ortsname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ortsliste mit zugehörigen Biotopen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT o.ortsname, d.biotop&lt;br /&gt;
FROM data_raw_idx AS d, ref_Projekte_Orte AS r, meta_Orte AS o&lt;br /&gt;
WHERE r.ProjektId=1 -- &amp;lt;== Variable hier!&lt;br /&gt;
AND d.OrtId=r.OrtId&lt;br /&gt;
AND r.OrtId=o.idOrt&lt;br /&gt;
GROUP BY o.ortsname, d.biotop;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Artenliste nach Standorten eines Projektes==&lt;br /&gt;
Hier: ProjektID=1 (Green roof, Hamburg)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Data.Artname, O.Ortsname AS Ort&lt;br /&gt;
FROM data_raw_idx AS Data, meta_Orte AS O, ref_Projekte_Orte AS R&lt;br /&gt;
WHERE R.ProjektID=1 &lt;br /&gt;
AND R.OrtID=O.IdOrt&lt;br /&gt;
AND Data.OrtID=R.OrtID&lt;br /&gt;
GROUP BY Ort, Artname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das selbe mit Ausgabe der Individuenzahl:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Data.Artname, SUM(Data.mm+Data.ww+Data.juv+Data.ind) AS Individuen, O.Ortsname AS Ort&lt;br /&gt;
FROM data_raw_idx AS Data, meta_Orte AS O, ref_Projekte_Orte AS R&lt;br /&gt;
WHERE R.ProjektID=1 &lt;br /&gt;
AND R.OrtID=O.IdOrt&lt;br /&gt;
AND Data.OrtID=R.OrtID&lt;br /&gt;
GROUP BY Ort, Artname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gesamtartenliste des Projektes ohne Angabe von Orten oder Individuen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Artname&lt;br /&gt;
FROM data_raw_idx AS d, ref_Projekte_Orte AS r&lt;br /&gt;
WHERE r.ProjektID=1 &lt;br /&gt;
AND r.OrtID=d.OrtID&lt;br /&gt;
GROUP BY Artname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Matrix-Abfrage: Gesamtartenzahlen nach Standorten und Jahren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT SUM(mm+ww+juv+ind) AS Anzahl, Ortsname, SUBSTR(datum, 7, 4) AS Jahr&lt;br /&gt;
FROM data_raw_idx AS d, meta_Orte AS o, ref_Projekte_Orte AS p&lt;br /&gt;
WHERE p.ProjektID =1&lt;br /&gt;
AND p.OrtID=o.idOrt&lt;br /&gt;
AND d.OrtID=o.idOrt&lt;br /&gt;
GROUP BY Ortsname, Jahr;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In alternativer Sortierung nach Orten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT O.Ortsname AS Ort, Data.Artname, SUM(Data.mm+Data.ww+Data.juv+Data.ind) AS Individuen&lt;br /&gt;
FROM data_raw_idx AS Data, meta_Orte AS O, ref_Projekte_Orte AS R&lt;br /&gt;
WHERE R.ProjektID=1 &lt;br /&gt;
AND R.OrtID=O.IdOrt&lt;br /&gt;
AND Data.OrtID=R.OrtID&lt;br /&gt;
GROUP BY Ort, Artname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ortsname, Artname, Anzahl, Jahr:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Ortsname, Artname, SUM(mm+ww+juv+ind) AS Anzahl, SUBSTR(datum, 7, 4) AS Jahr&lt;br /&gt;
FROM data_raw_idx AS d, meta_Orte AS o, ref_Projekte_Orte AS p&lt;br /&gt;
WHERE p.ProjektID =1&lt;br /&gt;
AND p.OrtID=o.idOrt&lt;br /&gt;
AND d.OrtID=o.idOrt&lt;br /&gt;
GROUP BY Ortsname, Jahr, Artname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==UPDATE==&lt;br /&gt;
===Tabelle mit Daten einer andere Tabelle füllen===&lt;br /&gt;
Hier: In Tabelle &#039;&#039;info_Habitatbindung&#039;&#039; soll das Feld &#039;&#039;&#039;ArtID&#039;&#039;&#039; mit den Ids aus &#039;&#039;tax_Arten&#039;&#039; gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
UPDATE info_Habitatbindung &lt;br /&gt;
INNER JOIN tax_Arten ON Art=name&lt;br /&gt;
SET ArtId=IdArt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INNER JOIN im Prinzip:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
UPDATE tabelle1 &lt;br /&gt;
INNER JOIN tabelle2 ON tabelle1.id = tabelle2.id &lt;br /&gt;
SET tabelle1.feld1 = tabelle2.wert1, &lt;br /&gt;
    tabelle1.feld2 = tabelle2.wert2 &lt;br /&gt;
WHERE tabelle2.status = &#039;aktuell&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kontroll-Abfragen==&lt;br /&gt;
Fallenwechsel-Daten für Standort n; hier n= 66 (Feldstr. Bunker)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT datum1, datum FROM `data_raw_idx` &lt;br /&gt;
WHERE OrtID=66&lt;br /&gt;
GROUP BY STR_TO_DATE(datum1, &#039;%d.%m.%Y&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das selbe mit Angabe der Differenz in Tagen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT datum1, datum, DATEDIFF(STR_TO_DATE(datum, &#039;%d.%m.%Y&#039;),STR_TO_DATE(datum1, &#039;%d.%m.%Y&#039;)) AS Tage&lt;br /&gt;
FROM `data_raw_idx` &lt;br /&gt;
WHERE OrtID=66&lt;br /&gt;
GROUP BY STR_TO_DATE(datum1, &#039;%d.%m.%Y&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039;&amp;gt;&lt;br /&gt;
DATEDIFF(expr1, expr2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[https://mariadb.com/docs/server/reference/sql-functions/date-time-functions/datediff https://mariadb.com/docs/server/reference/sql-functions/date-time-functions/datediff]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Spinnendatenbank&amp;diff=138</id>
		<title>Spinnendatenbank</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Spinnendatenbank&amp;diff=138"/>
		<updated>2026-03-08T19:27:50Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* Habitatbindung einer Art */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Anleitungen=&lt;br /&gt;
* In bestehende Tabelle [[Fangdaten nachladen]]&lt;br /&gt;
&lt;br /&gt;
=SQL-Sammlung für Spinnen-Datenbank=&lt;br /&gt;
&lt;br /&gt;
==Habitatbindung einer Art==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Art, btyp, Bindung&lt;br /&gt;
FROM info_Habitatbindung, info_rl_habitat&lt;br /&gt;
WHERE Art=&amp;quot;XXXXXXXX&amp;quot;&lt;br /&gt;
AND Habitattyp=mnemo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Etwas ausführlicher:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Art, mnemo as Kürzel, btyp as Biotoptyp, Bindung&lt;br /&gt;
FROM info_Habitatbindung, info_rl_habitat&lt;br /&gt;
WHERE Art=&amp;quot;XXXXXXXX&amp;quot;&lt;br /&gt;
AND Habitattyp=mnemo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Artenliste zum Habitat-Memo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Art, Bindung&lt;br /&gt;
FROM info_Habitatbindung&lt;br /&gt;
WHERE mnemo=&amp;quot;xxx&amp;quot;&lt;br /&gt;
ORDER BY Art&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Liste nach Datum Gruppieren==&lt;br /&gt;
Problem: Datum1 und Datum liegen als VChar vor und eine Sortierung würde nach den Tagen vorgenommen. Für korrekte Sortierung muss der Datumsstring in ein Datum umgewandelt werden: &amp;lt;code&amp;gt;STR_TO_DATE(datestring, Format)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die in MariaDB eingebaute Prozedur STR_TO_DATE() erwartet als ersten Parameter den Datumsstring und als zweiten einen Formatstring, welcher definiert, welches Format der Datumsstring hat.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT * FROM `data_raw_idx` &lt;br /&gt;
WHERE datum LIKE &amp;quot;%2024&amp;quot;&lt;br /&gt;
AND OrtID=314 -- = NSG Höltigbaum&lt;br /&gt;
GROUP BY STR_TO_DATE(datum, &#039;%d.%m.%Y&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Welche Orte gibt es in Projekt mit ProjektID=1?==&lt;br /&gt;
Mit Angabe der OrtID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT OrtID, Ortsname &lt;br /&gt;
FROM meta_Orte, ref_Projekte_Orte&lt;br /&gt;
WHERE ProjektID=1&lt;br /&gt;
AND OrtID=IDOrt&lt;br /&gt;
GROUP BY Ortsname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ortsliste mit zugehörigen Biotopen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT o.ortsname, d.biotop&lt;br /&gt;
FROM data_raw_idx AS d, ref_Projekte_Orte AS r, meta_Orte AS o&lt;br /&gt;
WHERE r.ProjektId=1 -- &amp;lt;== Variable hier!&lt;br /&gt;
AND d.OrtId=r.OrtId&lt;br /&gt;
AND r.OrtId=o.idOrt&lt;br /&gt;
GROUP BY o.ortsname, d.biotop;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Artenliste nach Standorten eines Projektes==&lt;br /&gt;
Hier: ProjektID=1 (Green roof, Hamburg)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Data.Artname, O.Ortsname AS Ort&lt;br /&gt;
FROM data_raw_idx AS Data, meta_Orte AS O, ref_Projekte_Orte AS R&lt;br /&gt;
WHERE R.ProjektID=1 &lt;br /&gt;
AND R.OrtID=O.IdOrt&lt;br /&gt;
AND Data.OrtID=R.OrtID&lt;br /&gt;
GROUP BY Ort, Artname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das selbe mit Ausgabe der Individuenzahl:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Data.Artname, SUM(Data.mm+Data.ww+Data.juv+Data.ind) AS Individuen, O.Ortsname AS Ort&lt;br /&gt;
FROM data_raw_idx AS Data, meta_Orte AS O, ref_Projekte_Orte AS R&lt;br /&gt;
WHERE R.ProjektID=1 &lt;br /&gt;
AND R.OrtID=O.IdOrt&lt;br /&gt;
AND Data.OrtID=R.OrtID&lt;br /&gt;
GROUP BY Ort, Artname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gesamtartenliste des Projektes ohne Angabe von Orten oder Individuen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Artname&lt;br /&gt;
FROM data_raw_idx AS d, ref_Projekte_Orte AS r&lt;br /&gt;
WHERE r.ProjektID=1 &lt;br /&gt;
AND r.OrtID=d.OrtID&lt;br /&gt;
GROUP BY Artname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Matrix-Abfrage: Gesamtartenzahlen nach Standorten und Jahren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT SUM(mm+ww+juv+ind) AS Anzahl, Ortsname, SUBSTR(datum, 7, 4) AS Jahr&lt;br /&gt;
FROM data_raw_idx AS d, meta_Orte AS o, ref_Projekte_Orte AS p&lt;br /&gt;
WHERE p.ProjektID =1&lt;br /&gt;
AND p.OrtID=o.idOrt&lt;br /&gt;
AND d.OrtID=o.idOrt&lt;br /&gt;
GROUP BY Ortsname, Jahr;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In alternativer Sortierung nach Orten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT O.Ortsname AS Ort, Data.Artname, SUM(Data.mm+Data.ww+Data.juv+Data.ind) AS Individuen&lt;br /&gt;
FROM data_raw_idx AS Data, meta_Orte AS O, ref_Projekte_Orte AS R&lt;br /&gt;
WHERE R.ProjektID=1 &lt;br /&gt;
AND R.OrtID=O.IdOrt&lt;br /&gt;
AND Data.OrtID=R.OrtID&lt;br /&gt;
GROUP BY Ort, Artname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ortsname, Artname, Anzahl, Jahr:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Ortsname, Artname, SUM(mm+ww+juv+ind) AS Anzahl, SUBSTR(datum, 7, 4) AS Jahr&lt;br /&gt;
FROM data_raw_idx AS d, meta_Orte AS o, ref_Projekte_Orte AS p&lt;br /&gt;
WHERE p.ProjektID =1&lt;br /&gt;
AND p.OrtID=o.idOrt&lt;br /&gt;
AND d.OrtID=o.idOrt&lt;br /&gt;
GROUP BY Ortsname, Jahr, Artname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==UPDATE==&lt;br /&gt;
===Tabelle mit Daten einer andere Tabelle füllen===&lt;br /&gt;
Hier: In Tabelle &#039;&#039;info_Habitatbindung&#039;&#039; soll das Feld &#039;&#039;&#039;ArtID&#039;&#039;&#039; mit den Ids aus &#039;&#039;tax_Arten&#039;&#039; gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
UPDATE info_Habitatbindung &lt;br /&gt;
INNER JOIN tax_Arten ON Art=name&lt;br /&gt;
SET ArtId=IdArt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INNER JOIN im Prinzip:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
UPDATE tabelle1 &lt;br /&gt;
INNER JOIN tabelle2 ON tabelle1.id = tabelle2.id &lt;br /&gt;
SET tabelle1.feld1 = tabelle2.wert1, &lt;br /&gt;
    tabelle1.feld2 = tabelle2.wert2 &lt;br /&gt;
WHERE tabelle2.status = &#039;aktuell&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kontroll-Abfragen==&lt;br /&gt;
Fallenwechsel-Daten für Standort n; hier n= 66 (Feldstr. Bunker)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT datum1, datum FROM `data_raw_idx` &lt;br /&gt;
WHERE OrtID=66&lt;br /&gt;
GROUP BY STR_TO_DATE(datum1, &#039;%d.%m.%Y&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das selbe mit Angabe der Differenz in Tagen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT datum1, datum, DATEDIFF(STR_TO_DATE(datum, &#039;%d.%m.%Y&#039;),STR_TO_DATE(datum1, &#039;%d.%m.%Y&#039;)) AS Tage&lt;br /&gt;
FROM `data_raw_idx` &lt;br /&gt;
WHERE OrtID=66&lt;br /&gt;
GROUP BY STR_TO_DATE(datum1, &#039;%d.%m.%Y&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039;&amp;gt;&lt;br /&gt;
DATEDIFF(expr1, expr2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[https://mariadb.com/docs/server/reference/sql-functions/date-time-functions/datediff https://mariadb.com/docs/server/reference/sql-functions/date-time-functions/datediff]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Spinnendatenbank&amp;diff=137</id>
		<title>Spinnendatenbank</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Spinnendatenbank&amp;diff=137"/>
		<updated>2026-03-08T19:24:56Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* SQL-Sammlung für Spinnen-Datenbank */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Anleitungen=&lt;br /&gt;
* In bestehende Tabelle [[Fangdaten nachladen]]&lt;br /&gt;
&lt;br /&gt;
=SQL-Sammlung für Spinnen-Datenbank=&lt;br /&gt;
&lt;br /&gt;
==Habitatbindung einer Art==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Art, btyp, Bindung&lt;br /&gt;
FROM info_Habitatbindung, info_rl_habitat&lt;br /&gt;
WHERE Art=&amp;quot;XXXXXXXX&amp;quot;&lt;br /&gt;
AND Habitattyp=mnemo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Etwas ausführlicher:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Art, mnemo as Kürzel, btyp as Biotoptyp, Bindung&lt;br /&gt;
FROM info_Habitatbindung, info_rl_habitat&lt;br /&gt;
WHERE Art=&amp;quot;XXXXXXXX&amp;quot;&lt;br /&gt;
AND Habitattyp=mnemo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Liste nach Datum Gruppieren==&lt;br /&gt;
Problem: Datum1 und Datum liegen als VChar vor und eine Sortierung würde nach den Tagen vorgenommen. Für korrekte Sortierung muss der Datumsstring in ein Datum umgewandelt werden: &amp;lt;code&amp;gt;STR_TO_DATE(datestring, Format)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die in MariaDB eingebaute Prozedur STR_TO_DATE() erwartet als ersten Parameter den Datumsstring und als zweiten einen Formatstring, welcher definiert, welches Format der Datumsstring hat.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT * FROM `data_raw_idx` &lt;br /&gt;
WHERE datum LIKE &amp;quot;%2024&amp;quot;&lt;br /&gt;
AND OrtID=314 -- = NSG Höltigbaum&lt;br /&gt;
GROUP BY STR_TO_DATE(datum, &#039;%d.%m.%Y&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Welche Orte gibt es in Projekt mit ProjektID=1?==&lt;br /&gt;
Mit Angabe der OrtID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT OrtID, Ortsname &lt;br /&gt;
FROM meta_Orte, ref_Projekte_Orte&lt;br /&gt;
WHERE ProjektID=1&lt;br /&gt;
AND OrtID=IDOrt&lt;br /&gt;
GROUP BY Ortsname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ortsliste mit zugehörigen Biotopen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT o.ortsname, d.biotop&lt;br /&gt;
FROM data_raw_idx AS d, ref_Projekte_Orte AS r, meta_Orte AS o&lt;br /&gt;
WHERE r.ProjektId=1 -- &amp;lt;== Variable hier!&lt;br /&gt;
AND d.OrtId=r.OrtId&lt;br /&gt;
AND r.OrtId=o.idOrt&lt;br /&gt;
GROUP BY o.ortsname, d.biotop;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Artenliste nach Standorten eines Projektes==&lt;br /&gt;
Hier: ProjektID=1 (Green roof, Hamburg)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Data.Artname, O.Ortsname AS Ort&lt;br /&gt;
FROM data_raw_idx AS Data, meta_Orte AS O, ref_Projekte_Orte AS R&lt;br /&gt;
WHERE R.ProjektID=1 &lt;br /&gt;
AND R.OrtID=O.IdOrt&lt;br /&gt;
AND Data.OrtID=R.OrtID&lt;br /&gt;
GROUP BY Ort, Artname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das selbe mit Ausgabe der Individuenzahl:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Data.Artname, SUM(Data.mm+Data.ww+Data.juv+Data.ind) AS Individuen, O.Ortsname AS Ort&lt;br /&gt;
FROM data_raw_idx AS Data, meta_Orte AS O, ref_Projekte_Orte AS R&lt;br /&gt;
WHERE R.ProjektID=1 &lt;br /&gt;
AND R.OrtID=O.IdOrt&lt;br /&gt;
AND Data.OrtID=R.OrtID&lt;br /&gt;
GROUP BY Ort, Artname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gesamtartenliste des Projektes ohne Angabe von Orten oder Individuen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Artname&lt;br /&gt;
FROM data_raw_idx AS d, ref_Projekte_Orte AS r&lt;br /&gt;
WHERE r.ProjektID=1 &lt;br /&gt;
AND r.OrtID=d.OrtID&lt;br /&gt;
GROUP BY Artname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Matrix-Abfrage: Gesamtartenzahlen nach Standorten und Jahren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT SUM(mm+ww+juv+ind) AS Anzahl, Ortsname, SUBSTR(datum, 7, 4) AS Jahr&lt;br /&gt;
FROM data_raw_idx AS d, meta_Orte AS o, ref_Projekte_Orte AS p&lt;br /&gt;
WHERE p.ProjektID =1&lt;br /&gt;
AND p.OrtID=o.idOrt&lt;br /&gt;
AND d.OrtID=o.idOrt&lt;br /&gt;
GROUP BY Ortsname, Jahr;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In alternativer Sortierung nach Orten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT O.Ortsname AS Ort, Data.Artname, SUM(Data.mm+Data.ww+Data.juv+Data.ind) AS Individuen&lt;br /&gt;
FROM data_raw_idx AS Data, meta_Orte AS O, ref_Projekte_Orte AS R&lt;br /&gt;
WHERE R.ProjektID=1 &lt;br /&gt;
AND R.OrtID=O.IdOrt&lt;br /&gt;
AND Data.OrtID=R.OrtID&lt;br /&gt;
GROUP BY Ort, Artname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ortsname, Artname, Anzahl, Jahr:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Ortsname, Artname, SUM(mm+ww+juv+ind) AS Anzahl, SUBSTR(datum, 7, 4) AS Jahr&lt;br /&gt;
FROM data_raw_idx AS d, meta_Orte AS o, ref_Projekte_Orte AS p&lt;br /&gt;
WHERE p.ProjektID =1&lt;br /&gt;
AND p.OrtID=o.idOrt&lt;br /&gt;
AND d.OrtID=o.idOrt&lt;br /&gt;
GROUP BY Ortsname, Jahr, Artname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==UPDATE==&lt;br /&gt;
===Tabelle mit Daten einer andere Tabelle füllen===&lt;br /&gt;
Hier: In Tabelle &#039;&#039;info_Habitatbindung&#039;&#039; soll das Feld &#039;&#039;&#039;ArtID&#039;&#039;&#039; mit den Ids aus &#039;&#039;tax_Arten&#039;&#039; gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
UPDATE info_Habitatbindung &lt;br /&gt;
INNER JOIN tax_Arten ON Art=name&lt;br /&gt;
SET ArtId=IdArt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INNER JOIN im Prinzip:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
UPDATE tabelle1 &lt;br /&gt;
INNER JOIN tabelle2 ON tabelle1.id = tabelle2.id &lt;br /&gt;
SET tabelle1.feld1 = tabelle2.wert1, &lt;br /&gt;
    tabelle1.feld2 = tabelle2.wert2 &lt;br /&gt;
WHERE tabelle2.status = &#039;aktuell&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kontroll-Abfragen==&lt;br /&gt;
Fallenwechsel-Daten für Standort n; hier n= 66 (Feldstr. Bunker)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT datum1, datum FROM `data_raw_idx` &lt;br /&gt;
WHERE OrtID=66&lt;br /&gt;
GROUP BY STR_TO_DATE(datum1, &#039;%d.%m.%Y&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das selbe mit Angabe der Differenz in Tagen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT datum1, datum, DATEDIFF(STR_TO_DATE(datum, &#039;%d.%m.%Y&#039;),STR_TO_DATE(datum1, &#039;%d.%m.%Y&#039;)) AS Tage&lt;br /&gt;
FROM `data_raw_idx` &lt;br /&gt;
WHERE OrtID=66&lt;br /&gt;
GROUP BY STR_TO_DATE(datum1, &#039;%d.%m.%Y&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039;&amp;gt;&lt;br /&gt;
DATEDIFF(expr1, expr2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[https://mariadb.com/docs/server/reference/sql-functions/date-time-functions/datediff https://mariadb.com/docs/server/reference/sql-functions/date-time-functions/datediff]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Spinnendatenbank&amp;diff=136</id>
		<title>Spinnendatenbank</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Spinnendatenbank&amp;diff=136"/>
		<updated>2026-03-08T19:24:32Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* Habitatbindung einer Art */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Anleitungen=&lt;br /&gt;
* In bestehende Tabelle [[Fangdaten nachladen]]&lt;br /&gt;
&lt;br /&gt;
=SQL-Sammlung für Spinnen-Datenbank=&lt;br /&gt;
&lt;br /&gt;
==Habitatbindung einer Art==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Art, btyp, Bindung&lt;br /&gt;
FROM info_Habitatbindung, info_rl_habitat&lt;br /&gt;
WHERE Art=&amp;quot;XXXXXXXX&amp;quot;&lt;br /&gt;
AND Habitattyp=mnemo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Etwas ausführlicher:&lt;br /&gt;
==Habitatbindung einer Art==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Art, mnemo as Kürzel, btyp as Biotoptyp, Bindung&lt;br /&gt;
FROM info_Habitatbindung, info_rl_habitat&lt;br /&gt;
WHERE Art=&amp;quot;XXXXXXXX&amp;quot;&lt;br /&gt;
AND Habitattyp=mnemo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Liste nach Datum Gruppieren==&lt;br /&gt;
Problem: Datum1 und Datum liegen als VChar vor und eine Sortierung würde nach den Tagen vorgenommen. Für korrekte Sortierung muss der Datumsstring in ein Datum umgewandelt werden: &amp;lt;code&amp;gt;STR_TO_DATE(datestring, Format)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die in MariaDB eingebaute Prozedur STR_TO_DATE() erwartet als ersten Parameter den Datumsstring und als zweiten einen Formatstring, welcher definiert, welches Format der Datumsstring hat.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT * FROM `data_raw_idx` &lt;br /&gt;
WHERE datum LIKE &amp;quot;%2024&amp;quot;&lt;br /&gt;
AND OrtID=314 -- = NSG Höltigbaum&lt;br /&gt;
GROUP BY STR_TO_DATE(datum, &#039;%d.%m.%Y&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Welche Orte gibt es in Projekt mit ProjektID=1?==&lt;br /&gt;
Mit Angabe der OrtID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT OrtID, Ortsname &lt;br /&gt;
FROM meta_Orte, ref_Projekte_Orte&lt;br /&gt;
WHERE ProjektID=1&lt;br /&gt;
AND OrtID=IDOrt&lt;br /&gt;
GROUP BY Ortsname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ortsliste mit zugehörigen Biotopen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT o.ortsname, d.biotop&lt;br /&gt;
FROM data_raw_idx AS d, ref_Projekte_Orte AS r, meta_Orte AS o&lt;br /&gt;
WHERE r.ProjektId=1 -- &amp;lt;== Variable hier!&lt;br /&gt;
AND d.OrtId=r.OrtId&lt;br /&gt;
AND r.OrtId=o.idOrt&lt;br /&gt;
GROUP BY o.ortsname, d.biotop;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Artenliste nach Standorten eines Projektes==&lt;br /&gt;
Hier: ProjektID=1 (Green roof, Hamburg)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Data.Artname, O.Ortsname AS Ort&lt;br /&gt;
FROM data_raw_idx AS Data, meta_Orte AS O, ref_Projekte_Orte AS R&lt;br /&gt;
WHERE R.ProjektID=1 &lt;br /&gt;
AND R.OrtID=O.IdOrt&lt;br /&gt;
AND Data.OrtID=R.OrtID&lt;br /&gt;
GROUP BY Ort, Artname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das selbe mit Ausgabe der Individuenzahl:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Data.Artname, SUM(Data.mm+Data.ww+Data.juv+Data.ind) AS Individuen, O.Ortsname AS Ort&lt;br /&gt;
FROM data_raw_idx AS Data, meta_Orte AS O, ref_Projekte_Orte AS R&lt;br /&gt;
WHERE R.ProjektID=1 &lt;br /&gt;
AND R.OrtID=O.IdOrt&lt;br /&gt;
AND Data.OrtID=R.OrtID&lt;br /&gt;
GROUP BY Ort, Artname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gesamtartenliste des Projektes ohne Angabe von Orten oder Individuen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Artname&lt;br /&gt;
FROM data_raw_idx AS d, ref_Projekte_Orte AS r&lt;br /&gt;
WHERE r.ProjektID=1 &lt;br /&gt;
AND r.OrtID=d.OrtID&lt;br /&gt;
GROUP BY Artname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Matrix-Abfrage: Gesamtartenzahlen nach Standorten und Jahren==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT SUM(mm+ww+juv+ind) AS Anzahl, Ortsname, SUBSTR(datum, 7, 4) AS Jahr&lt;br /&gt;
FROM data_raw_idx AS d, meta_Orte AS o, ref_Projekte_Orte AS p&lt;br /&gt;
WHERE p.ProjektID =1&lt;br /&gt;
AND p.OrtID=o.idOrt&lt;br /&gt;
AND d.OrtID=o.idOrt&lt;br /&gt;
GROUP BY Ortsname, Jahr;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In alternativer Sortierung nach Orten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT O.Ortsname AS Ort, Data.Artname, SUM(Data.mm+Data.ww+Data.juv+Data.ind) AS Individuen&lt;br /&gt;
FROM data_raw_idx AS Data, meta_Orte AS O, ref_Projekte_Orte AS R&lt;br /&gt;
WHERE R.ProjektID=1 &lt;br /&gt;
AND R.OrtID=O.IdOrt&lt;br /&gt;
AND Data.OrtID=R.OrtID&lt;br /&gt;
GROUP BY Ort, Artname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ortsname, Artname, Anzahl, Jahr:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT Ortsname, Artname, SUM(mm+ww+juv+ind) AS Anzahl, SUBSTR(datum, 7, 4) AS Jahr&lt;br /&gt;
FROM data_raw_idx AS d, meta_Orte AS o, ref_Projekte_Orte AS p&lt;br /&gt;
WHERE p.ProjektID =1&lt;br /&gt;
AND p.OrtID=o.idOrt&lt;br /&gt;
AND d.OrtID=o.idOrt&lt;br /&gt;
GROUP BY Ortsname, Jahr, Artname;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==UPDATE==&lt;br /&gt;
===Tabelle mit Daten einer andere Tabelle füllen===&lt;br /&gt;
Hier: In Tabelle &#039;&#039;info_Habitatbindung&#039;&#039; soll das Feld &#039;&#039;&#039;ArtID&#039;&#039;&#039; mit den Ids aus &#039;&#039;tax_Arten&#039;&#039; gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
UPDATE info_Habitatbindung &lt;br /&gt;
INNER JOIN tax_Arten ON Art=name&lt;br /&gt;
SET ArtId=IdArt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
INNER JOIN im Prinzip:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
UPDATE tabelle1 &lt;br /&gt;
INNER JOIN tabelle2 ON tabelle1.id = tabelle2.id &lt;br /&gt;
SET tabelle1.feld1 = tabelle2.wert1, &lt;br /&gt;
    tabelle1.feld2 = tabelle2.wert2 &lt;br /&gt;
WHERE tabelle2.status = &#039;aktuell&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kontroll-Abfragen==&lt;br /&gt;
Fallenwechsel-Daten für Standort n; hier n= 66 (Feldstr. Bunker)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT datum1, datum FROM `data_raw_idx` &lt;br /&gt;
WHERE OrtID=66&lt;br /&gt;
GROUP BY STR_TO_DATE(datum1, &#039;%d.%m.%Y&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das selbe mit Angabe der Differenz in Tagen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039; line&amp;gt;&lt;br /&gt;
SELECT datum1, datum, DATEDIFF(STR_TO_DATE(datum, &#039;%d.%m.%Y&#039;),STR_TO_DATE(datum1, &#039;%d.%m.%Y&#039;)) AS Tage&lt;br /&gt;
FROM `data_raw_idx` &lt;br /&gt;
WHERE OrtID=66&lt;br /&gt;
GROUP BY STR_TO_DATE(datum1, &#039;%d.%m.%Y&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;SQL&#039;&amp;gt;&lt;br /&gt;
DATEDIFF(expr1, expr2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[https://mariadb.com/docs/server/reference/sql-functions/date-time-functions/datediff https://mariadb.com/docs/server/reference/sql-functions/date-time-functions/datediff]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Linux:_Installierte_Software&amp;diff=135</id>
		<title>Linux: Installierte Software</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Linux:_Installierte_Software&amp;diff=135"/>
		<updated>2026-03-06T06:48:31Z</updated>

		<summary type="html">&lt;p&gt;Martin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kommandozeilen-Tools==&lt;br /&gt;
Immer vorher:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===PDF-Verarbeitung===&lt;br /&gt;
Am 13.01.2026 auf dem HP-Laptop poppler-unitilies installiert.&lt;br /&gt;
&lt;br /&gt;
Das Paket umfasst folgende Tools:&lt;br /&gt;
&lt;br /&gt;
*pdfdetach – Listet oder entnimmt eingebettete Dateien (Anhänge)&lt;br /&gt;
*pdffonts – Analyse von Schriften&lt;br /&gt;
*pdfimages – Entnahme von Bildern&lt;br /&gt;
*pdfinfo – Dokumentinformationen&lt;br /&gt;
*pdfseparate – Werkzeug zur Entnahme von Seiten&lt;br /&gt;
*pdfunite – Zusammenführen von PDF-Dateien&lt;br /&gt;
*pdfsig – prüft digitale Signaturen&lt;br /&gt;
*pdftocairo – Umwandlung von PDF nach PNG/JPEG/PDF/PS/EPS/SVG mittels Cairo&lt;br /&gt;
*pdftohtml – Umwandlung von PDF nach HTML&lt;br /&gt;
*pdftoppm – Umwandlung von PDF nach PPM/PNG/JPEG&lt;br /&gt;
*pdftops – Umwandlung von PDF nach PostScript (PS)&lt;br /&gt;
*pdftotext – Entnahme von Text&lt;br /&gt;
&lt;br /&gt;
Weitere Infos: [https://wiki.ubuntuusers.de/poppler-utils/ https://wiki.ubuntuusers.de/poppler-utils/]&lt;br /&gt;
&lt;br /&gt;
Poppler-Utilies gibt es auch für Python: [https://pypi.org/project/python-poppler/| https://pypi.org/project/python-poppler/]&lt;br /&gt;
&lt;br /&gt;
===Python-Bibliotheken===&lt;br /&gt;
Beispiel: numpy&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install python3-numpy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Zotero===&lt;br /&gt;
[https://wiki.ubuntuusers.de/Zotero/ https://wiki.ubuntuusers.de/Zotero/] gibt an:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install zotero&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies funktioniert leider nicht unter Linux Mint.&lt;br /&gt;
&lt;br /&gt;
Weitere Hilfe: [https://search.brave.com/search?q=Zotero+unter+Linux+mint+mit+Libre+Office+installieren&amp;amp;summary=1&amp;amp;conversation=08d093cb3d2e92c4c59c7f9d88f57357666c https://search.brave.com/search?q=Zotero+unter+Linux+mint+mit+Libre+Office+installieren&amp;amp;summary=1&amp;amp;conversation=08d093cb3d2e92c4c59c7f9d88f57357666c]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Linux]]&lt;br /&gt;
[[Kategorie: PDF]]&lt;br /&gt;
[[Kategorie: Python]]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Linux:_Installierte_Software&amp;diff=134</id>
		<title>Linux: Installierte Software</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Linux:_Installierte_Software&amp;diff=134"/>
		<updated>2026-03-06T06:46:58Z</updated>

		<summary type="html">&lt;p&gt;Martin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kommandozeilen-Tools==&lt;br /&gt;
Immer vorher:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===PDF-Verarbeitung===&lt;br /&gt;
Am 13.01.2026 auf dem HP-Laptop poppler-unitilies installiert.&lt;br /&gt;
&lt;br /&gt;
Das Paket umfasst folgende Tools:&lt;br /&gt;
&lt;br /&gt;
*pdfdetach – Listet oder entnimmt eingebettete Dateien (Anhänge)&lt;br /&gt;
*pdffonts – Analyse von Schriften&lt;br /&gt;
*pdfimages – Entnahme von Bildern&lt;br /&gt;
*pdfinfo – Dokumentinformationen&lt;br /&gt;
*pdfseparate – Werkzeug zur Entnahme von Seiten&lt;br /&gt;
*pdfunite – Zusammenführen von PDF-Dateien&lt;br /&gt;
*pdfsig – prüft digitale Signaturen&lt;br /&gt;
*pdftocairo – Umwandlung von PDF nach PNG/JPEG/PDF/PS/EPS/SVG mittels Cairo&lt;br /&gt;
*pdftohtml – Umwandlung von PDF nach HTML&lt;br /&gt;
*pdftoppm – Umwandlung von PDF nach PPM/PNG/JPEG&lt;br /&gt;
*pdftops – Umwandlung von PDF nach PostScript (PS)&lt;br /&gt;
*pdftotext – Entnahme von Text&lt;br /&gt;
&lt;br /&gt;
Weitere Infos: [https://wiki.ubuntuusers.de/poppler-utils/ https://wiki.ubuntuusers.de/poppler-utils/]&lt;br /&gt;
&lt;br /&gt;
Poppler-Utilies gibt es auch für Python: [https://pypi.org/project/python-poppler/| https://pypi.org/project/python-poppler/]&lt;br /&gt;
&lt;br /&gt;
===Python-Bibliotheken===&lt;br /&gt;
Beispiel: numpy&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install python3-numpy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Zotero===&lt;br /&gt;
[https://wiki.ubuntuusers.de/Zotero/ https://wiki.ubuntuusers.de/Zotero/] gibt an:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install zotero&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies funktioniert leider nicht unter Linux Mint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Linux]]&lt;br /&gt;
[[Kategorie: PDF]]&lt;br /&gt;
[[Kategorie: Python]]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Linux:_Installierte_Software&amp;diff=133</id>
		<title>Linux: Installierte Software</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Linux:_Installierte_Software&amp;diff=133"/>
		<updated>2026-03-06T06:42:23Z</updated>

		<summary type="html">&lt;p&gt;Martin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kommandozeilen-Tools==&lt;br /&gt;
Immer vorher:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===PDF-Verarbeitung===&lt;br /&gt;
Am 13.01.2026 auf dem HP-Laptop poppler-unitilies installiert.&lt;br /&gt;
&lt;br /&gt;
Das Paket umfasst folgende Tools:&lt;br /&gt;
&lt;br /&gt;
*pdfdetach – Listet oder entnimmt eingebettete Dateien (Anhänge)&lt;br /&gt;
*pdffonts – Analyse von Schriften&lt;br /&gt;
*pdfimages – Entnahme von Bildern&lt;br /&gt;
*pdfinfo – Dokumentinformationen&lt;br /&gt;
*pdfseparate – Werkzeug zur Entnahme von Seiten&lt;br /&gt;
*pdfunite – Zusammenführen von PDF-Dateien&lt;br /&gt;
*pdfsig – prüft digitale Signaturen&lt;br /&gt;
*pdftocairo – Umwandlung von PDF nach PNG/JPEG/PDF/PS/EPS/SVG mittels Cairo&lt;br /&gt;
*pdftohtml – Umwandlung von PDF nach HTML&lt;br /&gt;
*pdftoppm – Umwandlung von PDF nach PPM/PNG/JPEG&lt;br /&gt;
*pdftops – Umwandlung von PDF nach PostScript (PS)&lt;br /&gt;
*pdftotext – Entnahme von Text&lt;br /&gt;
&lt;br /&gt;
Weitere Infos: [https://wiki.ubuntuusers.de/poppler-utils/ https://wiki.ubuntuusers.de/poppler-utils/]&lt;br /&gt;
&lt;br /&gt;
Poppler-Utilies gibt es auch für Python: [https://pypi.org/project/python-poppler/| https://pypi.org/project/python-poppler/]&lt;br /&gt;
&lt;br /&gt;
===Python-Bibliotheken===&lt;br /&gt;
Beispiel: numpy&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install python3-numpy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Zotero===&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install zotero&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weitere Infos: [https://wiki.ubuntuusers.de/Zotero/ https://wiki.ubuntuusers.de/Zotero/]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Linux]]&lt;br /&gt;
[[Kategorie: PDF]]&lt;br /&gt;
[[Kategorie: Python]]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Linux_Essentials&amp;diff=132</id>
		<title>Linux Essentials</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Linux_Essentials&amp;diff=132"/>
		<updated>2026-03-01T06:30:27Z</updated>

		<summary type="html">&lt;p&gt;Martin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Grundlagen=&lt;br /&gt;
Version anzeigen: &amp;lt;pre&amp;gt;lsb_release -d&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Themen=&lt;br /&gt;
* [[Datei suchen]]&lt;br /&gt;
* [[Installation von Software]]&lt;br /&gt;
* [[Prüfen, ob Programm läuft]]&lt;br /&gt;
* [[Festplattenbelegung (Datenvolumen)]]&lt;br /&gt;
* [[Anwendungen]]&lt;br /&gt;
&lt;br /&gt;
=Konfiguration=&lt;br /&gt;
&lt;br /&gt;
==samba==&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo nano /etc/samba/smb.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Literatur-Verzeichnis:&lt;br /&gt;
&amp;lt;pre&amp;gt;/var/www/html/bib/Literatur&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Linux_Essentials&amp;diff=131</id>
		<title>Linux Essentials</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Linux_Essentials&amp;diff=131"/>
		<updated>2026-03-01T06:12:05Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* samba */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Grundlagen=&lt;br /&gt;
* [[Datei suchen]]&lt;br /&gt;
* [[Installation von Software]]&lt;br /&gt;
* [[Prüfen, ob Programm läuft]]&lt;br /&gt;
* [[Festplattenbelegung (Datenvolumen)]]&lt;br /&gt;
* [[Anwendungen]]&lt;br /&gt;
&lt;br /&gt;
=Konfiguration=&lt;br /&gt;
&lt;br /&gt;
==samba==&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo nano /etc/samba/smb.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Literatur-Verzeichnis:&lt;br /&gt;
&amp;lt;pre&amp;gt;/var/www/html/bib/Literatur&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Linux_Essentials&amp;diff=130</id>
		<title>Linux Essentials</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Linux_Essentials&amp;diff=130"/>
		<updated>2026-03-01T05:54:52Z</updated>

		<summary type="html">&lt;p&gt;Martin: KonfigurATION: SAMBA&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Grundlagen=&lt;br /&gt;
* [[Datei suchen]]&lt;br /&gt;
* [[Installation von Software]]&lt;br /&gt;
* [[Prüfen, ob Programm läuft]]&lt;br /&gt;
* [[Festplattenbelegung (Datenvolumen)]]&lt;br /&gt;
* [[Anwendungen]]&lt;br /&gt;
&lt;br /&gt;
=Konfiguration=&lt;br /&gt;
&lt;br /&gt;
==samba==&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo nano /etc/samba/smb.conf&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Linux_Network&amp;diff=129</id>
		<title>Linux Network</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Linux_Network&amp;diff=129"/>
		<updated>2026-02-26T19:26:30Z</updated>

		<summary type="html">&lt;p&gt;Martin: samba einrichten&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie: Linux]]&lt;br /&gt;
==Bandbreitenmessung an Schnittstelle==&lt;br /&gt;
Mit [https://wiki.ubuntuusers.de/iftop/ iptop] (Ubuntu Wiki)&lt;br /&gt;
&lt;br /&gt;
===Start===&lt;br /&gt;
# Netzwerkadapter feststellen mit &#039;&#039;&#039;ifconfig&#039;&#039;&#039; ( &#039;&#039;&#039;ip a&#039;&#039;&#039;), übersichtlicher ist &#039;&#039;&#039;route -n&#039;&#039;&#039;; an meinem HP-Z ist es die Schnittstelle: &#039;&#039;&#039;wlp0s20f3&#039;&#039;&#039;&lt;br /&gt;
# Monitoring starten: &amp;lt;pre&amp;gt;sudo iftop -i wlps20f3 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==samba einrichten==&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/samba/smb.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verzeichnis angeben und Rechte definieren.&lt;br /&gt;
&lt;br /&gt;
Anschließend User für samba freigeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo smbpasswd -a username passwd&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Kategorie:PDF&amp;diff=128</id>
		<title>Kategorie:PDF</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Kategorie:PDF&amp;diff=128"/>
		<updated>2026-02-20T21:11:54Z</updated>

		<summary type="html">&lt;p&gt;Martin: Die Seite wurde neu angelegt: „Artikel rund um das PDF-Format:“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Artikel rund um das PDF-Format:&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Linux:_Installierte_Software&amp;diff=127</id>
		<title>Linux: Installierte Software</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Linux:_Installierte_Software&amp;diff=127"/>
		<updated>2026-02-20T21:11:28Z</updated>

		<summary type="html">&lt;p&gt;Martin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kommandozeilen-Tools==&lt;br /&gt;
===PDF-Verarbeitung===&lt;br /&gt;
Am 13.01.2026 auf dem HP-Laptop poppler-unitilies installiert.&lt;br /&gt;
&lt;br /&gt;
Das Paket umfasst folgende Tools:&lt;br /&gt;
&lt;br /&gt;
*pdfdetach – Listet oder entnimmt eingebettete Dateien (Anhänge)&lt;br /&gt;
*pdffonts – Analyse von Schriften&lt;br /&gt;
*pdfimages – Entnahme von Bildern&lt;br /&gt;
*pdfinfo – Dokumentinformationen&lt;br /&gt;
*pdfseparate – Werkzeug zur Entnahme von Seiten&lt;br /&gt;
*pdfunite – Zusammenführen von PDF-Dateien&lt;br /&gt;
*pdfsig – prüft digitale Signaturen&lt;br /&gt;
*pdftocairo – Umwandlung von PDF nach PNG/JPEG/PDF/PS/EPS/SVG mittels Cairo&lt;br /&gt;
*pdftohtml – Umwandlung von PDF nach HTML&lt;br /&gt;
*pdftoppm – Umwandlung von PDF nach PPM/PNG/JPEG&lt;br /&gt;
*pdftops – Umwandlung von PDF nach PostScript (PS)&lt;br /&gt;
*pdftotext – Entnahme von Text&lt;br /&gt;
&lt;br /&gt;
Weitere Infos: [https://wiki.ubuntuusers.de/poppler-utils/ https://wiki.ubuntuusers.de/poppler-utils/]&lt;br /&gt;
&lt;br /&gt;
Poppler-Utilies gibt es auch für Python: [https://pypi.org/project/python-poppler/| https://pypi.org/project/python-poppler/]&lt;br /&gt;
&lt;br /&gt;
===Python-Bibliotheken===&lt;br /&gt;
Beispiel: numpy&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install python3-numpy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Linux]]&lt;br /&gt;
[[Kategorie: PDF]]&lt;br /&gt;
[[Kategorie: Python]]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Kategorie:Python&amp;diff=126</id>
		<title>Kategorie:Python</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Kategorie:Python&amp;diff=126"/>
		<updated>2026-02-20T21:10:41Z</updated>

		<summary type="html">&lt;p&gt;Martin: Die Seite wurde neu angelegt: „Artikel zur Skriptsprache &amp;#039;&amp;#039;Python&amp;#039;&amp;#039;:“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Artikel zur Skriptsprache &#039;&#039;Python&#039;&#039;:&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Linux:_Installierte_Software&amp;diff=125</id>
		<title>Linux: Installierte Software</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Linux:_Installierte_Software&amp;diff=125"/>
		<updated>2026-02-20T21:09:59Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* Kommandozeilen-Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kommandozeilen-Tools==&lt;br /&gt;
===PDF-Verarbeitung===&lt;br /&gt;
Am 13.01.2026 auf dem HP-Laptop poppler-unitilies installiert.&lt;br /&gt;
&lt;br /&gt;
Das Paket umfasst folgende Tools:&lt;br /&gt;
&lt;br /&gt;
*pdfdetach – Listet oder entnimmt eingebettete Dateien (Anhänge)&lt;br /&gt;
*pdffonts – Analyse von Schriften&lt;br /&gt;
*pdfimages – Entnahme von Bildern&lt;br /&gt;
*pdfinfo – Dokumentinformationen&lt;br /&gt;
*pdfseparate – Werkzeug zur Entnahme von Seiten&lt;br /&gt;
*pdfunite – Zusammenführen von PDF-Dateien&lt;br /&gt;
*pdfsig – prüft digitale Signaturen&lt;br /&gt;
*pdftocairo – Umwandlung von PDF nach PNG/JPEG/PDF/PS/EPS/SVG mittels Cairo&lt;br /&gt;
*pdftohtml – Umwandlung von PDF nach HTML&lt;br /&gt;
*pdftoppm – Umwandlung von PDF nach PPM/PNG/JPEG&lt;br /&gt;
*pdftops – Umwandlung von PDF nach PostScript (PS)&lt;br /&gt;
*pdftotext – Entnahme von Text&lt;br /&gt;
&lt;br /&gt;
Weitere Infos: [https://wiki.ubuntuusers.de/poppler-utils/ https://wiki.ubuntuusers.de/poppler-utils/]&lt;br /&gt;
&lt;br /&gt;
Poppler-Utilies gibt es auch für Python: [https://pypi.org/project/python-poppler/| https://pypi.org/project/python-poppler/]&lt;br /&gt;
&lt;br /&gt;
===Python-Bibliotheken===&lt;br /&gt;
Beispiel: numpy&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install python3-numpy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Linux]]&lt;br /&gt;
[[Kategorie: Python]]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Linux:_Installierte_Software&amp;diff=124</id>
		<title>Linux: Installierte Software</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Linux:_Installierte_Software&amp;diff=124"/>
		<updated>2026-02-20T21:09:22Z</updated>

		<summary type="html">&lt;p&gt;Martin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kommandozeilen-Tools==&lt;br /&gt;
===PDF-Verarbeitung===&lt;br /&gt;
Am 13.01.2026 auf dem HP-Laptop poppler-unitilies installiert.&lt;br /&gt;
&lt;br /&gt;
Das Paket umfasst folgende Tools:&lt;br /&gt;
&lt;br /&gt;
*pdfdetach – Listet oder entnimmt eingebettete Dateien (Anhänge)&lt;br /&gt;
*pdffonts – Analyse von Schriften&lt;br /&gt;
*pdfimages – Entnahme von Bildern&lt;br /&gt;
*pdfinfo – Dokumentinformationen&lt;br /&gt;
*pdfseparate – Werkzeug zur Entnahme von Seiten&lt;br /&gt;
*pdfunite – Zusammenführen von PDF-Dateien&lt;br /&gt;
*pdfsig – prüft digitale Signaturen&lt;br /&gt;
*pdftocairo – Umwandlung von PDF nach PNG/JPEG/PDF/PS/EPS/SVG mittels Cairo&lt;br /&gt;
*pdftohtml – Umwandlung von PDF nach HTML&lt;br /&gt;
*pdftoppm – Umwandlung von PDF nach PPM/PNG/JPEG&lt;br /&gt;
*pdftops – Umwandlung von PDF nach PostScript (PS)&lt;br /&gt;
*pdftotext – Entnahme von Text&lt;br /&gt;
&lt;br /&gt;
Weitere Infos: [https://wiki.ubuntuusers.de/poppler-utils/ https://wiki.ubuntuusers.de/poppler-utils/]&lt;br /&gt;
&lt;br /&gt;
Poppler-Utilies gibt es auch für Python: [https://pypi.org/project/python-poppler/| https://pypi.org/project/python-poppler/]&lt;br /&gt;
&lt;br /&gt;
===Python-Bibliotheken===&lt;br /&gt;
Beispiel: numpy&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install python3-numpy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Linux]]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Hauptseite&amp;diff=123</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Hauptseite&amp;diff=123"/>
		<updated>2026-02-15T18:18:38Z</updated>

		<summary type="html">&lt;p&gt;Martin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wissensdatenbank für alle Fälle.&lt;br /&gt;
&lt;br /&gt;
==Haupt-Themen==&lt;br /&gt;
* [[Faunistische Begriffe]]&lt;br /&gt;
* Datenbank &amp;amp; SQL&lt;br /&gt;
** [[Datenbank-Server technisch]]&lt;br /&gt;
** [[Spinnendatenbank]]&lt;br /&gt;
* Betriebssystem&lt;br /&gt;
** [[Linux Essentials]]&lt;br /&gt;
** [[Programm starten]]&lt;br /&gt;
** [[Linux: Installierte Software]]&lt;br /&gt;
** [[Linux Network]]&lt;br /&gt;
* PC und Technik allgemein&lt;br /&gt;
* Raspian Pi &amp;amp; Co.&lt;br /&gt;
* Gesundheit&lt;br /&gt;
* [[Haushalt]]&lt;br /&gt;
&lt;br /&gt;
===Zum Wiki an sich===&lt;br /&gt;
[[Wiki-Konfiguration]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--== Starthilfen ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste der Konfigurationsparameter]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Häufige Fragen zu MediaWiki]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ Mailingliste zu neuen Versionen von MediaWiki]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Übersetze MediaWiki für deine Sprache]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Erfahre, wie du Spam auf deinem Wiki bekämpfen kannst]&lt;br /&gt;
-&amp;gt;&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=LInux_Network&amp;diff=122</id>
		<title>LInux Network</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=LInux_Network&amp;diff=122"/>
		<updated>2026-02-15T18:18:08Z</updated>

		<summary type="html">&lt;p&gt;Martin: Martin verschob die Seite LInux Network nach Linux Network: Tippfehler&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[Linux Network]]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Linux_Network&amp;diff=121</id>
		<title>Linux Network</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Linux_Network&amp;diff=121"/>
		<updated>2026-02-15T18:18:08Z</updated>

		<summary type="html">&lt;p&gt;Martin: Martin verschob die Seite LInux Network nach Linux Network: Tippfehler&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie: Linux]]&lt;br /&gt;
==Bandbreitenmessung an Schnittstelle==&lt;br /&gt;
Mit [https://wiki.ubuntuusers.de/iftop/ iptop] (Ubuntu Wiki)&lt;br /&gt;
&lt;br /&gt;
===Start===&lt;br /&gt;
# Netzwerkadapter feststellen mit &#039;&#039;&#039;ifconfig&#039;&#039;&#039; ( &#039;&#039;&#039;ip a&#039;&#039;&#039;), übersichtlicher ist &#039;&#039;&#039;route -n&#039;&#039;&#039;; an meinem HP-Z ist es die Schnittstelle: &#039;&#039;&#039;wlp0s20f3&#039;&#039;&#039;&lt;br /&gt;
# Monitoring starten: &amp;lt;pre&amp;gt;sudo iftop -i wlps20f3 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Linux_Network&amp;diff=120</id>
		<title>Linux Network</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Linux_Network&amp;diff=120"/>
		<updated>2026-02-15T18:17:35Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* Start */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie: Linux]]&lt;br /&gt;
==Bandbreitenmessung an Schnittstelle==&lt;br /&gt;
Mit [https://wiki.ubuntuusers.de/iftop/ iptop] (Ubuntu Wiki)&lt;br /&gt;
&lt;br /&gt;
===Start===&lt;br /&gt;
# Netzwerkadapter feststellen mit &#039;&#039;&#039;ifconfig&#039;&#039;&#039; ( &#039;&#039;&#039;ip a&#039;&#039;&#039;), übersichtlicher ist &#039;&#039;&#039;route -n&#039;&#039;&#039;; an meinem HP-Z ist es die Schnittstelle: &#039;&#039;&#039;wlp0s20f3&#039;&#039;&#039;&lt;br /&gt;
# Monitoring starten: &amp;lt;pre&amp;gt;sudo iftop -i wlps20f3 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Linux_Network&amp;diff=119</id>
		<title>Linux Network</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Linux_Network&amp;diff=119"/>
		<updated>2026-02-15T18:09:28Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* Bandbreitenmessung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie: Linux]]&lt;br /&gt;
==Bandbreitenmessung an Schnittstelle==&lt;br /&gt;
Mit [https://wiki.ubuntuusers.de/iftop/ iptop] (Ubuntu Wiki)&lt;br /&gt;
&lt;br /&gt;
===Start===&lt;br /&gt;
# Netzwerkadapter feststellen mit &#039;&#039;&#039;ifconfig&#039;&#039;&#039; alternativ geht auch &#039;&#039;&#039;ip a&#039;&#039;&#039;; an meinem HP-Z ist es die Schnittstelle: &#039;&#039;&#039;wlp0s20f3&#039;&#039;&#039;&lt;br /&gt;
# Monitoring starten: &amp;lt;pre&amp;gt;sudo iftop -i wlps20f3 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Linux_Network&amp;diff=118</id>
		<title>Linux Network</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Linux_Network&amp;diff=118"/>
		<updated>2026-02-15T18:09:07Z</updated>

		<summary type="html">&lt;p&gt;Martin: Die Seite wurde neu angelegt: „Kategorie: Linux ==Bandbreitenmessung== Mit [https://wiki.ubuntuusers.de/iftop/ iptop] (Ubuntu Wiki)  ===Start=== # Netzwerkadapter feststellen mit &amp;#039;&amp;#039;&amp;#039;ifconfig&amp;#039;&amp;#039;&amp;#039; alternativ geht auch &amp;#039;&amp;#039;&amp;#039;ip a&amp;#039;&amp;#039;&amp;#039;; an meinem HP-Z ist es die Schnittstelle: &amp;#039;&amp;#039;&amp;#039;wlp0s20f3&amp;#039;&amp;#039;&amp;#039; # Monitoring starten: &amp;lt;pre&amp;gt;sudo iftop -i wlps20f3 &amp;lt;/pre&amp;gt;“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie: Linux]]&lt;br /&gt;
==Bandbreitenmessung==&lt;br /&gt;
Mit [https://wiki.ubuntuusers.de/iftop/ iptop] (Ubuntu Wiki)&lt;br /&gt;
&lt;br /&gt;
===Start===&lt;br /&gt;
# Netzwerkadapter feststellen mit &#039;&#039;&#039;ifconfig&#039;&#039;&#039; alternativ geht auch &#039;&#039;&#039;ip a&#039;&#039;&#039;; an meinem HP-Z ist es die Schnittstelle: &#039;&#039;&#039;wlp0s20f3&#039;&#039;&#039;&lt;br /&gt;
# Monitoring starten: &amp;lt;pre&amp;gt;sudo iftop -i wlps20f3 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Hauptseite&amp;diff=117</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Hauptseite&amp;diff=117"/>
		<updated>2026-02-15T17:58:58Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* Haupt-Themen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wissensdatenbank für alle Fälle.&lt;br /&gt;
&lt;br /&gt;
==Haupt-Themen==&lt;br /&gt;
* [[Faunistische Begriffe]]&lt;br /&gt;
* Datenbank &amp;amp; SQL&lt;br /&gt;
** [[Datenbank-Server technisch]]&lt;br /&gt;
** [[Spinnendatenbank]]&lt;br /&gt;
* Betriebssystem&lt;br /&gt;
** [[Linux Essentials]]&lt;br /&gt;
** [[Programm starten]]&lt;br /&gt;
** [[Linux: Installierte Software]]&lt;br /&gt;
** [[LInux Network]]&lt;br /&gt;
* PC und Technik allgemein&lt;br /&gt;
* Raspian Pi &amp;amp; Co.&lt;br /&gt;
* Gesundheit&lt;br /&gt;
* [[Haushalt]]&lt;br /&gt;
&lt;br /&gt;
===Zum Wiki an sich===&lt;br /&gt;
[[Wiki-Konfiguration]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--== Starthilfen ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste der Konfigurationsparameter]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Häufige Fragen zu MediaWiki]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ Mailingliste zu neuen Versionen von MediaWiki]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Übersetze MediaWiki für deine Sprache]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Erfahre, wie du Spam auf deinem Wiki bekämpfen kannst]&lt;br /&gt;
-&amp;gt;&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Programm_starten&amp;diff=116</id>
		<title>Programm starten</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Programm_starten&amp;diff=116"/>
		<updated>2026-02-10T08:51:29Z</updated>

		<summary type="html">&lt;p&gt;Martin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==FTP-Server starten==&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo systemctl start proftpd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Webserver neu starten==&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo systemctl restart apache2&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Programm_starten&amp;diff=115</id>
		<title>Programm starten</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Programm_starten&amp;diff=115"/>
		<updated>2026-02-09T21:56:23Z</updated>

		<summary type="html">&lt;p&gt;Martin: sudo systemctl start proftpd&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==FTP-Server starten==&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo systemctl start proftpd&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Hauptseite&amp;diff=114</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Hauptseite&amp;diff=114"/>
		<updated>2026-02-09T21:55:32Z</updated>

		<summary type="html">&lt;p&gt;Martin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wissensdatenbank für alle Fälle.&lt;br /&gt;
&lt;br /&gt;
==Haupt-Themen==&lt;br /&gt;
* [[Faunistische Begriffe]]&lt;br /&gt;
* Datenbank &amp;amp; SQL&lt;br /&gt;
** [[Datenbank-Server technisch]]&lt;br /&gt;
** [[Spinnendatenbank]]&lt;br /&gt;
* Betriebssystem&lt;br /&gt;
** [[Linux Essentials]]&lt;br /&gt;
** [[Programm starten]]&lt;br /&gt;
** [[Linux: Installierte Software]]&lt;br /&gt;
* PC und Technik allgemein&lt;br /&gt;
* Raspian Pi &amp;amp; Co.&lt;br /&gt;
* Gesundheit&lt;br /&gt;
* [[Haushalt]]&lt;br /&gt;
&lt;br /&gt;
===Zum Wiki an sich===&lt;br /&gt;
[[Wiki-Konfiguration]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--== Starthilfen ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste der Konfigurationsparameter]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Häufige Fragen zu MediaWiki]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ Mailingliste zu neuen Versionen von MediaWiki]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Übersetze MediaWiki für deine Sprache]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Erfahre, wie du Spam auf deinem Wiki bekämpfen kannst]&lt;br /&gt;
-&amp;gt;&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Anwendungen&amp;diff=113</id>
		<title>Anwendungen</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Anwendungen&amp;diff=113"/>
		<updated>2026-02-06T13:46:26Z</updated>

		<summary type="html">&lt;p&gt;Martin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
===pwgen (Passwortgenerator)===&lt;br /&gt;
Installation:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;shell&#039;&amp;gt;&lt;br /&gt;
sudo apt install pwgen -y&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Passworte erzeugen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;shell&#039;&amp;gt;&lt;br /&gt;
pwgen -s 32 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erzeugt Passwort mit 32 Zeichen und Ausgabe in einer Zeile&lt;br /&gt;
&lt;br /&gt;
Sonderzeichen werden mit -y hinzugefügt&lt;br /&gt;
&lt;br /&gt;
Passworte erzeugen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;shell&#039;&amp;gt;&lt;br /&gt;
pwgen -sy 15 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man die letzte 1 weg lässt, werden Blöcke von Passworten ausgegeben, von denen man sich das genehmste aussichen aussuchen kann. Das sieht dann z.B. so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;text&#039;&amp;gt;&lt;br /&gt;
pwgen -sy 12 &lt;br /&gt;
as&amp;quot;{O1t}^S5q *!dn1f:D4M8\ Ga%{1y3g1lV~ 2=O3YYJE=gIo i-5w]{4AT5ac %s2_UTqC#5HJ&lt;br /&gt;
y{]=Or,+6VY9 _,4R~.GoJ9WY 3l8)XOjr)#3a u1nr6uN~0pZk UCF}d6tG^F{0 EW;q%5W8;`[\&lt;br /&gt;
IYN=0]*p4Qwh ~e!n^8*|lq:I dim0tf&amp;quot;#X_o$ [)3,m^OJ;q\9 ](J.#V1RedCS &amp;quot;=]\9SY8LO5d&lt;br /&gt;
&amp;gt;8]pbuqFulNU mVAa8/V}URm. o+F&amp;gt;7x)WWn{; YO$}3uS-[LBP ;n%(.RWg9A5s /Bf#4}`1IJ19&lt;br /&gt;
auGuQM?j$7#d XDvk/8G/Tg6G &amp;amp;LuGgc(#2QiU &amp;lt;&amp;quot;~EM|Lr*6M9 Gxf],8i+&amp;gt;s~J wsjj&amp;quot;T&amp;quot;e&amp;amp;6k0&lt;br /&gt;
Lke:U}Hkdn0X ]2MAW2hLk7ed jD#S)nCfF38R n&amp;quot;&#039;kG6$RZH&amp;gt;F H5Ptvo&amp;quot;K^gX! /jDB}S/{2&amp;gt;|(&lt;br /&gt;
HsT(m28*&amp;amp;&#039;QD 1j@:)x@zjKVv OV6Gt&amp;quot;&amp;amp;/T46x #(L3iCGi=rFa G^6qvS#@hbPV wmIV/BgT:Hk5&lt;br /&gt;
s3N/_e6*6qXi wC*B%{/_5R@] gd%TnUa33#Cj Q&amp;amp;S(p9N&amp;quot;-K`U cw92iG&amp;gt;[hyR&amp;quot; wPba;xXXB8pM&lt;br /&gt;
M6|IUV732Z0x ]&#039;4}nr$9V,[6 _NL&amp;amp;RP61.ua| &amp;amp;PIt9/)&amp;lt;z+rl j&amp;lt;B*(0o%YfuG ]c{t9d?[5[oA&lt;br /&gt;
IK:fcAX&amp;amp;-Yh6 e2ZCX&amp;gt;EO^pT&amp;amp; U%/0uQ1ut_SZ 29RP/H5@2z[P a&#039;xr@v&amp;quot;?eYe4 ?.Q+e!`O/0I/&lt;br /&gt;
`d/L&amp;gt;??v6kj6 Zk]c~yzf.P2S @${vq_vSMXo4 -*+6]gD[6$;f AIAWXl9&amp;lt;gUXO &amp;gt;_&amp;gt;+nA4^+Ys&amp;lt;&lt;br /&gt;
a&amp;lt;Lef1Cky!J! g#U|CZ70pq)c tZ\`p6h|L009 )]zu2r5c(9VT o&amp;gt;+m1|yIJ;#| *Gu~}2kjfeCZ&lt;br /&gt;
rTCaZ\4|dcK_ x[g}/Y4prVO# ahC-#~F9K&amp;gt;U&amp;lt; 7,gXWjm7*&#039;*7 ITnH@7&amp;amp;\)xt% [Y4:w=OejpY9&lt;br /&gt;
E&amp;gt;IZcM692&amp;amp;n- !$fsN5!M||+K wl);&amp;lt;Aa0[JH# |B4doU(7gG^` S_4e{FB?0GpZ %v6Gy|#&amp;lt;nTx&amp;gt;&lt;br /&gt;
uYP5dvvk_qTy uk,?G-[+2Uei j,b+2MtszX*\ QBSC&amp;lt;O!mT8Ev D&amp;gt;=XCsd3mQ^{ yd01GBT7fN^&amp;gt;&lt;br /&gt;
U\/8ZPys,m~C (&#039;:6l=~}M4%w zv|p3{S$-PAx Gh$_I].nW4pv ^%LkB-F~h-3o ub`_XBc9rFp1&lt;br /&gt;
&amp;gt;*kgVa$&amp;gt;6p;q jAI*&amp;gt;f4#PZP6 [Xo(K:$y3/%O (H5`fxy^w`HT 6&amp;lt;}Prz~5Z+;p i_B|kK^1]xHP&lt;br /&gt;
iRHi7~ML9+-m }S6v1{kn+ti9 d2L.dZH4\\`\ xf%8&amp;lt;d%}Bcx\ OUUDS\6N1$~&#039; 3YC$|&amp;gt;uH{9&amp;lt;V&lt;br /&gt;
O}-b=Eq9[Jk&amp;lt; O40`ITP-q=qL R&amp;quot;z@&amp;lt;x7|-Qo5 shXw;mpDc&amp;gt;1( .gjtd.aGl=7&amp;amp; H)%JD7rmJu9o&lt;br /&gt;
V7}bRRGzkd8Q 6QviAc8_Xp_A kq4;u$Z&amp;quot;#/8: .f:1\,(ADXG9 )J4m.;&amp;lt;%..GR X4G]}=I!m{)u&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doku online: [https://linux.die.net/man/1/pwgen https://linux.die.net/man/1/pwgen]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Anwendungen&amp;diff=112</id>
		<title>Anwendungen</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Anwendungen&amp;diff=112"/>
		<updated>2026-02-06T13:45:40Z</updated>

		<summary type="html">&lt;p&gt;Martin: /* pwgen (Passwortgenerator) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
===pwgen (Passwortgenerator)===&lt;br /&gt;
Installation:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;shell&#039;&amp;gt;&lt;br /&gt;
sudo apt install pwgen -y&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Passworte erzeugen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;shell&#039;&amp;gt;&lt;br /&gt;
pwgen -s 32 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erzeugt Passwort mit 32 Zeichen und Ausgabe in einer Zeile&lt;br /&gt;
&lt;br /&gt;
Sonderzeichen werden mit -y hinzugefügt&lt;br /&gt;
&lt;br /&gt;
Passworte erzeugen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;shell&#039;&amp;gt;&lt;br /&gt;
pwgen -sy 15 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man die letzte 1 weg lässt, werden Blöcke von Passworten ausgegeben, von denen man sich das genehmste aussichen aussuchen kann. Das sieht dann z.B. so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;shell&#039;&amp;gt;&lt;br /&gt;
pwgen -sy 12 &lt;br /&gt;
as&amp;quot;{O1t}^S5q *!dn1f:D4M8\ Ga%{1y3g1lV~ 2=O3YYJE=gIo i-5w]{4AT5ac %s2_UTqC#5HJ&lt;br /&gt;
y{]=Or,+6VY9 _,4R~.GoJ9WY 3l8)XOjr)#3a u1nr6uN~0pZk UCF}d6tG^F{0 EW;q%5W8;`[\&lt;br /&gt;
IYN=0]*p4Qwh ~e!n^8*|lq:I dim0tf&amp;quot;#X_o$ [)3,m^OJ;q\9 ](J.#V1RedCS &amp;quot;=]\9SY8LO5d&lt;br /&gt;
&amp;gt;8]pbuqFulNU mVAa8/V}URm. o+F&amp;gt;7x)WWn{; YO$}3uS-[LBP ;n%(.RWg9A5s /Bf#4}`1IJ19&lt;br /&gt;
auGuQM?j$7#d XDvk/8G/Tg6G &amp;amp;LuGgc(#2QiU &amp;lt;&amp;quot;~EM|Lr*6M9 Gxf],8i+&amp;gt;s~J wsjj&amp;quot;T&amp;quot;e&amp;amp;6k0&lt;br /&gt;
Lke:U}Hkdn0X ]2MAW2hLk7ed jD#S)nCfF38R n&amp;quot;&#039;kG6$RZH&amp;gt;F H5Ptvo&amp;quot;K^gX! /jDB}S/{2&amp;gt;|(&lt;br /&gt;
HsT(m28*&amp;amp;&#039;QD 1j@:)x@zjKVv OV6Gt&amp;quot;&amp;amp;/T46x #(L3iCGi=rFa G^6qvS#@hbPV wmIV/BgT:Hk5&lt;br /&gt;
s3N/_e6*6qXi wC*B%{/_5R@] gd%TnUa33#Cj Q&amp;amp;S(p9N&amp;quot;-K`U cw92iG&amp;gt;[hyR&amp;quot; wPba;xXXB8pM&lt;br /&gt;
M6|IUV732Z0x ]&#039;4}nr$9V,[6 _NL&amp;amp;RP61.ua| &amp;amp;PIt9/)&amp;lt;z+rl j&amp;lt;B*(0o%YfuG ]c{t9d?[5[oA&lt;br /&gt;
IK:fcAX&amp;amp;-Yh6 e2ZCX&amp;gt;EO^pT&amp;amp; U%/0uQ1ut_SZ 29RP/H5@2z[P a&#039;xr@v&amp;quot;?eYe4 ?.Q+e!`O/0I/&lt;br /&gt;
`d/L&amp;gt;??v6kj6 Zk]c~yzf.P2S @${vq_vSMXo4 -*+6]gD[6$;f AIAWXl9&amp;lt;gUXO &amp;gt;_&amp;gt;+nA4^+Ys&amp;lt;&lt;br /&gt;
a&amp;lt;Lef1Cky!J! g#U|CZ70pq)c tZ\`p6h|L009 )]zu2r5c(9VT o&amp;gt;+m1|yIJ;#| *Gu~}2kjfeCZ&lt;br /&gt;
rTCaZ\4|dcK_ x[g}/Y4prVO# ahC-#~F9K&amp;gt;U&amp;lt; 7,gXWjm7*&#039;*7 ITnH@7&amp;amp;\)xt% [Y4:w=OejpY9&lt;br /&gt;
E&amp;gt;IZcM692&amp;amp;n- !$fsN5!M||+K wl);&amp;lt;Aa0[JH# |B4doU(7gG^` S_4e{FB?0GpZ %v6Gy|#&amp;lt;nTx&amp;gt;&lt;br /&gt;
uYP5dvvk_qTy uk,?G-[+2Uei j,b+2MtszX*\ QBSC&amp;lt;O!mT8Ev D&amp;gt;=XCsd3mQ^{ yd01GBT7fN^&amp;gt;&lt;br /&gt;
U\/8ZPys,m~C (&#039;:6l=~}M4%w zv|p3{S$-PAx Gh$_I].nW4pv ^%LkB-F~h-3o ub`_XBc9rFp1&lt;br /&gt;
&amp;gt;*kgVa$&amp;gt;6p;q jAI*&amp;gt;f4#PZP6 [Xo(K:$y3/%O (H5`fxy^w`HT 6&amp;lt;}Prz~5Z+;p i_B|kK^1]xHP&lt;br /&gt;
iRHi7~ML9+-m }S6v1{kn+ti9 d2L.dZH4\\`\ xf%8&amp;lt;d%}Bcx\ OUUDS\6N1$~&#039; 3YC$|&amp;gt;uH{9&amp;lt;V&lt;br /&gt;
O}-b=Eq9[Jk&amp;lt; O40`ITP-q=qL R&amp;quot;z@&amp;lt;x7|-Qo5 shXw;mpDc&amp;gt;1( .gjtd.aGl=7&amp;amp; H)%JD7rmJu9o&lt;br /&gt;
V7}bRRGzkd8Q 6QviAc8_Xp_A kq4;u$Z&amp;quot;#/8: .f:1\,(ADXG9 )J4m.;&amp;lt;%..GR X4G]}=I!m{)u&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doku online: [https://linux.die.net/man/1/pwgen https://linux.die.net/man/1/pwgen]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Anwendungen&amp;diff=111</id>
		<title>Anwendungen</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Anwendungen&amp;diff=111"/>
		<updated>2026-02-06T13:43:57Z</updated>

		<summary type="html">&lt;p&gt;Martin: Die Seite wurde neu angelegt: „ ===pwgen (Passwortgenerator)=== Installation: &amp;lt;syntaxhighlight lang=&amp;#039;bash&amp;#039;&amp;gt; sudo apt install pwgen -y &amp;lt;/syntaxhighlight&amp;gt;  Passworte erzeugen: &amp;lt;syntaxhighlight lang=&amp;#039;bash&amp;#039;&amp;gt; pwgen -s 32 1 &amp;lt;/syntaxhighlight&amp;gt;  Erzeugt Passwort mit 32 Zeichen und Ausgabe in einer Zeile  Sonderzeichen werden mit -y hinzugefügt  Passworte erzeugen: &amp;lt;syntaxhighlight lang=&amp;#039;bash&amp;#039;&amp;gt; pwgen -sy 15 1 &amp;lt;/syntaxhighlight&amp;gt;  Wenn man die letzte 1 weg lässt, werden Blöcke von Passworten a…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
===pwgen (Passwortgenerator)===&lt;br /&gt;
Installation:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
sudo apt install pwgen -y&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Passworte erzeugen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
pwgen -s 32 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erzeugt Passwort mit 32 Zeichen und Ausgabe in einer Zeile&lt;br /&gt;
&lt;br /&gt;
Sonderzeichen werden mit -y hinzugefügt&lt;br /&gt;
&lt;br /&gt;
Passworte erzeugen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;bash&#039;&amp;gt;&lt;br /&gt;
pwgen -sy 15 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man die letzte 1 weg lässt, werden Blöcke von Passworten ausgegeben, von denen man sich das genehmste aussichen aussuchen kann. Das sieht dann z.B. so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&#039;no&#039;&amp;gt;&lt;br /&gt;
pwgen -sy 12 &lt;br /&gt;
as&amp;quot;{O1t}^S5q *!dn1f:D4M8\ Ga%{1y3g1lV~ 2=O3YYJE=gIo i-5w]{4AT5ac %s2_UTqC#5HJ&lt;br /&gt;
y{]=Or,+6VY9 _,4R~.GoJ9WY 3l8)XOjr)#3a u1nr6uN~0pZk UCF}d6tG^F{0 EW;q%5W8;`[\&lt;br /&gt;
IYN=0]*p4Qwh ~e!n^8*|lq:I dim0tf&amp;quot;#X_o$ [)3,m^OJ;q\9 ](J.#V1RedCS &amp;quot;=]\9SY8LO5d&lt;br /&gt;
&amp;gt;8]pbuqFulNU mVAa8/V}URm. o+F&amp;gt;7x)WWn{; YO$}3uS-[LBP ;n%(.RWg9A5s /Bf#4}`1IJ19&lt;br /&gt;
auGuQM?j$7#d XDvk/8G/Tg6G &amp;amp;LuGgc(#2QiU &amp;lt;&amp;quot;~EM|Lr*6M9 Gxf],8i+&amp;gt;s~J wsjj&amp;quot;T&amp;quot;e&amp;amp;6k0&lt;br /&gt;
Lke:U}Hkdn0X ]2MAW2hLk7ed jD#S)nCfF38R n&amp;quot;&#039;kG6$RZH&amp;gt;F H5Ptvo&amp;quot;K^gX! /jDB}S/{2&amp;gt;|(&lt;br /&gt;
HsT(m28*&amp;amp;&#039;QD 1j@:)x@zjKVv OV6Gt&amp;quot;&amp;amp;/T46x #(L3iCGi=rFa G^6qvS#@hbPV wmIV/BgT:Hk5&lt;br /&gt;
s3N/_e6*6qXi wC*B%{/_5R@] gd%TnUa33#Cj Q&amp;amp;S(p9N&amp;quot;-K`U cw92iG&amp;gt;[hyR&amp;quot; wPba;xXXB8pM&lt;br /&gt;
M6|IUV732Z0x ]&#039;4}nr$9V,[6 _NL&amp;amp;RP61.ua| &amp;amp;PIt9/)&amp;lt;z+rl j&amp;lt;B*(0o%YfuG ]c{t9d?[5[oA&lt;br /&gt;
IK:fcAX&amp;amp;-Yh6 e2ZCX&amp;gt;EO^pT&amp;amp; U%/0uQ1ut_SZ 29RP/H5@2z[P a&#039;xr@v&amp;quot;?eYe4 ?.Q+e!`O/0I/&lt;br /&gt;
`d/L&amp;gt;??v6kj6 Zk]c~yzf.P2S @${vq_vSMXo4 -*+6]gD[6$;f AIAWXl9&amp;lt;gUXO &amp;gt;_&amp;gt;+nA4^+Ys&amp;lt;&lt;br /&gt;
a&amp;lt;Lef1Cky!J! g#U|CZ70pq)c tZ\`p6h|L009 )]zu2r5c(9VT o&amp;gt;+m1|yIJ;#| *Gu~}2kjfeCZ&lt;br /&gt;
rTCaZ\4|dcK_ x[g}/Y4prVO# ahC-#~F9K&amp;gt;U&amp;lt; 7,gXWjm7*&#039;*7 ITnH@7&amp;amp;\)xt% [Y4:w=OejpY9&lt;br /&gt;
E&amp;gt;IZcM692&amp;amp;n- !$fsN5!M||+K wl);&amp;lt;Aa0[JH# |B4doU(7gG^` S_4e{FB?0GpZ %v6Gy|#&amp;lt;nTx&amp;gt;&lt;br /&gt;
uYP5dvvk_qTy uk,?G-[+2Uei j,b+2MtszX*\ QBSC&amp;lt;O!mT8Ev D&amp;gt;=XCsd3mQ^{ yd01GBT7fN^&amp;gt;&lt;br /&gt;
U\/8ZPys,m~C (&#039;:6l=~}M4%w zv|p3{S$-PAx Gh$_I].nW4pv ^%LkB-F~h-3o ub`_XBc9rFp1&lt;br /&gt;
&amp;gt;*kgVa$&amp;gt;6p;q jAI*&amp;gt;f4#PZP6 [Xo(K:$y3/%O (H5`fxy^w`HT 6&amp;lt;}Prz~5Z+;p i_B|kK^1]xHP&lt;br /&gt;
iRHi7~ML9+-m }S6v1{kn+ti9 d2L.dZH4\\`\ xf%8&amp;lt;d%}Bcx\ OUUDS\6N1$~&#039; 3YC$|&amp;gt;uH{9&amp;lt;V&lt;br /&gt;
O}-b=Eq9[Jk&amp;lt; O40`ITP-q=qL R&amp;quot;z@&amp;lt;x7|-Qo5 shXw;mpDc&amp;gt;1( .gjtd.aGl=7&amp;amp; H)%JD7rmJu9o&lt;br /&gt;
V7}bRRGzkd8Q 6QviAc8_Xp_A kq4;u$Z&amp;quot;#/8: .f:1\,(ADXG9 )J4m.;&amp;lt;%..GR X4G]}=I!m{)u&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doku online: [https://linux.die.net/man/1/pwgen https://linux.die.net/man/1/pwgen]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://kb.son-schiet.de/index.php?title=Linux_Essentials&amp;diff=110</id>
		<title>Linux Essentials</title>
		<link rel="alternate" type="text/html" href="https://kb.son-schiet.de/index.php?title=Linux_Essentials&amp;diff=110"/>
		<updated>2026-02-06T13:43:33Z</updated>

		<summary type="html">&lt;p&gt;Martin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Grundlagen=&lt;br /&gt;
* [[Datei suchen]]&lt;br /&gt;
* [[Installation von Software]]&lt;br /&gt;
* [[Prüfen, ob Programm läuft]]&lt;br /&gt;
* [[Festplattenbelegung (Datenvolumen)]]&lt;br /&gt;
* [[Anwendungen]]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
</feed>