Compare commits

..

No commits in common. "master" and "main" have entirely different histories.
master ... main

11 changed files with 237 additions and 67 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
.idea

3
.idea/.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

View file

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

7
.idea/misc.xml Normal file
View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Black">
<option name="sdkName" value="Python 3.12" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12" project-jdk-type="Python SDK" />
</project>

8
.idea/modules.xml Normal file
View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/tipps_und_tricks.iml" filepath="$PROJECT_DIR$/.idea/tipps_und_tricks.iml" />
</modules>
</component>
</project>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

6
.idea/vcs.xml Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

View file

@ -1,68 +1,8 @@
Bei dem Error `fatal: refusing to merge unrelated histories` den Befehl `git pull origin master --allow-unrelated-histories` verwenden und das Problem ist gelöst. # Tipps und Tricks zu verschiedenen Sachen
### [Michis Git Verstäännis](./michi_git.md "Git isz doof") ## Git
- [Git README](./git/git.md "Git ist doof")
- [YT Tutorial (Morpheus)](https://youtube.com/playlist?list=PLNmsVeXQZj7rbmmqb1Lt_RGU4DEhelTrR&si=U-ldkXilfRgSsBYn)
### Der Reponame "main" ist voreingestellt, es gehen auch andere.
Am Beispiel dieses Readme.md:
```
git checkout -b main
git add README.md
git commit -m "first commit"
git remote add origin git@teapot.informationsanarchistik.de:Wobbl/tipps_und_tricks.git
git push -u origin main
```
ॐ wn@magma:~/python/tipps_und_tricks→git:(main) vi README.md
ॐ wn@magma:~/python/tipps_und_tricks→git:(main)
ॐ wn@magma:~/python/tipps_und_tricks→git:(main) ✗ git push -u origin main
Branch 'main' folgt nun Remote-Branch 'main' von 'origin'.
Everything up-to-date
ॐ wn@magma:~/python/tipps_und_tricks→git:(main) ✗ git commit README.md
[main a0d4d5c] geändert: README.md
1 file changed, 11 insertions(+), 1 deletion(-)
ॐ wn@magma:~/python/tipps_und_tricks→git:(main) git push -u origin main
>> Objekte aufzählen: 5, fertig.
Zähle Objekte: 100% (5/5), fertig.
Delta-Kompression verwendet bis zu 4 Threads.
Komprimiere Objekte: 100% (2/2), fertig.
Schreibe Objekte: 100% (3/3), 535 Bytes | 535.00 KiB/s, fertig.
Gesamt 3 (Delta 0), Wiederverwendet 0 (Delta 0), Pack wiederverwendet 0
remote: . Processing 1 references
remote: Processed 1 references in total
To teapot.informationsanarchistik.de:Wobbl/tipps_und_tricks.git
83c741e..a0d4d5c main -> main
Branch 'main' folgt nun Remote-Branch 'main' von 'origin'.
# ssh
Ein Zugriff auf den Teetopf über https ist komplexer und unsicherer als über **ssh**
ssh ist ein unverzichtbare universelles "Schweizermesser" für professionelles und sicheres Arbeiten im Netz.
Um _forgejo_ auf teapot mit ssh zu bedienen, muss mensch einen zweiteiligen Schlüssel generieren.
Das vom Server bevorzugte, weil am schwersten zu knackende Verschlüsselungssystem ist ed25519.
Einfach zu erzeugen:
```
ssh-keygen -t ed25519
```
Das zum Entsperren des Schlüssels notwendige lokale Passwort sollte böse und gemein sein, sonst ist die Übung im Falle eines geklauten Rechners fürn A...
Je nach verwendetem Desktopsystem bietet Linus natürlich an, sich die Passphrase wegzuspeichern.
Um damit das remote System zu bedienen, muss der öffentliche Teil des Schlüssels dort abgelegt werden. Lokal ist das zumeist die Datei
```
~/.ssh/id_ed25519.pub
```
Die klappste in die Zwischenablage und bunkerst sie in deinem Profil im _forgejo_
**Auf keinen Fall den privaten Schlüssel hochladen oder überhaupt jemals irgendwo durch irgendwelche Leitungen schicken!**
Sollte das versehentlich passiert sein, kannste den Schlüssel löschen und nen neuen anlegen.
Der Publickey darf im Fernsehen gesendet werden, das schadet nix.
Eine prima Seite mit Infos zu git und ssh schrieb der Patrick Asmus, klixdu hier: [SSH-Keys für gitea](https://www.media-techport.de/2023/08/howto-ssh-schluessel-fuer-gitea-einfache-einrichtung/ "HP Patrick Asmus")
Wenn alles passt, kannst du mit der Befehlsverbindung **&&**, was soviel bedeutet wie "If Exitcode=OK then" die nötigen Kommandos zusammenfassen:
```
vi README.md && git commit -m "Mein Kommentar" README.md && git push -u origin main
```
und du hast die aktuelle Version im lokalen und im entfernten Repo.
Das funktioniert nicht bei nicht eigenen Repos, wenn die auf "privat" geschaltet sind.
## Python
- [One Line Python Scripts](./python/oneline.md)

74
git/git.md Normal file
View file

@ -0,0 +1,74 @@
# Alles rund um Git
## Readme's
- [Michis Git Verstännis](./michi_git.md "Git ist doof")
## Weiteres:
### Der Reponame "main" ist voreingestellt, es gehen auch andere.
> Am Beispiel dieses Readme.md:
> _Setup:_
> ```
> git checkout -b main
> git add README.md
> git commit -m "first commit"
> git remote add origin git@teapot.informationsanarchistik.de:Wobbl/tipps_und_tricks.git
> git push -u origin main
> ```
> _Bash:_
> ```
> $ vi README.md
> $ git push -u origin main
> Branch 'main' folgt nun Remote-Branch 'main' von 'origin'.
> Everything up-to-date
> $ git commit README.md
> [main a0d4d5c] geändert: README.md
> 1 file changed, 11 insertions(+), 1 deletion(-)
> ॐ wn@magma:~/python/tipps_und_tricks→git:(main) git push -u origin main
> >> Objekte aufzählen: 5, fertig.
> Zähle Objekte: 100% (5/5), fertig.
> Delta-Kompression verwendet bis zu 4 Threads.
> Komprimiere Objekte: 100% (2/2), fertig.
> Schreibe Objekte: 100% (3/3), 535 Bytes | 535.00 KiB/s, fertig.
> Gesamt 3 (Delta 0), Wiederverwendet 0 (Delta 0), Pack wiederverwendet 0
> remote: . Processing 1 references
> remote: Processed 1 references in total
> To teapot.informationsanarchistik.de:Wobbl/tipps_und_tricks.git
> 83c741e..a0d4d5c main -> main
> Branch 'main' folgt nun Remote-Branch 'main' von 'origin'.
> ```
## SSH Setup
Ein Zugriff auf den Teetopf über https ist komplexer und unsicherer als über **ssh**
ssh ist ein unverzichtbare universelles "Schweizermesser" für professionelles und sicheres Arbeiten im Netz.
Um _forgejo_ auf teapot mit ssh zu bedienen, muss mensch einen zweiteiligen Schlüssel generieren.
Das vom Server bevorzugte, weil am schwersten zu knackende Verschlüsselungssystem ist ed25519.
Einfach zu erzeugen:
```
ssh-keygen -t ed25519
```
Das zum Entsperren des Schlüssels notwendige lokale Passwort sollte böse und gemein sein, sonst ist die Übung im Falle eines geklauten Rechners fürn A...
Je nach verwendetem Desktopsystem bietet Linus natürlich an, sich die Passphrase wegzuspeichern.
Um damit das remote System zu bedienen, muss der öffentliche Teil des Schlüssels dort abgelegt werden. Lokal ist das zumeist die Datei
```
~/.ssh/id_ed25519.pub
```
Die klappste in die Zwischenablage und bunkerst sie in deinem Profil im _forgejo_
**Auf keinen Fall den privaten Schlüssel hochladen oder überhaupt jemals irgendwo durch irgendwelche Leitungen schicken!**
Sollte das versehentlich passiert sein, kannste den Schlüssel löschen und nen neuen anlegen.
Der Publickey darf im Fernsehen gesendet werden, das schadet nix.
Eine prima Seite mit Infos zu git und ssh schrieb der Patrick Asmus, klixdu hier: [SSH-Keys für gitea](https://www.media-techport.de/2023/08/howto-ssh-schluessel-fuer-gitea-einfache-einrichtung/ "HP Patrick Asmus")
Wenn alles passt, kannst du mit der Befehlsverbindung **&&**, was soviel bedeutet wie "If Exitcode=OK then" die nötigen Kommandos zusammenfassen:
```
vi README.md && git commit -m "Mein Kommentar" README.md && git push -u origin main
```
und du hast die aktuelle Version im lokalen und im entfernten Repo.
Das funktioniert nicht bei nicht eigenen Repos, wenn die auf "privat" geschaltet sind.
## Bei dem Error `fatal: refusing to merge unrelated histories`
den Befehl `git pull origin master --allow-unrelated-histories` verwenden und das Problem ist gelöst.

View file

@ -147,13 +147,27 @@ Branches auch Zweige sind einfach mehrere Arbeitsflächen.
>``` >```
>>- Du darfst blos nicht in diesen Branch sein also mit checkout in ein anderen Branch wechseln >>- Du darfst blos nicht in diesen Branch sein also mit checkout in ein anderen Branch wechseln
## Forks und Pull Requests
ein Fork ist eine unabhängige Kopie eines Repos.
Ein Pull Request ist eine aufforderung an Die Mittarbeiter des original Repos und den Fork zu mergen also um alle änÄderungen des Forkes in das original Repo zu übernehmen.
>### Fork erstellen und bearbeiten
>1. In der Weboberfläche oben rechts auf Fork klicken
>2. Den erstellten Fork in Profil suchen und git url oder ssh kopieren
>3. In der Konsole git clone ausführen
>4. Änderungen machen
>5. Pushen
>### Pull Request erstellen
>1. In er Weboberfläche das original Repo öffnen
>2. In Tab Pull Request ein Pull Request erstellen und den passenden Start und as passende Ziel Repo auswählen und passende Infos hinzufügen
>3. Auf erstetellen klicken und Mit en Entwicklern besprechen was man damit nun tut
## Grafisches Git ## Grafisches Git
Falls man den überblick verliehrt ist es hilfreich sich Das Repo grafisch anzusehen Falls man den überblick verliehrt ist es hilfreich sich Das Repo grafisch anzusehen.
>### Git Gui >### Git Gui
>``` >```

103
python/oneline.md Normal file
View file

@ -0,0 +1,103 @@
# Python Programme in einer Zeile code schreiben
Wenn du Scripte bis zur einer Zeile Code verkürzen möchtest; Hab ich hier ein paar Möglichkeite aufgeschrieben.
Eine ist Lambda, weiteres findest du in Inhaltsverzeichniss:
## Inhaltsverzeichnis:
1. [Lambda](##-lambda-funktionen-grundlage)
2. [Semikolons](##-semikolon)
3. [Listen definieren](#-list-comprehension)
4. [Mehrfachzuwesungen](##-variablen-mehrfachzuwesungen)
## Lambda Funktionen Grundlage
Lambda wird benutzt um eine **Anonyme Funktion** zu definieren
> Beispiel:
> ```
> funcbla = <lambda-ausdruck>
> funcbla()
> ```
Oder du kannst eine lambda Funktion direkt ausführen:
> `(<lambda-ausdruck>)(<zu-übergebene-variablen>)`oder `<lambda-ausdruck(ohne "lambda : <vars>")` <-- **locale variablen werden genutzt**
### Lambda Ausdrücke:
man definiert eine Ausdruck so:
> ```
> lambda <vars> : <func1()> if <statement> else <func2>
> ```
> Beispiel:
> ```
> print((lambda x : "ungerade" if x%2 else "gerade")(123))
> ```
> Output: `ungerade`
>
> **Wenn du eine Funktion in einen Lambda Ausdruck verwendest, muss sie eine Variable zurückgeben.
> Lambda gibt entweder `ungerade` oder `gerade` im Beispiel and print() zurück.**
## Semikolon
Nutze ein `;` um mehrere Funktionen in einer Zeile zu verketten
> Beispiel:
> ```
> func1()
> func2()
> ```
> wird zu:
> ```
> func1();func2()
> ```
# List Comprehension
Mit List Comprehensions kann man Listen in einer zeiler definieren und darüber iterieren:
> Beispiel:
> ```
> list1 = []
> for x in range(10):
> list1.append(x)
> ```
> wird zu:
> ```
> list1 = [<vart-to-add(or you can use Variables like "x")> for x in range(10)]
> ```
Mann kan auch if statements in Comprehentions nutzen:
```
newlist = [expression for item in iterable if condition == True]
```
> Beispiel:
> ```
> list1 = ["a", "b", "c", "d", "e"]
> list2 = [x for x in fruits if "a" in x]
> ```
> ^ Addiert Das Objekt x zu list2 wenn `if "a" in x` also eine "a" in den String Objekt ist.
## Variablen Mehrfachzuwesungen
variablen sind was sehr nützliches was nicht fehlen darf!
Man kann sie auf verschiedene arten zuwei?en, eine davon ist mit Mehrfachzuweisungen:
> ```
> var1 = 1
> var2 = 2
> var3 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
> ```
> wir zu:
> ```
> var1, var2, var3 = 1, 2, [x for x in range(10]```
### Stapel = Stapel
In Grunde kann man mit Mehrfachzuweisungen Stapel(Tuple) entpacken oder packen:
> Packen eines Tupels in eine Variable
> ```
> var1 = a,b,c
> ```
> soviel wie:
> "var = tulple"
> ^ "Anfenger Hinweiss: Wenn man das untenstehenliegene Prinzip verstanden hat ist man flexibler"
> Packen eines Tupels in einen Tuple:
> ```
> var1, var2, var3 = 1, 2, 3
> ```
> soviel wie:
> "tuple = tulple"