Merge pull request 'adding old tipps' (#1) from Megamichi/Gulmwiki:main into main

Reviewed-on: #1
This commit is contained in:
Michael S. 2025-04-07 14:05:56 +02:00
commit a234879d22
4 changed files with 380 additions and 1 deletions

View file

@ -4,4 +4,12 @@ Mal gucken, hoffentlich wird das hier das neue Gulmwiki.
Wiki-Admin: [[The Wobbler]]
Blubb (test)
## Tipps und Tricks zu verschiedenen Sachen
### Git
- [Git README](./tipps_und_tricks/git/git.md "Git ist doof")
- [YT Tutorial (Morpheus)](https://youtube.com/playlist?list=PLNmsVeXQZj7rbmmqb1Lt_RGU4DEhelTrR&si=U-ldkXilfRgSsBYn)
### Python
- [One Line Python Scripts](./tipps_und_tricks/python/oneline.md)

View file

@ -0,0 +1,80 @@
# Alles rund um Git
## Readme's
- [Michis Git Verstännis](michi_git "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.
## Dateien komplett aus der History löschen
Wenn man mal Dateien comittet hat, diese aber aus allen Commits wieder entfernen möchte: \
https://www.baeldung.com/ops/git-remove-file-commit-history

View file

@ -0,0 +1,188 @@
# Git
Git ist nen Versionverknalltütenprogramm was eder brauch oder auch nicht.
## Inhaltsverzeichniss
1. [Git Configurieren](#git-cofigurieren)
2. [Start](#start)
3. [Daten hinzufügen und entfernen](#daten-hinzufügen-und-entfernen)
4. [Neue Version an Git geben und überprüfen](#neue-version-an-git-geben-und-überprüfen)
5. [Mit Git Servern arbeiten](#mit-git-servern-arbeiten)
6. [push und pull](#push-und-pull)
7. [Branches](#branches)
8. [Grafisches Git](#grafisches-git)
## Git Cofigurieren
>### Nutzername
>```
>git config user.name "<user-name>"
>```
>>- Setzt den Nutzername für das Aktuelle Repo
>>- Wenn kein Name angegeben ist wird der aktuelle Festgelegter Name ausgegeben
>>- Wen nach config ein --global gesetzt wird dann wird das für die ganze git installation des Benutzer festgelegt oder usgegeben
>### E-Mail
>```
>git config user.name "<e-mail>"
>```
>>- Setzt die E-Mail für das Aktuelle Repo
>>- Wenn keine E-Mail angegeben ist wird der aktuelle Festgelegte E-Mail ausgegeben
>>- Wen nach config ein --global gesetzt wird dann wird das für die ganze git installation des Benutzer festgelegt oder usgegeben
## Start:
Ein Repo ist ein Ding wo deine Projektdaten gespeichert sind.
>### Initialisieren deines Repos:
>```
>git init
>```
>### Downloade ein existierenes Repo:
>```
>git clone <url>
>```
Nun kannst du mit Git arbeiten z.b. Daten Erstellen und bearbeiten
## Daten hinzufügen und entfernen:
>### Füge Daten zum Repo hinzu:
>```
>git add <datei>
>```
>>Beispiel:
>>```
>>git add README.md
>>git add .
>>git add ./README.md
>>```
>### Entferne Daten von Repo:
>```
>git rm <datei>
>```
>>Beispiel:
>>```
>>git rm README.md
>>git rm .
>>git rm ./README.md
>>```
## Neue Version an Git geben und überprüfen:
>### Commit erstellen:
>```
>git commit <message>
>```
>> eine Message ist Pflicht!
>### Log anschauen
>```
>git log
>```
>> Zeigt dir deine commits an und auch was du geändert hast
>### Status ansehen
>```
>git status
>```
>> Zeigt dir deine Aktuellen Änderungen an und den aktuelen Branch
## Mit Git Servern arbeiten:
>### Füge ein entferntes Repo hinzu:
>```
>git remote add origin <url>
>```
>>- Die adresse muss mit .git enden
>>- origin ist die Bezeichnung des entfernen Repos
>### Entferne ein entferntes Repo :
>```
>git remote rm origin <url>
>```
## push und pull:
>### push ladet den Branch auf den Server:
>```
>git push origin main
>```
>>- origin ist die Beschreibung des Remote Servers
>>- main Ist Der Branch der gepusht werden soll
>>- push(en) = drücken(de)
>### pull ladet den Branch von Server:
>```
>git pull origin main
>```
>>- origin ist die Beschreibung des Remote Servers
>>- main Ist Der Branch der gepusht werden soll
>>- pull(en) = ziehen(de)
## Branches
Branches auch Zweige sind einfach mehrere Arbeitsflächen.
>### Neuen Branch erstellen
>```
>git branch <branch-name>
>```
>>- Erstellt einfach ein Abbild von den aktuellen Branch
>>- Du bist aber immer noch auf den Aktuellen Branch
>### Branch wecheln
>```
>git checkout <branch-name>
>```
>> Nun hast du den Branch gewechselt
>### Branches zusammenführen
>```
>git merge <branch-name>
>```
>>- Nimmt die Änderungen von den angegebenen Branch und Schiebt sie auf den aktuellen Branch
>### Branches loschen
>```
>git branche -d <branch-name>
>```
>>- 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
Falls man den überblick verliehrt ist es hilfreich sich Das Repo grafisch anzusehen.
>### Git Gui
>```
>git gui
>```
>> Grafische Benutzeroberfläche mit vielen Features
>### Gitk
>```
>gitk
>```
>> Eher um die Vergangenheit des Projetes anzuschauen
>### Entwicklerplattformen
>Viele Entwicklerplattformen haben eine git intigration
>>- Visual studio Code
>>- Jetbrains IDE
>>- ...

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"