refactor: ready to move server
This commit is contained in:
parent
7183a80c86
commit
66d584d72c
12
.gitignore
vendored
12
.gitignore
vendored
@ -1,17 +1,7 @@
|
|||||||
# ---> Go
|
|
||||||
# Binaries for programs and plugins
|
|
||||||
*.exe
|
|
||||||
*.exe~
|
|
||||||
*.dll
|
|
||||||
*.so
|
|
||||||
*.dylib
|
|
||||||
|
|
||||||
# Test binary, build with `go test -c`
|
# Test binary, build with `go test -c`
|
||||||
*.test
|
*.test
|
||||||
|
|
||||||
# Output of the go coverage tool, specifically when used with LiteIDE
|
|
||||||
*.out
|
|
||||||
|
|
||||||
*.jpg
|
*.jpg
|
||||||
*.png
|
*.png
|
||||||
*.woff
|
*.woff
|
||||||
|
cmd/phga.de/phga.de
|
||||||
|
7
build/app/Dockerfile
Normal file
7
build/app/Dockerfile
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
FROM golang:1.16.2
|
||||||
|
|
||||||
|
ENV GO111MODULE=off
|
||||||
|
RUN go get -u -d g.phga.de/phga/phga.de/...
|
||||||
|
WORKDIR /go/src/g.phga.de/phga/phga.de/cmd/phga.de
|
||||||
|
RUN go build
|
||||||
|
CMD ["./phga.de"]
|
13
build/docker-compose.yml
Normal file
13
build/docker-compose.yml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
tt:
|
||||||
|
build:
|
||||||
|
context: ./app
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- 8099:8080
|
||||||
|
volumes:
|
||||||
|
- /srv/phga.de/web/data:/go/src/g.phga.de/phga/phga.de/web/data
|
||||||
|
- /srv/phga.de/web/static/fonts:/go/src/g.phga.de/phga/phga.de/web/static/fonts
|
@ -9,11 +9,12 @@ import (
|
|||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"path"
|
||||||
"regexp"
|
"regexp"
|
||||||
)
|
)
|
||||||
|
|
||||||
// could be enabled after the implementation is complete.
|
// could be enabled after the implementation is complete.
|
||||||
// var t = template.Must(template.ParseFiles("tmpl/layouts/base.html", "tmpl/index.html", "tmpl/blog.html", "tmpl/about.html", "tmpl/contact.html", ))
|
// var t = template.Must(getTemplate("layouts/base.html", "index.html", "blog.html", "about.html", "contact.html", ))
|
||||||
// A regex used to identify valid Img requests
|
// A regex used to identify valid Img requests
|
||||||
var validImg = regexp.MustCompile("^/info/([\\w_\\- ]+)")
|
var validImg = regexp.MustCompile("^/info/([\\w_\\- ]+)")
|
||||||
var exhibit Exhibition
|
var exhibit Exhibition
|
||||||
@ -28,7 +29,7 @@ func main() {
|
|||||||
http.HandleFunc("/contact", handleContact)
|
http.HandleFunc("/contact", handleContact)
|
||||||
http.HandleFunc("/info/", handleInfo)
|
http.HandleFunc("/info/", handleInfo)
|
||||||
// provide the inc directory to the useragent
|
// provide the inc directory to the useragent
|
||||||
http.Handle("/inc/", http.StripPrefix("/inc/", http.FileServer(http.Dir("inc"))))
|
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("../../web/static"))))
|
||||||
// listen on port 8080 (I use nginx to proxy this local server)
|
// listen on port 8080 (I use nginx to proxy this local server)
|
||||||
log.Fatalln(http.ListenAndServe(":8080", nil))
|
log.Fatalln(http.ListenAndServe(":8080", nil))
|
||||||
}
|
}
|
||||||
@ -51,24 +52,24 @@ type Exhibition struct {
|
|||||||
// Funcions follow that handle the requests
|
// Funcions follow that handle the requests
|
||||||
func handleIndex(w http.ResponseWriter, r *http.Request) {
|
func handleIndex(w http.ResponseWriter, r *http.Request) {
|
||||||
// that should also be somewhere else when there is another gallery
|
// that should also be somewhere else when there is another gallery
|
||||||
exhibit.parseExhibitions("./data")
|
exhibit.parseExhibitions("../../web/data")
|
||||||
// Parses all required html files to provide the actual html that is shipped.
|
// Parses all required html files to provide the actual html that is shipped.
|
||||||
t, _ := template.ParseFiles("tmpl/layouts/index.html", "tmpl/gallery.html", "tmpl/header.html")
|
t, _ := getTemplate("layouts/index.html", "gallery.html", "header.html")
|
||||||
t.Execute(w, exhibit)
|
t.Execute(w, exhibit)
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleBlog(w http.ResponseWriter, r *http.Request) {
|
func handleBlog(w http.ResponseWriter, r *http.Request) {
|
||||||
t, _ := template.ParseFiles("tmpl/layouts/base.html", "tmpl/soon.html", "tmpl/header.html")
|
t, _ := getTemplate("layouts/base.html", "soon.html", "header.html")
|
||||||
t.Execute(w, nil)
|
t.Execute(w, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleAbout(w http.ResponseWriter, r *http.Request) {
|
func handleAbout(w http.ResponseWriter, r *http.Request) {
|
||||||
t, _ := template.ParseFiles("tmpl/layouts/base.html", "tmpl/about.html", "tmpl/header.html")
|
t, _ := getTemplate("layouts/base.html", "about.html", "header.html")
|
||||||
t.Execute(w, nil)
|
t.Execute(w, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleContact(w http.ResponseWriter, r *http.Request) {
|
func handleContact(w http.ResponseWriter, r *http.Request) {
|
||||||
t, _ := template.ParseFiles("tmpl/layouts/base.html", "tmpl/contact.html", "tmpl/header.html")
|
t, _ := getTemplate("layouts/base.html", "contact.html", "header.html")
|
||||||
t.Execute(w, nil)
|
t.Execute(w, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,3 +126,21 @@ func (ex *Exhibition) parseExhibitions(dir string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getTemplate(files ...string) (*template.Template, error) {
|
||||||
|
tmplFolder := "../../web/templates/"
|
||||||
|
for i, f := range files {
|
||||||
|
files[i] = tmplFolder + f
|
||||||
|
}
|
||||||
|
// Name has to be the basename of at least one of the template files
|
||||||
|
t := template.New(path.Base(files[0]))
|
||||||
|
// Add custom helper funcs to template
|
||||||
|
// t.Funcs(template.FuncMap{
|
||||||
|
// "UnwrapOID": unwrapObjectID,
|
||||||
|
// "GetSurveys": getSurveys,
|
||||||
|
// })
|
||||||
|
|
||||||
|
t, err := t.ParseFiles(files...)
|
||||||
|
|
||||||
|
return t, err
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
@font-face {
|
@font-face {
|
||||||
src: url("/inc/fonts/HKGrotesk-Regular.woff");
|
src: url("/static/fonts/HKGrotesk-Regular.woff");
|
||||||
font-family: hkg;
|
font-family: hkg;
|
||||||
}
|
}
|
||||||
|
|
@ -101,7 +101,7 @@ function showOverlay(overlay, imgName) {
|
|||||||
window.addEventListener("resize", resize);
|
window.addEventListener("resize", resize);
|
||||||
|
|
||||||
img.addEventListener("load", () => {zoom(0.4, imgName)});
|
img.addEventListener("load", () => {zoom(0.4, imgName)});
|
||||||
img.src = `/inc/images/${imgName}.jpg`;
|
img.src = `/static/images/${imgName}.jpg`;
|
||||||
img.id = imgName;
|
img.id = imgName;
|
||||||
img.alt = imgName;
|
img.alt = imgName;
|
||||||
|
|
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 131 KiB |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
@ -22,7 +22,7 @@
|
|||||||
Adresse
|
Adresse
|
||||||
</div>
|
</div>
|
||||||
<div class="cv-column cv-content">
|
<div class="cv-column cv-content">
|
||||||
Lebzeltergasse 3, 85049 Ingolstadt
|
Johannesstr. 7, 85049 Ingolstadt
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cv-row">
|
<div class="cv-row">
|
||||||
@ -87,7 +87,42 @@
|
|||||||
Zeitspanne
|
Zeitspanne
|
||||||
</div>
|
</div>
|
||||||
<div class="cv-column cv-content">
|
<div class="cv-column cv-content">
|
||||||
01.03.2020 – heute
|
01.12.2020 – heute
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cv-row">
|
||||||
|
<div class="cv-column cv-label">
|
||||||
|
Tätigkeit
|
||||||
|
</div>
|
||||||
|
<div class="cv-column cv-content">
|
||||||
|
Unterstützende Lehrkraft an der Staatlichen Berufsschule 1 Ingolstadt.
|
||||||
|
Hauptsächlich mache ich dort Prüfungsvorbereitung für alle
|
||||||
|
Abschlussklassen in den IT Fachrichtungen (FI-AE / FI-SI).
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cv-row">
|
||||||
|
<div class="cv-column cv-label">
|
||||||
|
Unternehmen
|
||||||
|
</div>
|
||||||
|
<div class="cv-column cv-content">
|
||||||
|
BS1IN
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cv-row">
|
||||||
|
<div class="cv-column cv-label">
|
||||||
|
Branche
|
||||||
|
</div>
|
||||||
|
<div class="cv-column cv-content">
|
||||||
|
Bildung / Duale Ausbildung
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h1 class="cv-sub-heading">Nebentätigkeiten</h1>
|
||||||
|
<div class="cv-row">
|
||||||
|
<div class="cv-column cv-label">
|
||||||
|
Zeitspanne
|
||||||
|
</div>
|
||||||
|
<div class="cv-column cv-content">
|
||||||
|
01.03.2020 – 30.06.2020
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cv-row">
|
<div class="cv-row">
|
||||||
@ -97,7 +132,7 @@
|
|||||||
<div class="cv-column cv-content">
|
<div class="cv-column cv-content">
|
||||||
Geringfügige Beschäftigung (450 € Basis)
|
Geringfügige Beschäftigung (450 € Basis)
|
||||||
Bearbeitung von Projekten im Bereich Server (Microsoft und GNU/Linux)
|
Bearbeitung von Projekten im Bereich Server (Microsoft und GNU/Linux)
|
||||||
und Netzwerk (Diverse Technologien). Betreuung von Bestandskund*innen
|
und Netzwerk (Diverse Technologien). Betreuung von Bestandskund:innen
|
||||||
und deren IT-Umgebungen. Dokumentationserstellung.
|
und deren IT-Umgebungen. Dokumentationserstellung.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -179,7 +214,7 @@
|
|||||||
<div class="cv-column cv-content">
|
<div class="cv-column cv-content">
|
||||||
Weiterentwicklung und Instandhaltung der
|
Weiterentwicklung und Instandhaltung der
|
||||||
bestehenden Netzwerkumgebung mit ca. 3000
|
bestehenden Netzwerkumgebung mit ca. 3000
|
||||||
Netzteilnehmer*innen und 150+ Netzwerkkomponenten
|
Netzteilnehmer:innen und 150+ Netzwerkkomponenten
|
||||||
Ausbildung der Azubis in der Abteilung Systemtechnik.
|
Ausbildung der Azubis in der Abteilung Systemtechnik.
|
||||||
Projektplanung und Durchführung in diversen
|
Projektplanung und Durchführung in diversen
|
||||||
Themengebieten.
|
Themengebieten.
|
||||||
@ -228,7 +263,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="cv-column cv-content">
|
<div class="cv-column cv-content">
|
||||||
Schwerpunk während der Ausbildung war der Bereich
|
Schwerpunk während der Ausbildung war der Bereich
|
||||||
Netzwerk und die Unterstützung von Benutzer*innen vor Ort.
|
Netzwerk und die Unterstützung von Benutzer:innen vor Ort.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cv-row">
|
<div class="cv-row">
|
||||||
@ -284,7 +319,7 @@
|
|||||||
<div class="cv-column cv-content">
|
<div class="cv-column cv-content">
|
||||||
Programmier und Technikkurse für Kinder an der Technischen Hochschule
|
Programmier und Technikkurse für Kinder an der Technischen Hochschule
|
||||||
Ingolstadt. Hier entwickle und betreue ich, zusammen mit anderen
|
Ingolstadt. Hier entwickle und betreue ich, zusammen mit anderen
|
||||||
Student*innen und den Mitarbeiter*innen aus dem Büro der Frauenbeauftragten,
|
Student:innen und den Mitarbeiter:innen aus dem Büro der Frauenbeauftragten,
|
||||||
Workshops rund um das Programmieren von Lego Robotern oder wie man einfache
|
Workshops rund um das Programmieren von Lego Robotern oder wie man einfache
|
||||||
Spiele in der Programmiersprache Scratch entwickelt. Die Workshops werden dann
|
Spiele in der Programmiersprache Scratch entwickelt. Die Workshops werden dann
|
||||||
an verschiedenen Tagen wie z.B. dem Girls/Boys Day durchgeführt.
|
an verschiedenen Tagen wie z.B. dem Girls/Boys Day durchgeführt.
|
||||||
@ -305,7 +340,7 @@
|
|||||||
<div class="cv-column cv-content">
|
<div class="cv-column cv-content">
|
||||||
Seit Beginn meines Studiums an der THI bin ich Mitglied bei unserem Verein
|
Seit Beginn meines Studiums an der THI bin ich Mitglied bei unserem Verein
|
||||||
N.I.C.E (Network International Culture Exchange). Hier steht der Austausch
|
N.I.C.E (Network International Culture Exchange). Hier steht der Austausch
|
||||||
zwischen Ausländischen Student*innen und Lokals bei verschiedenen Events im
|
zwischen Ausländischen Student:innen und Lokals bei verschiedenen Events im
|
||||||
Vordergrund. Ich hatte außerdem schon die Möglichkeit ein Buddy für eine
|
Vordergrund. Ich hatte außerdem schon die Möglichkeit ein Buddy für eine
|
||||||
chinesische Austauschstudentin und einen brasilianischen Austauschstudenten zu sein
|
chinesische Austauschstudentin und einen brasilianischen Austauschstudenten zu sein
|
||||||
und konnte Ihnen über die ersten Bürokratischen Hürden in Deutschland hinweg helfen.
|
und konnte Ihnen über die ersten Bürokratischen Hürden in Deutschland hinweg helfen.
|
||||||
@ -346,7 +381,7 @@
|
|||||||
Abschluss
|
Abschluss
|
||||||
</div>
|
</div>
|
||||||
<div class="cv-column cv-content">
|
<div class="cv-column cv-content">
|
||||||
Ausbilder*innen-Eignungsverordnung
|
Ausbilder:innen-Eignungsverordnung
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cv-row">
|
<div class="cv-row">
|
||||||
@ -414,7 +449,7 @@
|
|||||||
Zertifikate und Kurse
|
Zertifikate und Kurse
|
||||||
</div>
|
</div>
|
||||||
<div class="cv-column cv-content">
|
<div class="cv-column cv-content">
|
||||||
Seminarleiter*innen Workshop (FES), CCNA, ADA, Risikomanagement
|
Seminarleiter:innen Workshop (FES), CCNA, ADA, Risikomanagement
|
||||||
(Medizin / DIN 80001, Kurs), IINS (Kurs), CCNA Exploration,
|
(Medizin / DIN 80001, Kurs), IINS (Kurs), CCNA Exploration,
|
||||||
MS Project 2013, Knigge
|
MS Project 2013, Knigge
|
||||||
</div>
|
</div>
|
||||||
@ -428,7 +463,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="cv-column cv-content">
|
<div class="cv-column cv-content">
|
||||||
Skateboard, Schwimmen, Ausgiebige Spaziergänge, Kompetitive Online Spiele,
|
Skateboard, Schwimmen, Ausgiebige Spaziergänge, Kompetitive Online Spiele,
|
||||||
Definitiv zu viel an Linux und Emacs Konfigurationen herum-optimieren,
|
Definitiv zu viel an Linux und Emacs Konfigurationen herum-optimieren, Tastaturen,
|
||||||
hier und da kleinere Elektrotechik Projekte realisieren, 3D-Design (Blender),
|
hier und da kleinere Elektrotechik Projekte realisieren, 3D-Design (Blender),
|
||||||
2D Design (Inkscape), FOSS
|
2D Design (Inkscape), FOSS
|
||||||
</div>
|
</div>
|
@ -7,16 +7,16 @@
|
|||||||
<b>Haftungsausschluss</b>
|
<b>Haftungsausschluss</b>
|
||||||
Angaben gemäß § 5 TMG:
|
Angaben gemäß § 5 TMG:
|
||||||
Philip Gaber
|
Philip Gaber
|
||||||
Lebzeltergasse 3
|
Johannesstr. 9
|
||||||
85049 Ingolstadt
|
85049 Ingolstadt
|
||||||
|
|
||||||
<b>Kontakt:</b>
|
<b>Kontakt:</b>
|
||||||
E-Mail: phga@posteo.de
|
E-Mail: phga@posteo.de
|
||||||
Telefon: +49 841 22064128
|
Telefon: +49 841 12818826
|
||||||
|
|
||||||
<b>Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV:</b>
|
<b>Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV:</b>
|
||||||
Philip Gaber
|
Philip Gaber
|
||||||
Lebzeltergasse 3
|
Johannesstr. 9
|
||||||
85049 Ingolstadt
|
85049 Ingolstadt
|
||||||
|
|
||||||
<b>Streitschlichtung</b>
|
<b>Streitschlichtung</b>
|
@ -7,12 +7,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<section id="welcome">
|
<section id="welcome">
|
||||||
<img id="avatar" alt="" src="/inc/logo/avatar.svg"/>
|
<img id="avatar" alt="" src="/static/logo/avatar.svg"/>
|
||||||
</section>
|
</section>
|
||||||
<section id="exhibition">
|
<section id="exhibition">
|
||||||
{{range $key, $val := .Pics}}
|
{{range $key, $val := .Pics}}
|
||||||
<div class="thumb-box">
|
<div class="thumb-box">
|
||||||
<img alt="{{$val.Name}}" src="/inc/thumbs/t_{{$val.Name}}.jpg" data-img="{{$val.Name}}" class="thumb" />
|
<img alt="{{$val.Name}}" src="/static/thumbs/t_{{$val.Name}}.jpg" data-img="{{$val.Name}}" class="thumb" />
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</section>
|
</section>
|
@ -5,7 +5,7 @@
|
|||||||
<a href="/blog">BLOG</a>
|
<a href="/blog">BLOG</a>
|
||||||
|
|
||||||
<!-- <a class="nav-center"></a> -->
|
<!-- <a class="nav-center"></a> -->
|
||||||
<a id="logo" href="/"><img src="/inc/logo/logo.svg" alt="" /></a>
|
<a id="logo" href="/"><img src="/static/logo/logo.svg" alt="" /></a>
|
||||||
<!-- <a id="logo" href=""></a> -->
|
<!-- <a id="logo" href=""></a> -->
|
||||||
<!-- <a class="nav-center"></a> -->
|
<!-- <a class="nav-center"></a> -->
|
||||||
|
|
@ -9,7 +9,7 @@
|
|||||||
<meta name="author" content="Philip Gaber" />
|
<meta name="author" content="Philip Gaber" />
|
||||||
<meta name="copyright" content="Philip Gaber" />
|
<meta name="copyright" content="Philip Gaber" />
|
||||||
<title>PHGA</title>
|
<title>PHGA</title>
|
||||||
<link href="/inc/css/main.css" rel="stylesheet"/>
|
<link href="/static/css/main.css" rel="stylesheet"/>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
{{block "header" .}}NO HEADER DEFINED{{end}}
|
{{block "header" .}}NO HEADER DEFINED{{end}}
|
@ -9,10 +9,10 @@
|
|||||||
<meta name="author" content="Philip Gaber" />
|
<meta name="author" content="Philip Gaber" />
|
||||||
<meta name="copyright" content="Philip Gaber" />
|
<meta name="copyright" content="Philip Gaber" />
|
||||||
<title>PHGA 🤓 teord</title>
|
<title>PHGA 🤓 teord</title>
|
||||||
<link href="/inc/css/main.css" rel="stylesheet"/>
|
<link href="/static/css/main.css" rel="stylesheet"/>
|
||||||
<script src="/inc/js/main.js"></script>
|
<script src="/static/js/main.js"></script>
|
||||||
<script src="/inc/js/zoom.js"></script>
|
<script src="/static/js/zoom.js"></script>
|
||||||
<script src="/inc/js/text.js"></script>
|
<script src="/static/js/text.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<section id="gallery-wrapper">
|
<section id="gallery-wrapper">
|
Loading…
x
Reference in New Issue
Block a user