Skip to content

Commit 0617ddf

Browse files
Merge branch 'hugo-migration' of https://github.com/bit-jkraushaar/bit-jkraushaar.github.io into hugo-migration
2 parents b599cdf + 0b89d19 commit 0617ddf

File tree

135 files changed

+1499
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

135 files changed

+1499
-0
lines changed

.github/workflows/hugo.yaml

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# Sample workflow for building and deploying a Hugo site to GitHub Pages
2+
name: Deploy Hugo site to Pages
3+
4+
on:
5+
# Runs on pushes targeting the default branch
6+
push:
7+
branches:
8+
- hugo-migration
9+
10+
# Allows you to run this workflow manually from the Actions tab
11+
workflow_dispatch:
12+
13+
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
14+
permissions:
15+
contents: read
16+
pages: write
17+
id-token: write
18+
19+
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
20+
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
21+
concurrency:
22+
group: "pages"
23+
cancel-in-progress: false
24+
25+
# Default to bash
26+
defaults:
27+
run:
28+
shell: bash
29+
30+
jobs:
31+
# Build job
32+
build:
33+
runs-on: ubuntu-latest
34+
env:
35+
HUGO_VERSION: 0.120.4
36+
steps:
37+
- name: Install Hugo CLI
38+
run: |
39+
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
40+
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb
41+
- name: Install Dart Sass
42+
run: sudo snap install dart-sass
43+
- name: Checkout
44+
uses: actions/checkout@v4
45+
with:
46+
submodules: recursive
47+
fetch-depth: 0
48+
- name: Setup Pages
49+
id: pages
50+
uses: actions/configure-pages@v5
51+
- name: Install Node.js dependencies
52+
run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
53+
- name: Build with Hugo
54+
env:
55+
HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache
56+
HUGO_ENVIRONMENT: production
57+
TZ: Europe/Berlin
58+
run: |
59+
hugo \
60+
--gc \
61+
--minify \
62+
--baseURL "${{ steps.pages.outputs.base_url }}/"
63+
- name: Upload artifact
64+
uses: actions/upload-pages-artifact@v3
65+
with:
66+
path: ./public
67+
68+
# Deployment job
69+
deploy:
70+
environment:
71+
name: github-pages
72+
url: ${{ steps.deployment.outputs.page_url }}
73+
runs-on: ubuntu-latest
74+
needs: build
75+
steps:
76+
- name: Deploy to GitHub Pages
77+
id: deployment
78+
uses: actions/deploy-pages@v4

.gitmodules

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[submodule "themes/ananke"]
2+
path = themes/ananke
3+
url = https://github.com/theNewDynamic/gohugo-theme-ananke
4+
[submodule "themes/hugo-theme-stack"]
5+
path = themes/hugo-theme-stack
6+
url = https://github.com/CaiJimmy/hugo-theme-stack/

.hugo_build.lock

Whitespace-only changes.

assets/img/avatar.jpeg

28.3 KB
Loading

assets/img/avatar.png

315 KB
Loading

assets/jsconfig.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"compilerOptions": {
3+
"baseUrl": ".",
4+
"paths": {
5+
"*": [
6+
"../themes/hugo-theme-stack/assets/*"
7+
]
8+
}
9+
}
10+
}
238 KB
Loading
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
---
2+
date: "2020-05-27T16:48:36Z"
3+
title: Hallo Welt
4+
description: "Hallo zusammen! Ich bin Jochen Kraushaar, ein leidenschaftlicher Softwareentwickler und Architekt. Dies ist mein erster Blogartikel, und wie könnte er besser beginnen als mit einem klassischen Hallo Welt? In diesem Blog teile ich meine Best Practices und Erfahrungen aus dem Alltag, um mir selbst und vielleicht auch anderen Entwicklern das Leben zu erleichtern. Erfahrt mehr über meine Reise und den Technologie-Stack, der diesen Blog antreibt. Willkommen bei Jochens Cache!"
5+
image: header.webp
6+
---
7+
8+
Das hier ist mein erster Artikel in diesem neuen Blog.
9+
Und wie es sich für einen Blog Rund um Software Entwicklung gehört, beginnt er natürlich mit *Hallo Welt*.
10+
11+
Mein Name ist Jochen Kraushaar.
12+
Ich arbeite als Software Entwickler und Architekt.
13+
Diesen Blog schreibe ich vor allem für mich selbst.
14+
Er dient mir als Gedächtnisstütze, um Best Practices aus meinem Alltag wiederzufinden, ohne erneut eine aufwändige Recherche durchzuführen.
15+
Oder mit anderen Worten: Er dient mir als Cache - Jochens Cache.
16+
17+
# Anforderungen
18+
19+
Als Software Architekt habe ich zu Beginn dieses Projekts Anforderungen definiert:
20+
21+
* Ich möchte Tools einsetzen, die ich auch in meinem normalen Arbeitsalltag verwende.
22+
* Die Seite soll schnell sein und auf unnötiges JavaScript verzichten.
23+
* Hin und wieder möchte ich Codeschnipsel ohne großen Aufwand einbinden können.
24+
* Aus Sicherheitsgründen soll die Seite so statisch wie möglich sein.
25+
* Gleichzeitig will ich mich aber auch nicht mit dem Design herumschlagen, sondern mich auf den Inhalt konzentrieren.
26+
* Der Build der Seite soll automatisiert sein.
27+
28+
# Erster Versuch: Hugo
29+
30+
Bei meinen Recherchen bin ich auf diesen Beitrag gestoßen: [How to create a blog with AsciiDoc](https://opensource.com/article/17/8/asciidoc-web-development)
31+
32+
Die Autorin kombiniert [Hugo][hugo] mit [AsciiDoc][asciidoc] bzw. [Asciidoctor][asciidoctor] um so einen Blog zu generieren, der dann über [GitHub Pages][github-pages] gehostet wird.
33+
Da ich AsciiDoc bereits in meinem Entwickler-Alltag in der [docToolchain](https://doctoolchain.github.io/docToolchain/) einsetze, wäre dieser Ansatz für mich perfekt.
34+
So könnte ich meine Blogbeiträge in einem Editor (in meinem Fall [Atom][atom]) schreiben und durch Hugo daraus eine statische Seite generieren lassen.
35+
Darüber hinaus bietet mir Hugo auch noch verschiedene Themes und andere Features an, die ich bei einer rein statischen Seite selbst erstellen müsste.
36+
37+
Leider musste ich dann feststellen, dass es zwar grundsätzlich eine Integration in Github Pages gibt, diese aber einen separaten Build erfordert.
38+
Etwas ernüchtert recherchierte ich weiter.
39+
40+
# Zweiter Versuch: Jekyll
41+
42+
Beim genaueren Studium der GitHub Pages Dokumentation fand ich schnell heraus, dass dort bevorzugt [Jekyll][jekyll] eingesetzt wird.
43+
Hier wird der Build direkt von GitHub Pages übernommen.
44+
Leider schränkt GitHub Pages die möglichen Jekyll Plugins ein.
45+
In meinem Fall bedeutet das:
46+
47+
* Kein AsciiDoc-Support (stattdessen wird [Markdown][markdown] verwendet)
48+
* Sehr eingeschränkter I18N-Support
49+
50+
Auf der anderen Seite ist mir eine reibungslose Integration in GitHub Pages sehr wichtig.
51+
Zudem ist die Struktur des Projekts und der Templates etwas einfacher zu verstehen.
52+
Meine Wahl fiel daher auf Jekyll als Generator.
53+
Als Editor nutze ich auch in diesem Fall [Atom][atom].
54+
55+
# Mein Technologie-Stack
56+
57+
Mein Technologie-Stack für diesen Blog sieht nun so aus:
58+
59+
* [Ruby][ruby] - als Voraussetzung für Jekyll
60+
* [Markdown][markdown]
61+
* [Jekyll][jekyll]
62+
* [Atom][atom]
63+
64+
So ausgestattet fehlte mir nur noch ein Impressum und eine Datenschutzerklärung.
65+
Und natürlich musste ich die Anwendung noch irgendwie installieren.
66+
67+
# GitHub Pages
68+
69+
[GitHub Pages][github-pages] bietet sich gerade für Blogs im privaten Umfeld an.
70+
Mit einer Größe von 1 GB für die Seite und 100 GB für die Bandbreite sollte GitHub Pages für so ziemlich jeden privaten Blog geeignet sein.
71+
Das alles ist auch noch kostenlos.
72+
73+
Zudem gibt es eine gute [Getting Started](https://help.github.com/en/github/working-with-github-pages/getting-started-with-github-pages) Dokumentation und eine Dokumentation zur [Integration mit Jekyll](https://help.github.com/en/github/working-with-github-pages/setting-up-a-github-pages-site-with-jekyll).
74+
75+
Ich bin außerdem ein großer Fan der Idee, den Quellcode dieser Seite über GitHub [bereitzustellen](https://github.com/bit-jkraushaar/bit-jkraushaar.github.io).
76+
77+
# Hello World
78+
79+
Damit ist dieses Projekt bereit, das Licht der Welt zu erblicken. In diesem Sinne:
80+
81+
> Hello World
82+
83+
-- *Every Programming Language ever*
84+
85+
[hugo]: https://gohugo.io/
86+
[asciidoc]: https://asciidoc.org/
87+
[asciidoctor]: https://asciidoctor.org/
88+
[github-pages]: https://pages.github.com/
89+
[atom]: https://atom.io/
90+
[ruby]: https://www.ruby-lang.org/
91+
[jekyll]: https://jekyllrb.com/
92+
[markdown]: https://daringfireball.net/projects/markdown/
2.28 MB
Loading
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
---
2+
date: "2020-05-30T08:19:00Z"
3+
title: Custom Progress Bar für Wizards
4+
description: "Vor kurzem habe ich mich der Herausforderung gestellt, einen Wizard mit einem Fortschrittsbalken komplett ohne Komponentenframework zu erstellen. Dafür habe ich ausschließlich HTML und CSS verwendet. Der Clou: Der Fortschrittsbalken basiert auf dem CSS clip-path Property, mit dem sich komplexe Formen einfach gestalten lassen. In diesem Beitrag zeige ich, wie ich ein Oktagon als Basisform für den Fortschrittsbalken verwendet habe und gebe Einblicke in die Umsetzung und mögliche Erweiterungen."
5+
image: header.png
6+
---
7+
8+
Kürzlich stand ich vor der Herausforderung einen Wizard mit Fortschrittsbalken ohne Komponentenframework zu erstellen.
9+
Für den Fortschrittsbalken verwendete ich daher ausschließlich HTML und CSS.
10+
11+
Die Grundlage für den Fortschrittsbalken ist das CSS `clip-path` Property.
12+
Dieses Property wird für [Basic Shapes](https://developer.mozilla.org/en-US/docs/Web/CSS/basic-shape) von allen modernen Browsern [unterstützt](https://caniuse.com/#feat=mdn-css_properties_clip-path_basic_shape).
13+
Mit der `polygon()` Funktion lassen sich relativ einfach komplexe Formen erstellen.
14+
Glücklicherweise gibt es hierfür bereits einen [Online Editor](https://bennettfeely.com/clippy/), der mir die Gestaltung erleichterte.
15+
16+
# Beispiel
17+
18+
Für mein Beispiel verwende ich ein Oktagon als Grundform.
19+
20+
```css
21+
.step {
22+
-webkit-clip-path: polygon(30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30%);
23+
clip-path: polygon(30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30%);
24+
25+
background: red;
26+
27+
width: 100px;
28+
height: 50px;
29+
30+
line-height: 50px;
31+
text-align: center;
32+
}
33+
```
34+
35+
Der Hintergrund kann frei gestaltet werden, ebenso die Höhe und Breite.
36+
Die beiden Properties `line-height` und `text-align` dienen zur Zentrierung der Beschriftung.
37+
38+
Zusätzlich soll bei einem Fortschrittsbalken innerhalb eines Wizards der aktive Schritt markiert werden.
39+
In meinem Beispiel verwende ich für den aktiven Schritt eine andere Hintergrundfarbe:
40+
41+
```css
42+
.step.active {
43+
background: orange;
44+
}
45+
```
46+
47+
Das dazu gehörende HTML sieht z.B. so aus:
48+
49+
```html
50+
<div style="display: flex">
51+
<div class="step">
52+
Schritt 1
53+
</div>
54+
<div class="step active">
55+
Schritt 2
56+
</div>
57+
<div class="step">
58+
Schritt 3
59+
</div>
60+
</div>
61+
```
62+
63+
Dieses Beispiel steht auch auf JSFiddle bereit: [Beispiel](https://jsfiddle.net/a0jz8xwu/)
64+
65+
# Mögliche Erweiterungen
66+
67+
Über die CSS Selektoren [:first-child](https://developer.mozilla.org/en-US/docs/Web/CSS/:first-child), [:last-child](https://developer.mozilla.org/en-US/docs/Web/CSS/:last-child) und [:not](https://developer.mozilla.org/en-US/docs/Web/CSS/:not) lässt sich die Form des ersten bzw. letzten Schritts im Fortschrittsbalken anpassen.

0 commit comments

Comments
 (0)