20 changed files with 292 additions and 0 deletions
@ -0,0 +1,3 @@
|
||||
[submodule "themes/terminal"] |
||||
path = themes/terminal |
||||
url = https://github.com/panr/hugo-theme-terminal.git |
||||
@ -0,0 +1,6 @@
|
||||
--- |
||||
title: "{{ replace .Name "-" " " | title }}" |
||||
date: {{ .Date }} |
||||
draft: true |
||||
--- |
||||
|
||||
@ -0,0 +1,36 @@
|
||||
baseURL = 'https://kollegen.uber.space' |
||||
defaultContentLanguage = 'de' |
||||
languageCode = 'de-de' |
||||
title = 'Kollegen' |
||||
theme = "terminal" |
||||
copyright = "Christian Schulzendorff" |
||||
|
||||
paginate = 5 |
||||
|
||||
[params] |
||||
contentTypeName = "posts" |
||||
themeColor = "blue" |
||||
showMenuItems = 5 |
||||
fullWidthTheme = false |
||||
centerTheme = false |
||||
|
||||
[languages] |
||||
[languages.de] |
||||
title = "kollegen" |
||||
subtitle = "CHS" |
||||
keywords = "" |
||||
copyright = "" |
||||
menuMore = "..." |
||||
readMore = "Lies mehr" |
||||
readOtherPosts = "Lies andere Posts" |
||||
|
||||
[languages.de.params.logo] |
||||
logoText = "Kollegen" |
||||
logoHomeLink = "/" |
||||
|
||||
[languages.de.menu] |
||||
|
||||
[[languages.de.menu.main]] |
||||
identifier = "about" |
||||
name = "Über" |
||||
url = "/ueber" |
||||
@ -0,0 +1,13 @@
|
||||
--- |
||||
title: "Impressum / Datenschutz" |
||||
draft: false |
||||
--- |
||||
|
||||
# Impressum |
||||
Dies ist eine private Website und dient ausschließlich nicht-kommerziellen Zwecken. Verantwortlich für den Inhalt ist Christian Schulzendorff, Tempelstr. 8A, 63571 Gelnhausen, E-Mail chs8691[ätt]mailbox.org, Tel. 016099240304. Alle Bilder sind, sofern nicht explizit anders angegeben, Eigentum von Christian Schulzendorff. Die Website unterliegt und deren Bilde unterliegen der Lizenz [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). |
||||
|
||||
# Datenschutz |
||||
Bei dem frei zugängliche Inhalten (ohne Anmeldung) handelt es sich um statische Websites, für die keine Daten des Aufrufers gespeichert oder analysiert werden. Für die Darstellung der Inhalte werden externe Hugo-Themes verwendet: |
||||
|
||||
|
||||
Für die aktive Mitarbeit an dieser Website wird ein lokaler Gitea-Account benötigt. Die dafür benötigte E-Mail-Adresse wird gespeichert, solange der Account besteht. Es werden keine Daten an Dritte weitergegeben. Wird das Löschen eines Gitea-Accounts schriftlich mitgeteilt, verpflichten wir uns, alle Account-Daten zeitnah zu löschen. Der erstellte Content in dem Git-Repository bleibt davon aber unberührt. Gitea verwendet für ein besseres Benutzererlebnis Cookies, siehe (Gitea)[https://gitea.com/]. |
||||
@ -0,0 +1,40 @@
|
||||
+++ |
||||
title = "Die Runde Stunde geht online" |
||||
date = "2022-02-05" |
||||
author = false |
||||
cover = "" |
||||
tags = ["fotografie"] |
||||
keywords = ["dierundestunde", "blog"] |
||||
description = "Eine kurze Erläuterung zum Konzept der Website Die Runde Stunde." |
||||
showFullContent = false |
||||
readingTime = false |
||||
+++ |
||||
Eine kurze Erläuterung zum Konzept der Website [Die Runde Stunde](https://kollegen.uber.space/dierundestunde/) |
||||
|
||||
# Was zeigt die Website |
||||
Es ist die generierte Webseite meiner Fotos aus dem Format **Die Runde Stunde**, eine Art sich selbst veränderndes Foto-Album. Mit jedem Hochladen eines neuen Bildes wird die Website neu erzeugt und die Bilder werden neu gruppiert. |
||||
|
||||
# Motivation |
||||
|
||||
Das Sport-Format **Die Runden Stunde** entstand durch das vermehrte Arbeiten im Home Office und der damit verbundenen extremen Bewegungsarmut (Schrittzähler lügen nicht). Es besteht aus einer morgendlichen Stunde Workout auf dem Rad bzw. mit den Laufschuhen. Im ersten Corona-Lockdown 2020 kam die Einschränkung auf 15 km-Bewegungsradius hinzu. Das entspricht so ziemlich genau dem maximalen Radius beim Radfahren. Das bedeutete für mich also keine Einschränkung, sondern machte mir im Gegenteil klar, wie wertvoll diese kleine Fläche Heimat ist. Und dass es galt, diese zu entdecken und dieses zu teilen. |
||||
|
||||
# Regeln der Bilder |
||||
|
||||
Beim morgendlichen Laufen oder einer Radfahrt von ca. 1 Stunde Dauer. Mit Handy-Kamera oder der guten Fuji. GPS einschalten. Spontane Wahl von genau einem Spot oder auch vorher überlegt den Spot ansteuern. Bild(er) machen. Nach Hause ohne weiteren Halt. Nachbearbeitung erlaubt. |
||||
|
||||
# Funktionsweise des Blogs |
||||
|
||||
Der Inhalt wird aus den Bildern generiert. Dazu werden Aufnahmedatum und GPS-Position ausgelesen und jeweils neun Bilder zu einem Spot zusammengefasst (denn 9 ist eine gute Zahl für einen Spot). Der erste Spot besteht aus dem neusten Bild, was den Mittelpunkt des Spots bestimmt. Dann werden acht weiteren Bildern aus dessen Nähe gesucht. Das am weitest entfernte Bild bestimmt den Radius des Spots. Zum Spot wird noch eine Header-Grafik generiert: Jedes Bild wird als Punkt dargestellt und es wird eine Kreisfläche um das erste Bild mit dem ermittelten Radius gezeichnet. Je älter das Bild, desto verblasster sein Punkt. Der nächste Spot wird mit den verbleibenden Bildern genauso erzeugt. |
||||
|
||||
Die Header-Grafik besteht aus dem 15 km-Kreis meiner Heimat und den Spot-Kreisen. Auch hier gilt: |
||||
Ältere Spots verblassen... |
||||
|
||||
|
||||
# Technik |
||||
|
||||
Der Blog besteht aus der einen statischen Seite, welche mit dem Hugo-Framework generiert wird. Ein neues Bild, mit GPS-Koordinaten und ggf. einem Titel getaggt, wird mit einem lokalen Upload-Skript erst verkleinert und dann auf dem Webhost hochgeladen. Auf dem Server werden dann noch zwei weitere Skripte bemüht und die Bilder und Blog-Beiträge zu generieren: die Bilder werden neu in Beiträge (Spots) aufgeteilt und pro Spot je eine Yml-Datei mit dem dazugehörigen SVG-Bild neu generiert. Auch wird das Header-SVG neu erzeugt. Dann wird Hugo angeschmissen und der so erzeugte Content auf den Webspace kopiert. Eine genauere Anleitung und auch den Quellcode findet man über das Kollegen-eigene [Gitea](https://kollegen.uber.space/gitea/website/website/src/branch/master/dierundestunde.md). |
||||
|
||||
|
||||
# Reflektion |
||||
|
||||
Hiermit liegen die Bilder nun an ihrem dritten Ort im Netz, neben Instagram und Strava. Das macht sie nicht besser. Ganz im Gegenteil, es fühlt sich etwas 'too much' an. Auch wegen des Ressourcenverbrauchs für Uberspace-Server und Plattenplatz und so. Außerdem muss ich das ganze ja am Laufen halten, was trotz der Helferskripte Lebenszeit benötigt. Aber so ist das mit einem Experiment: Es ist erstmal nicht schonend, und man weiß nicht unbedingt, wozu die Erfahrung noch gut sein wird. |
||||
@ -0,0 +1,6 @@
|
||||
+++ |
||||
title = "3 Die Runde Stunde" |
||||
urlLink = "kollegen.uber.space/dierundestunde/" |
||||
cover = "img/drs-logo.png" |
||||
coverCredit = "Besuche Die Runde Stunde" |
||||
+++ |
||||
@ -0,0 +1,6 @@
|
||||
+++ |
||||
title = "2 Kollegenrunde" |
||||
urlLink = "kollegen.uber.space/kollegenrunde/" |
||||
cover = "img/kollegenrunde-logo.png" |
||||
coverCredit = "Webseite der Kollegenrunde" |
||||
+++ |
||||
@ -0,0 +1,6 @@
|
||||
+++ |
||||
title = "3 My Equis" |
||||
urlLink = "kollegen.uber.space/japp/myequis" |
||||
cover = "img/myequis-logo.png" |
||||
coverCredit = "Besuche My Equis" |
||||
+++ |
||||
@ -0,0 +1,7 @@
|
||||
+++ |
||||
title = "1 Pendel" |
||||
urlLink = "earls5.uber.space/pendel/" |
||||
cover = "img/pendel-logo.png" |
||||
coverCredit = "Die Pendel-Website" |
||||
+++ |
||||
|
||||
@ -0,0 +1,8 @@
|
||||
--- |
||||
title: "Über" |
||||
|
||||
draft: false |
||||
--- |
||||
|
||||
Mein Name sei Christian Schulzendorff. Und es ist anzunehmen, das es sich hier um zusammengeschustertes Zeug handelt; Wexperimente, entrückt aus der pratischen Welt. Im besten Sinne nutzlos und damit frei von jeglichem Anspruch auf ergebnisortientierter Leistung. |
||||
Der Name `kollegen` geht auf die `Kollegenrunde` zurück. Der Begriff erinnert, das wir Teil einer Gemeinschaft sind. Es liegt an uns, sie durch zutun zu bereichern. |
||||
@ -0,0 +1,79 @@
|
||||
{{ define "main" }} |
||||
{{ if .Content }} |
||||
<div class="index-content {{ if .Params.framed -}}framed{{- end -}}"> |
||||
{{ .Content }} |
||||
</div> |
||||
{{ end }} |
||||
|
||||
{{ $PageContext := . }} |
||||
{{ if .IsHome }} |
||||
{{ $PageContext = .Site }} |
||||
|
||||
<div class="flex-container"> |
||||
{{ range (where $PageContext.RegularPages "Type" "tiles") }} |
||||
<div class="flex-item-left"> |
||||
{{ partial "tiles-cover.html" . }} |
||||
</div> |
||||
{{ end }} |
||||
</div> |
||||
{{ end }} |
||||
|
||||
<div class="posts"> |
||||
{{ $isntDefault := not (or (eq (trim $.Site.Params.contentTypeName " ") "posts") (eq (trim $.Site.Params.contentTypeName " ") "")) }} |
||||
{{ $contentTypeName := cond $isntDefault (string $.Site.Params.contentTypeName) "posts" }} |
||||
|
||||
{{ $PageContext := . }} |
||||
{{ if .IsHome }} |
||||
{{ $PageContext = .Site }} |
||||
{{ end }} |
||||
{{ $paginator := .Paginate (where $PageContext.RegularPages "Type" $contentTypeName) }} |
||||
|
||||
{{ range $paginator.Pages }} |
||||
<div class="post on-list"> |
||||
<h1 class="post-title"> |
||||
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a> |
||||
</h1> |
||||
<div class="post-meta"> |
||||
<span class="post-date"> |
||||
{{ .Date.Format "2006-01-02" }} |
||||
</span> |
||||
{{ with .Params.Author }} |
||||
<span class="post-author">:: {{ . }}</span> |
||||
{{ end }} |
||||
</div> |
||||
|
||||
{{ if .Params.tags }} |
||||
<span class="post-tags"> |
||||
{{ range .Params.tags }} |
||||
#<a href="{{ (urlize (printf "tags/%s/" . )) | absLangURL }}"> |
||||
{{- . -}} |
||||
</a> |
||||
{{ end }} |
||||
</span> |
||||
{{ end }} |
||||
|
||||
|
||||
{{ partial "cover.html" . }} |
||||
|
||||
|
||||
<div class="post-content"> |
||||
{{ if .Params.showFullContent }} |
||||
{{ .Content }} |
||||
{{ else if .Description }} |
||||
{{ .Description | markdownify }} |
||||
{{ else }} |
||||
{{ .Summary | markdownify }} |
||||
{{ end }} |
||||
</div> |
||||
|
||||
{{ if not .Params.showFullContent }} |
||||
<div> |
||||
<a class="read-more button" |
||||
href="{{.RelPermalink}}">{{ $.Site.Params.ReadMore }} →</a> |
||||
</div> |
||||
{{ end }} |
||||
</div> |
||||
{{ end }} |
||||
{{ partial "pagination.html" . }} |
||||
</div> |
||||
{{ end }} |
||||
@ -0,0 +1,29 @@
|
||||
<footer class="footer"> |
||||
<div class="footer__inner"> |
||||
{{ if $.Site.Copyright }} |
||||
<div class="copyright copyright--user"> |
||||
<span>{{ $.Site.Copyright | safeHTML }}</span> |
||||
{{ else }} |
||||
<div class="copyright"> |
||||
<span>© {{ now.Year }} Christian Schulzendorff</span> |
||||
{{ end }} |
||||
<span> :: <a href="impressum">Impressum|Datenschutz</a></span> |
||||
</div> |
||||
</div> |
||||
<div> |
||||
<span>Werde auch <a href="https://uberspace.de/de/">Ubernaut</a></span> |
||||
<span> :: Powered by <a href="https://gohugo.io">Hugo</a></span> |
||||
</div> |
||||
</footer> |
||||
|
||||
<script src="{{ "assets/main.js" | absURL }}"></script> |
||||
<script src="{{ "assets/prism.js" | absURL }}"></script> |
||||
|
||||
{{ if $.Site.Params.showLanguageSelector }} |
||||
<script src="{{ "assets/languageSelector.js" | absURL }}"></script> |
||||
{{ end }} |
||||
|
||||
|
||||
|
||||
<!-- Extended footer section--> |
||||
{{ partial "extended_footer.html" . }} |
||||
@ -0,0 +1,25 @@
|
||||
{{- $cover := false -}} |
||||
{{- $autoCover := default $.Site.Params.autoCover false }} |
||||
|
||||
{{- if index .Params "cover" -}} |
||||
{{- if .Resources.GetMatch .Params.Cover }} |
||||
{{- $cover = (.Resources.GetMatch .Params.Cover).RelPermalink -}} |
||||
{{- else -}} |
||||
{{- $cover = absURL .Params.Cover -}} |
||||
{{- end -}} |
||||
{{- else if $.Site.Params.AutoCover -}} |
||||
{{- if (not .Params.Cover) -}} |
||||
{{- if .Resources.GetMatch "cover.*" -}} |
||||
{{- $cover = (.Resources.GetMatch "cover.*").RelPermalink -}} |
||||
{{- end -}} |
||||
{{- end -}} |
||||
{{- end -}} |
||||
|
||||
{{if $cover -}} |
||||
<!-- Cover image found --> |
||||
<a href="https://{{ .Params.urlLink }}"> |
||||
<img src="{{ $cover }}" |
||||
alt="{{ .Title | plainify | default " " }}" |
||||
title="{{ .Params.CoverCredit |plainify|default "Cover Image" }}" /> |
||||
</a> |
||||
{{- end }} |
||||
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
@ -0,0 +1,24 @@
|
||||
.flexing { |
||||
box-sizing: border-box; |
||||
} |
||||
|
||||
.flex-container { |
||||
display: flex; |
||||
flex-direction: row; |
||||
font-size: 30px; |
||||
text-align: center; |
||||
} |
||||
|
||||
.flex-item-left { |
||||
|
||||
padding: 10px; |
||||
flex: 50%; |
||||
} |
||||
|
||||
|
||||
/* Responsive layout - makes a one column-layout instead of two-column layout */ |
||||
@media (max-width: 800px) { |
||||
.flex-container { |
||||
flex-direction: column; |
||||
} |
||||
} |
||||
Loading…
Reference in new issue