Compare commits
No commits in common. "master" and "main" have entirely different histories.
11 changed files with 237 additions and 67 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
.idea
|
3
.idea/.gitignore
vendored
Normal file
3
.idea/.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
6
.idea/inspectionProfiles/profiles_settings.xml
Normal file
6
.idea/inspectionProfiles/profiles_settings.xml
Normal 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
7
.idea/misc.xml
Normal 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
8
.idea/modules.xml
Normal 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>
|
8
.idea/tipps_und_tricks.iml
Normal file
8
.idea/tipps_und_tricks.iml
Normal 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
6
.idea/vcs.xml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
72
README.md
72
README.md
|
@ -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
74
git/git.md
Normal 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.
|
|
@ -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
103
python/oneline.md
Normal 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"
|
Loading…
Reference in a new issue