aufgeräumt

This commit is contained in:
Adam Skotarczak 2025-05-21 22:28:40 +02:00
parent 22086eec9e
commit 1ae825a446
19 changed files with 638 additions and 101 deletions

4
.gitattributes vendored Normal file
View File

@ -0,0 +1,4 @@
*.adoc text eol=lf
*.yml text eol=lf
*.sh text eol=lf
Makefile text eol=lf

5
.gitignore vendored
View File

@ -2,9 +2,12 @@
# Files
*.zip
desktop.ini
# Folders
# .vscode/**
build/**
!build/.gitkeep
# Lokale Branch-Kennzeichnung (nicht tracken)
# Git-Hook aus ./tools/dev-setup.sh
BRANCH-*

39
.vscode/cspell.json vendored Normal file
View File

@ -0,0 +1,39 @@
{
"version": "0.2",
"language": "en,de",
"languageSettings": [
{
"languageId": "*",
"enabled": false
},
{
"languageId": "plaintext",
"enabled": true
},
{
"languageId": "markdown",
"enabled": true
},
{
"languageId": "asciidoc",
"enabled": true
}
],
"ignorePaths": [
"node_modules",
"dist",
"build",
"output",
".git"
],
"words": [
"adoc",
"AsciiDoc",
"autochapter",
"kapitel",
"makefile",
"PDFTheme",
"realAscot",
"Skotarczak"
]
}

21
.vscode/settings.json vendored
View File

@ -1,3 +1,20 @@
{
"makefile.configureOnOpen": false
}
"editor.codeActionsOnSave": {
"source.fixAll.cSpell": "explicit"
},
"asciidoc.preview.style": "styles/preview.css",
"files.associations": {
"*.adoc": "asciidoc"
},
"files.eol": "\n",
"[yaml]": {
"files.eol": "\n"
},
"[shellscript]": {
"files.eol": "\n"
},
"[asciidoc]": {
"files.eol": "\n"
},
"files.encoding": "utf8"
}

View File

@ -1,14 +1,21 @@
# Makefile für Markdown-eBook-Projekt mit Pandoc
# === Allgemeine Konfiguration ===
TITLE := JS-TS-Tutorial
MANUSCRIPT := manuscript
OUTPUT := build
METADATA := metadata/ebook.yaml
CSS := styles/ebook.css
TEX_EBOOK := styles/ebook-template.tex
TEX_PRINT := styles/print-template.tex
LOGO := media/logo/logo-v2.png
TITLE := dateiname_aus_makefile
MANUSCRIPT := manuscript
OUTPUT := build
METADATA := metadata/ebook.yaml
CSS := styles/ebook.css
TEX_EBOOK := styles/ebook-template.tex
TEX_PRINT := styles/print-template.tex
LOGO := media/logo/logo_256x256.png
# === Nur wsl oder Linux === #
ifeq ($(OS),Windows_NT)
set_codepage:
@if [ "$(OS)" = "Windows_NT" ]; then chcp 65001 >nul; fi
$(error [] Windows wird nicht unterstützt. Bitte WSL oder Linux verwenden.)
endif
# === Quelldateien (geordnet nach Nummerierung) ===
MD_FILES := $(wildcard $(MANUSCRIPT)/*.md)

View File

@ -1,14 +1,10 @@
# eBook - Dokumentation Vorlage
**Gleichzeitig eBook-Template für Maniskripte in Markdown**
# eBook Vorlage
![Buch-Logo](./media/logo/logo-v2-256x256.png)
Dieses Manuskript dient mir persönlich auch als Template für andere eBooks daher sind viele Stellen explizit sehr detailiert beschrieben.
## Inhalt
- [eBook - Dokumentation Vorlage](#ebook---dokumentation-vorlage)
- [eBook Vorlage](#ebook-vorlage)
- [Inhalt](#inhalt)
- [Infos](#infos)
- [Struktur](#struktur)
@ -51,48 +47,17 @@ book/
│ ├── ebook.css
│ └── print-template.tex
├── build/
├── build/ # Ausgabeordner (wird vom Build-Prozess befüllt)
├── metadata/
├── metadata/ # Metadaten für eBook, Titelblatt, Autoreninfo
│ ├── title.txt
│ ├── author.txt
│ └── ebook.yaml
├── Makefile #
├── Makefile # Automatisierter Build-Prozess mit Pandoc etc.
├── README.md # Projektdokumentation
└── LICENSE # Lizenz für das Buch (z.B. CC-BY)
📁 ./ #
├── 📁 build # Ausgabeordner (wird vom Build-Prozess befüllt)
│ └── 📄 .gitkeep # Platzhalter damit git leere Verzeichnisse trackt
├── 📁 manuscript #
│ ├── 📄 00_deckblatt.md #
│ ├── 📄 05_vorwort.md #
│ ├── 📄 10_kapitel1.md #
│ ├── 📄 20_kapitel2.md #
│ └── 📄 30_kapitel2.md #
├── 📁 media #
│ ├── 📁 logo #
│ │ ├── 📄 logo-v1.png #
│ │ ├── 📄 logo-v2-256x256.png #
│ │ └── 📄 logo-v2.png #
│ └── 📄 favicon.ico #
├── 📁 metadata # Metadaten für eBook, Titelblatt, Author etc
│ ├── 📄 author.txt #
│ └── 📄 ebook.yaml #
├── 📁 styles #
│ ├── 📄 ebook-template.tex #
│ ├── 📄 ebook.css #
│ ├── 📄 print-template.tex #
│ └── 📄 reference.docx #
├── 📄 .gitignore #
├── 📄 CHANGELOG.md #
├── 📄 desktop.ini #
├── 📄 LICENSE #
├── 📄 Makefile # Automatisierter Build-Prozess mit Pandoc etc.
├── 📄 README.md # Diese Datei - Erklärung zum Build des Buchs
└── 📄 VERSION # Paketversion (ohne Zeilenumbruch einzeilig 0.0.0)
```
---
@ -153,8 +118,17 @@ Falls der Build trotzdem scheitert oder du dir den Aufwand sparen möchtest, lad
### Templates
Informationen zu den Templates und ihre Konfiguration
#### PDF
- [x] Konfigurationsfile für die PDF-Aussgabe ist die [./styles/print-template.tex](./styles/print-template.tex)
- Dateiname für Einbandlogo erfolgt aus dieser Datei:
```tex
\includegraphics[width=0.3\textwidth]{media/logo/logo-einband.png} \\[2em]
````
#### eBook (epub)
#### DOCX (Office/ Word)

160
gitcopy.bat Normal file
View File

@ -0,0 +1,160 @@
@echo off
setlocal enabledelayedexpansion
chcp 65001 >nul
REM Skript, um aus einem Projekt mit git-repo, ein portables .zip zu erstellen
REM
REM (C) 2025 MIT Adam Skotarczak
REM
REM Version: v1.1.2
REM Github: https://github.com/realAscot/gitcopy
REM -------------------------------------------------------------------
rem --- Git-Verfügbarkeit prüfen ---
where git >nul 2>nul
if errorlevel 1 (
echo.
echo [⚠️] Git ist nicht installiert oder nicht im PATH.
echo [📦] Bitte installiere Git von https://git-scm.com/download/win
call :show_help
echo.
exit /b 1
)
rem --- Git-Version anzeigen ---
for /f "tokens=*" %%i in ('git --version') do set "GIT_VERSION=%%i"
if defined GIT_VERSION (
echo.
echo [✅] Gefundene Git-Version: %GIT_VERSION%
) else (
echo([⚠️] Konnte Git-Version nicht ermitteln.
)
rem Prüfe auf optionalen Parameter "--debug"
set DEBUG=0
if NOT "%~1"=="" (
if "%~1"=="--debug" (
set DEBUG=1
echo [⚠️] Debug-Modus aktiv: Ignoriere offene Commits.
exit /b 0
) else if "%~1"=="-d" (
set DEBUG=1
echo [⚠️] Debug-Modus aktiv: Ignoriere offene Commits.
exit /b 0
) else if "%~1"=="-h" (
call :show_help
exit /b 0
) else if "%~1"=="--help" (
call :show_help
exit /b 0
) else (
rem Parameter vorhanden aber nicht erkannt.
call :kein_Parameter "%~1"
exit /b 1
)
) else (
call :go "%~1"
)
exit /b 0
:go
call :generate_timestamp
set ZIP_NAME=projektarchiv-%TIMESTAMP%.zip
rem -------------------------------------------------------------------
pushd %~dp0
if %DEBUG%==0 (
echo [🔍] Prüfe auf uncommitted oder ungetrackte Änderungen...
set "hasChanges="
for /f "delims=" %%i in ('git status --porcelain') do (
set "hasChanges=1"
goto :has_changes
)
echo [✅] Arbeitsverzeichnis ist sauber.
) else (
echo [⚠️] Prüfschritt übersprungen.
)
goto :create_zip
:has_changes
echo.
echo [⚠️] Es sind uncommitted oder ungetrackte Änderungen vorhanden:
echo.
git status --short
echo.
echo [❌] Bitte committe oder stash diese Änderungen, bevor du ein ZIP erstellst.
echo [⚠️] versuche --debug um diese Prüfung zu umgehen aber dann wird das Archiv unvollständig.
echo.
endlocal
pause
exit /b 1
:create_zip
echo [💾] Erstelle ZIP-Archiv von HEAD...
git archive --format=zip --output="%ZIP_NAME%" HEAD
if errorlevel 1 (
echo [⚠️] Fehler beim Erstellen des Archivs.
pause
exit /b 1
)
echo [✅] Archiv erfolgreich erstellt: %CD%\%ZIP_NAME%
popd
endlocal
pause
exit /b 0
:generate_timestamp
rem Erzeugt einen Zeitstempel TTMMJJHHMM sicher und universell
for /f "tokens=1-4 delims=. " %%d in ('echo %DATE%') do (
set "TAG=0%%d"
set "MONAT=0%%e"
set "JAHR=%%f"
)
for /f "tokens=1-2 delims=: " %%g in ('echo %TIME%') do (
set "STUNDE=0%%g"
set "MINUTE=0%%h"
)
set "TAG=!TAG:~-2!"
set "MONAT=!MONAT:~-2!"
set "JAHR=!JAHR:~-2!"
set "STUNDE=!STUNDE:~-2!"
set "MINUTE=!MINUTE:~-2!"
set "TIMESTAMP=!TAG!!MONAT!!JAHR!!STUNDE!!MINUTE!"
goto :eof
:kein_Parameter
echo.
echo [⚠️] Unbekannter Parameter: "%~1" abbruch ...
echo.
call :show_help
exit /b 1
:show_help
echo.
echo GitCopy Hilfe
echo =====================
echo Erstellt ein ZIP-Archiv vom aktuellen HEAD-Stand des Git-Repositories.
echo.
echo Verwendung:
echo gitcopy.bat [Option]
echo.
echo Optionen:
echo --debug / -d Überspringt die Prüfung auf uncommitted oder ungetrackte Änderungen.
echo -h / --help Zeigt diese Hilfe an.
echo.
endlocal
pause
goto :eof
endlocal

View File

View File

@ -1,3 +1,3 @@
# Vorwort
Gibt nix zu sagen ...
Vorwort ...

View File

@ -1,45 +1,7 @@
# Kapitel 1
## kurzer Schwenk nach Javascript
Kapitel 1
### Variablen
## Unterkapitel
#### Deklaration
```javascript
var name = "Max"; // Alt, meiden!
let zahl = 42; // Modern, veränderbar
const pi = 3.1415; // Konstant, nicht veränderbar
```
| Schlüsselwort | Veränderbar | Gültigkeitsbereich | Empfehlung |
| ------------- | ----------- | ---------------------- | ----------------------- |
| `var` | ✔ | Funktion (funktional) | ✖ Nicht mehr verwenden |
| `let` | ✔ | Block (z.B. Schleife) | ✔ Standard |
| `const` | ✖ | Block | ✔ Für Konstanten |
#### Typen (vereinfacht)
JS ist dynamisch typisiert, aber man sollte Typen trotzdem kennen:
| Typ | Beispiel |
| ----------- | ------------------------ |
| `string` | `"Hallo"` |
| `number` | `42`, `3.14` |
| `boolean` | `true`, `false` |
| `object` | `{ name: "Max" }` |
| `array` | `[1, 2, 3]` |
| `undefined` | `let x;` (nicht gesetzt) |
| `null` | `let x = null;` |
---
### Funktionen
1. Klassische Deklaration
```javascript
function greet(name) {
return "Hallo " + name;
}
```
Unterkapitel

View File

@ -1,3 +1,7 @@
# Kapitel 2 - Typescript
# Kapitel 2
Im Kapitel 1 haben wir gesehen was Javascript in seiner Rohform leistet.
Kapitel 2
## Unterkapitel 2.1
Unterkapitel

View File

@ -0,0 +1,3 @@
# Kapitel 3
## Unterkapitel 3

BIN
media/logo/logo_256x256.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
media/logo/logo_left.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

View File

@ -1,8 +1,8 @@
title: "eBook Vorlage"
subtitle: "wir scheiben ein Buch"
title: "Vorlage eBook: Titel aus ebook.yaml"
subtitle: "Untertitel aus ebook.yaml - Logo aus .tex"
author: "Adam Skotarczak"
lang: de-DE
rights: "© 2025 Adam Skotarczak. CC BY-SA 4.0"
date: 2025-05-13
rights: "© 2000 Adam Skotarczak. CC BY-SA 4.0"
date: 2000-01-01
description: |
Eine Vorlage zum erstellen eines Buchs.
Dieses Buch ist eine Vorlage.

View File

@ -35,7 +35,7 @@ $endif$
% Titel
\title{
\includegraphics[width=0.3\textwidth]{media/logo/logo.png} \\[2em]
\includegraphics[width=0.3\textwidth]{media/logo/logo_256x256.png} \\[2em]
{\Huge $title$} \\
\vspace{1em}
\Large $subtitle$

177
tools/bmp-emojis.md Normal file
View File

@ -0,0 +1,177 @@
# Emojis im Unicode Basic Multilingual Plane (BMP)
> Diese Liste enthält **alle wichtigen Emojis im BMP-Bereich (U+0000 bis U+FFFF)**. Sie ist besonders geeignet für Markdown-Dokumente, die mit Git versioniert oder als PDF exportiert werden sollen.
---
## Inhaltsverzeichnis
- [ Emojis im Unicode Basic Multilingual Plane (BMP)](#-emojis-im-unicode-basic-multilingual-plane-bmp)
- [ Inhaltsverzeichnis](#-inhaltsverzeichnis)
- [ Verwendungshinweis](#-verwendungshinweis)
- [ HTML](#-html)
- [ Python](#-python)
- [ Markdown](#-markdown)
- [ Wetter \& Natur](#-wetter--natur)
- [ Zeichen \& Objekte](#-zeichen--objekte)
- [ Warnung \& Energie](#-warnung--energie)
- [ Transport](#-transport)
- [ Sport \& Freizeit](#-sport--freizeit)
- [ Religion \& Symbole](#-religion--symbole)
- [ Gender \& Sternzeichen](#-gender--sternzeichen)
- [ Spielkarten \& Schach](#-spielkarten--schach)
- [ Diverse Symbole \& Zeichen](#-diverse-symbole--zeichen)
- [ Emoticons (U+1F600U+1F64F)](#-emoticons-u1f600u1f64f)
## Verwendungshinweis
Du kannst Unicode-Emojis auch **ohne Kopieren** verwenden per Unicode-Codepunkt. Hier eine Übersicht, wie das in verschiedenen Umgebungen funktioniert:
| Emoji | Unicode | HTML Entity | Python | Bash | LaTeX (xelatex) |
|-------|---------|-------------|--------|------|-----------------|
| ☀️ | U+2600 | `☀` | `\u2600` | `\u2600` | `\char"2600` |
| ☕ | U+2615 | `☕` | `\u2615` | `\u2615` | `\char"2615` |
| ⚙️ | U+2699 | `⚙` | `\u2699` | `\u2699` | `\char"2699` |
| ✂️ | U+2702 | `✂` | `\u2702` | `\u2702` | `\char"2702` |
| ☎️ | U+260E | `☎` | `\u260E` | `\u260E` | `\char"260E` |
| ⚠️ | U+26A0 | `⚠` | `\u26A0` | `\u26A0` | `\char"26A0` |
| ⚽ | U+26BD | `⚽` | `\u26BD` | `\u26BD` | `\char"26BD` |
| ♻️ | U+267B | `♻` | `\u267B` | `\u267B` | `\char"267B` |
📌 Für Emojis **außerhalb des BMP** (z.B. 😀 = `U+1F600`) musst du in Python/Bash `\U` statt `\u` nutzen (8-stellig).
### HTML
```text
&#x2600; <!-- ☀️ Sonne -->
&#x1F600; <!-- 😀 Grinsendes Gesicht -->
```
### Python
```text
print("\u2600") # ☀️ Sonne (BMP)
print("\U0001F600") # 😀 Grinsendes Gesicht (SMP)
```
### Markdown
Markdown unterstützt Emojis nicht direkt über Codepunkte aber wenn dein Editor Unicode versteht, kannst du den Emoji direkt schreiben (☀️, ⚙️, ✂️) oder ihn per HTML-Entity einfügen (wie in HTML oben).
⚠️ Achtung: Nur manche Markdown-Renderer (z.B. GitHub) zeigen HTML-Entities korrekt an.
---
## Wetter & Natur
- ☀️ U+2600 Sonne
- ☁️ U+2601 Wolke
- ☂️ U+2602 Regenschirm
- ☃️ U+2603 Schneemann
- ☄️ U+2604 Komet
- ⛄ U+26C4 Schneemann ohne Schnee
- ⛅ U+26C5 Sonne hinter Wolke
- ⛈️ U+26C8 Gewitterwolke
---
## Zeichen & Objekte
- ✂️ U+2702 Schere
- ✉️ U+2709 Briefumschlag
- ☎️ U+260E Telefon
- ⚒️ U+2692 Hammer und Picke
- ⚓ U+2693 Anker
- ⚖️ U+2696 Waage
- ⚗️ U+2697 Retorte
- ⚙️ U+2699 Zahnrad
- ⚰️ U+26B0 Sarg
- ⚱️ U+26B1 Urne
- ⚔️ U+2694 Gekreuzte Schwerter
---
## Warnung & Energie
- ⚡ U+26A1 Hochspannung
- ⚠️ U+26A0 Warnung
- ⛔ U+26D4 Kein Zutritt
---
## Transport
- ✈️ U+2708 Flugzeug
- ⛟ U+26DF Lieferwagen
- ⛴️ U+26F4 Fähre
- ⛵ U+26F5 Segelboot
- ⛷️ U+26F7 Skifahrer
- ⛸️ U+26F8 Schlittschuhe
- ⛹️ U+26F9 Ballspielende Person
- ⛽ U+26FD Zapfsäule
---
## Sport & Freizeit
- ⚽ U+26BD Fußball
- ⚾ U+26BE Baseball
- ⛳ U+26F3 Golfplatz
- ⛲ U+26F2 Springbrunnen
- ⛺ U+26FA Zelt
---
## Religion & Symbole
- ☮️ U+262E Friedenssymbol
- ☯️ U+262F Yin-Yang
- ☪️ U+262A Halbmond mit Stern
- ✝️ U+271D Kreuz
---
## Gender & Sternzeichen
- ♀️ U+2640 Weiblich
- ♂️ U+2642 Männlich
- ⚧️ U+26A7 Transgender-Symbol
- ♈ ♓ U+2648U+2653 Tierkreiszeichen (Widder bis Fische)
---
## Spielkarten & Schach
- ♠️ U+2660 Pik
- ♣️ U+2663 Kreuz
- ♥️ U+2665 Herz
- ♦️ U+2666 Karo
- ♟️ U+265F Schwarzer Bauer
---
## Diverse Symbole & Zeichen
- ✨ U+2728 Funkeln
- ❗ U+2757 Ausrufezeichen
- ❓ U+2753 Fragezeichen
- ❌ U+274C Kreuzzeichen
- ✅ U+2705 Haken
- U+2795 Pluszeichen
- U+2796 Minuszeichen
- ➗ U+2797 Divisionszeichen
- ➡️ U+27A1 Pfeil nach rechts
- ⬅️ U+2B05 Pfeil nach links (**grenzwertig BMP**)
---
## Emoticons (U+1F600U+1F64F)
Hinweis: Diese befinden sich **nicht im BMP**, sondern im Supplementary Multilingual Plane (SMP).
Wenn du Emojis aus `U+1F600` und höher verwendest (Gesichter, Tiere, Gesten etc.), beachte, dass sie bei älteren Systemen oder PDF-Exporten ohne passende Schriftart ggf. nicht korrekt dargestellt werden.
---
Diese Liste ist **Markdown-, Git- und PDF-freundlich**. Du kannst sie frei verwenden, erweitern oder in dein Projekt einbauen.
(C) 2025 Adam Skotarczak

154
tools/cli-emojis.md Normal file
View File

@ -0,0 +1,154 @@
# 📁 CLI Emojis (CLI Programmer Emojis)
> Adam Skotarczak private Emojis for monochrome Display
Diese Liste ist Teil des "Become-Writer-Projekt"
## 📁 Inhalt
- [📁 CLI Emojis (CLI Programmer Emojis)](#-cli-emojis-cli-programmer-emojis)
- [📁 Inhalt](#-inhalt)
- [📝 Commonly Used Emoji for CLI/Terminal Applications](#-commonly-used-emoji-for-cliterminal-applications)
- [📝 1-2 Bye - Unicode Basic Symbols for CLI or Monochrome Safe Emojis](#-1-2-bye---unicode-basic-symbols-for-cli-or-monochrome-safe-emojis)
- [📁 Anleitung: Unicode in CLI-Programmen richtig behandeln](#-anleitung-unicode-in-cli-programmen-richtig-behandeln)
- [📝 Wichtig für CLI-Projekte:](#-wichtig-für-cli-projekte)
## 📝 Commonly Used Emoji for CLI/Terminal Applications
Eine Liste von Emojis, die in fast jeder CLI (Terminal/Konsole) problemlos funktionieren, weil sie UTF-8 kompatibel sind und keine Sonderbehandlungen wie Farbcodes brauchen:
| Emoji | Beschreibung | Unicode Codepoint | UTF-8 Escape |
|:------|:-----------------------|:------------------|:----------------|
| ✅ | Checkmark | U+2705 | \u2705 |
| ❌ | Crossmark | U+274C | \u274C |
| ⚠️ | Warnung | U+26A0 U+FE0F | \u26A0\uFE0F |
| | Information | U+2139 U+FE0F | \u2139\uFE0F |
| 🔥 | Feuer | U+1F525 | \u1F525 |
| 🚀 | Rakete | U+1F680 | \u1F680 |
| 🔧 | Schraubenschlüssel | U+1F527 | \u1F527 |
| 🛠️ | Hammer und Schraubenschlüssel | U+1F6E0 U+FE0F | \u1F6E0\uFE0F |
| 💾 | Diskette / Speichern | U+1F4BE | \u1F4BE |
| 📦 | Paket | U+1F4E6 | \u1F4E6 |
| 🔒 | Schloss (geschlossen) | U+1F512 | \u1F512 |
| 🔓 | Schloss (offen) | U+1F513 | \u1F513 |
| 🔍 | Lupe / Suche | U+1F50D | \u1F50D |
| 📁 | Ordner | U+1F4C1 | \u1F4C1 |
| 📂 | Geöffneter Ordner | U+1F4C2 | \u1F4C2 |
| 📝 | Notiz / Bearbeiten | U+1F4DD | \u1F4DD |
| ✏️ | Bleistift | U+270F U+FE0F | \u270F\uFE0F |
| 📊 | Balkendiagramm | U+1F4CA | \u1F4CA |
| 📈 | Kurve aufwärts | U+1F4C8 | \u1F4C8 |
| 📉 | Kurve abwärts | U+1F4C9 | \u1F4C9 |
| ⏳ | Sanduhr läuft | U+23F3 | \u23F3 |
| ⌛ | Sanduhr abgelaufen | U+231B | \u231B |
| 🕐 | Uhrzeit 1 Uhr | U+1F550 | \u1F550 |
| 🔄 | Wiederholen / Refresh | U+1F504 | \u1F504 |
| ♻️ | Recycling | U+267B U+FE0F | \u267B\uFE0F |
| 🎯 | Zielscheibe | U+1F3AF | \u1F3AF |
| 🚧 | Baustelle | U+1F6A7 | \u1F6A7 |
| 🏁 | Zielflagge | U+1F3C1 | \u1F3C1 |
| 💡 | Glühbirne / Idee | U+1F4A1 | \u1F4A1 |
| 🎉 | Party / Feier | U+1F389 | \u1F389 |
| 🤖 | Roboter | U+1F916 | \u1F916 |
- Anmerkungen:
- Alle oben genannten Emojis sind Unicode-Standard.
- Sie funktionieren in Linux, macOS und modernen Windows-Terminals (ab Windows 10/11, UTF-8 aktiviert).
- Alte Konsolen wie cmd.exe auf Windows 7 oder unkonfigurierte Linux-SSH-Sitzungen könnten manchmal Probleme machen. In modernen Umgebungen ist das aber kein Thema mehr.
---
## 📝 1-2 Bye - Unicode Basic Symbols for CLI or Monochrome Safe Emojis
**CLI-Safe Unicode Symbols oder Terminal-Safe Emojis.**
Eine minimalistische Emoji-Liste (nur mit extrem simplen Unicode-Symbolen, oft 1 oder 2 Byte) ist erforderlich oder empfehlenswert, wenn:
**Alte Umgebungen genutzt werden:**
- z.B. Windows 7 cmd.exe
- Minimalistische SSH-Clients (z.B. Putty ohne UTF-8-Einstellung)
- Barebone-Server ohne Unicode-Konfiguration
- Minimale Schriftarten verwendet werden:
- Schriftarten, die keine komplexen Emojis darstellen können (nur Basic Unicode)
- CLI-Tools auf Embedded-Devices laufen:
- z.B. Raspberry Pi Konsolen ohne vollständige Locale
**Performance/Übertragungsoptimierung wichtig ist:**
- z.B. extrem dünne Netzwerkverbindungen (Telnet, MUD-Server, BBS-Clients)
- Absolute Kompatibilität mit Piped-Ausgaben (|, >, tee, etc.) gewünscht ist, ohne Zeichensalat zu riskieren
| Emoji | Beschreibung | Unicode Codepoint | UTF-8 Escape |
|:------|:---------------------|:------------------|:----------------|
| ✔️ | Checkmark | U+2714 U+FE0F | \u2714\uFE0F |
| ✖️ | Crossmark | U+2716 U+FE0F | \u2716\uFE0F |
| ⚠️ | Warnung | U+26A0 U+FE0F | \u26A0\uFE0F |
| | Information | U+2139 U+FE0F | \u2139\uFE0F |
| 💾 | Floppy Disk / Save | U+1F4BE | \u1F4BE |
| 📦 | Paket | U+1F4E6 | \u1F4E6 |
| 🔒 | Schloss (geschlossen) | U+1F512 | \u1F512 |
| 🔍 | Lupe / Suche | U+1F50D | \u1F50D |
| 📝 | Notiz / Bearbeiten | U+1F4DD | \u1F4DD |
| ✏️ | Bleistift | U+270F U+FE0F | \u270F\uFE0F |
| 📁 | Ordner | U+1F4C1 | \u1F4C1 |
| ⏳ | Sanduhr läuft | U+23F3 | \u23F3 |
| ⌛ | Sanduhr abgelaufen | U+231B | \u231B |
| 🏁 | Zielflagge | U+1F3C1 | \u1F3C1 |
| 💡 | Idee / Glühbirne | U+1F4A1 | \u1F4A1 |
**Diese Symbole sind:**
- UTF-8 kompatibel
- terminal-sicher (auch in alten Konsolen)
- monochrom-darstellbar (keine Farbgrafiken erforderlich)
- für den Einsatz in CLI-Programmen optimiert (piped output, Logging, SSH)
**Bezeichnung (offiziell oder gebräuchlich):**
- Unicode Basic Symbols
- CLI-Safe Unicode Symbols
- Terminal-Safe Emojis
- Monochrome Unicode Icons
- Lightweight Unicode Icons
---
## 📁 Anleitung: Unicode in CLI-Programmen richtig behandeln
### 📝 Wichtig für CLI-Projekte:
- **Python**:
Sicherstellen, dass `stdout` auf UTF-8 eingestellt ist (sonst Encoding-Fehler möglich):
```python
import sys
if hasattr(sys.stdout, "reconfigure"):
sys.stdout.reconfigure(encoding='utf-8')
```
- **Node.js**:
Node unterstützt UTF-8 in Terminals nativ, aber sicherstellen, dass `process.stdout` nicht umgeleitet oder manipuliert wird.
- **C# (.NET Core)**:
Konsole explizit auf UTF-8 setzen:
```csharp
Console.OutputEncoding = System.Text.Encoding.UTF8;
```
- **Shell / Bash**:
UTF-8 Locale erzwingen:
```bash
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
```
- **Windows** (cmd/powershell):
Powershell versteht UTF-8 gut. Bei `cmd.exe`:
```cmd
chcp 65001
```
---

33
tools/dev-setup.sh Normal file
View File

@ -0,0 +1,33 @@
#!/bin/bash
# dev-setup.sh
# Erstellt Git-Hook, der beim Branchwechsel eine Datei mit dem Branch-Namen erstellt
HOOK_PATH=".git/hooks/post-checkout"
echo "⚙️ Richte Git-Hook ein für Branch-Datei (z.B. BRANCH-MAIN)..."
# Prüfe ob .git-Verzeichnis existiert
if [ ! -d .git ]; then
echo "❌ Dieses Skript muss im Root eines Git-Repositories ausgeführt werden."
exit 1
fi
# Hook-Inhalt
read -r -d '' HOOK_SCRIPT <<'EOF'
#!/bin/sh
branch=$(git rev-parse --abbrev-ref HEAD)
# Entferne alte BRANCH-* Dateien
rm -f BRANCH-*
# Erzeuge neue Datei mit aktuellem Branchnamen
touch "BRANCH-${branch}"
EOF
# Hook schreiben
echo "$HOOK_SCRIPT" > "$HOOK_PATH"
chmod +x "$HOOK_PATH"
echo "✅ Git-Hook erstellt: $HOOK_PATH"
echo "📄 Beispiel: BRANCH-main wird erstellt beim Wechsel auf 'main'"