From c18135d1274d5012196073c0bc021d9868108291 Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Fri, 25 Oct 2024 22:44:33 -0700 Subject: Get rid of the blog and use webp. --- assets/404-icon.xcf | Bin 6060 -> 4598 bytes assets/404.xcf | Bin 0 -> 2009934 bytes assets/icon.xcf | Bin 10690 -> 9411 bytes assets/icon16x16.xcf | Bin 0 -> 1809 bytes assets/kanna.xcf | Bin 72508 -> 61674 bytes roseh.moe.go | 95 +++------------------ static/404/404.png | Bin 1034642 -> 0 bytes static/404/404.webp | Bin 0 -> 87426 bytes static/404/icon.png | Bin 3678 -> 0 bytes static/404/icon.webp | Bin 0 -> 2576 bytes static/favicon.ico | Bin 0 -> 1150 bytes static/icon.png | Bin 7039 -> 0 bytes static/icon.webp | Bin 0 -> 2942 bytes static/index/kanna.png | Bin 54665 -> 0 bytes static/index/kanna.webp | Bin 0 -> 6830 bytes static/index/stars.gif | Bin 180039 -> 0 bytes static/index/stars.webp | Bin 0 -> 134180 bytes static/pong/icon.png | Bin 915 -> 0 bytes static/pong/icon.webp | Bin 0 -> 1060 bytes templates/404.html.template | 4 +- templates/blog/post.html.template | 5 -- .../blog/posts/2024-10-22_nix_flakes.html.template | 82 ------------------ templates/index.html.template | 10 +-- templates/outline.html.template | 2 +- templates/pong.html.template | 2 +- 25 files changed, 19 insertions(+), 181 deletions(-) create mode 100644 assets/404.xcf create mode 100644 assets/icon16x16.xcf delete mode 100644 static/404/404.png create mode 100644 static/404/404.webp delete mode 100644 static/404/icon.png create mode 100644 static/404/icon.webp create mode 100644 static/favicon.ico delete mode 100644 static/icon.png create mode 100644 static/icon.webp delete mode 100644 static/index/kanna.png create mode 100644 static/index/kanna.webp delete mode 100644 static/index/stars.gif create mode 100644 static/index/stars.webp delete mode 100644 static/pong/icon.png create mode 100644 static/pong/icon.webp delete mode 100644 templates/blog/post.html.template delete mode 100644 templates/blog/posts/2024-10-22_nix_flakes.html.template diff --git a/assets/404-icon.xcf b/assets/404-icon.xcf index b63a0f6..fdc4ff0 100644 Binary files a/assets/404-icon.xcf and b/assets/404-icon.xcf differ diff --git a/assets/404.xcf b/assets/404.xcf new file mode 100644 index 0000000..0073a49 Binary files /dev/null and b/assets/404.xcf differ diff --git a/assets/icon.xcf b/assets/icon.xcf index d7363dd..34fbe31 100644 Binary files a/assets/icon.xcf and b/assets/icon.xcf differ diff --git a/assets/icon16x16.xcf b/assets/icon16x16.xcf new file mode 100644 index 0000000..7b53507 Binary files /dev/null and b/assets/icon16x16.xcf differ diff --git a/assets/kanna.xcf b/assets/kanna.xcf index 873bda4..64251a5 100644 Binary files a/assets/kanna.xcf and b/assets/kanna.xcf differ diff --git a/roseh.moe.go b/roseh.moe.go index 98febd1..df86f2d 100644 --- a/roseh.moe.go +++ b/roseh.moe.go @@ -10,7 +10,6 @@ import ( "net/http" "net/http/httputil" "net/url" - "slices" "strings" "time" ) @@ -46,90 +45,15 @@ var ( outlineTemplate = template.Must(template.New("outline").Parse(outlineString)) ) -var ( - //go:embed templates/blog/post.html.template - postString string - - //go:embed templates/blog/posts - blogPostFiles embed.FS -) - -func mustParseBlogPostTemplates() map[string]*template.Template { - base, err := outlineTemplate.Clone() - if err != nil { - log.Fatalf("outlineTemplate.Clone: %s", err) - } - if _, err := base.New("body").Parse(postString); err != nil { - log.Fatalf("post.html.template: %s", err) - } - postFiles, err := blogPostFiles.ReadDir("templates/blog/posts") - if err != nil { - log.Fatalf("read blog post templates: %s", err) - } - posts := make(map[string]*template.Template, len(postFiles)) - for _, file := range postFiles { - fileContent, err := blogPostFiles.ReadFile("templates/blog/posts/" + file.Name()) - if err != nil { - log.Fatalf("read blog post template %q: %s", file.Name(), err) - } - tmpl, err := base.Clone() - if err != nil { - log.Fatalf("base.Clone: %s", err) - } - if _, err := tmpl.New("post").Parse(string(fileContent)); err != nil { - log.Fatalf("%q: %s", file.Name(), err) - } - posts[strings.TrimSuffix(file.Name(), ".html.template")] = tmpl - } - return posts -} - -var blogPostTemplates = mustParseBlogPostTemplates() - -func blog(w http.ResponseWriter, r *http.Request) { - tmpl, ok := blogPostTemplates[strings.TrimPrefix(r.URL.Path, "/blog/")] - if !ok { - notFound(w, r) - return - } - if err := tmpl.ExecuteTemplate(w, "outline", nil); err != nil { - log.Printf("Warning: blog: %s", err) - } -} - -type blogPost struct { - Name string - Slug string -} - -func mustLoadBlogPosts() []blogPost { - buf := new(strings.Builder) - posts := make([]blogPost, 0, len(blogPostTemplates)) - for slug, tmpl := range blogPostTemplates { - buf.Reset() - if err := tmpl.ExecuteTemplate(buf, "title", nil); err != nil { - log.Fatalf("blog post %q: title: %s", slug, err) - } - posts = append(posts, blogPost{ - Name: buf.String(), - Slug: slug, - }) - } - slices.SortFunc(posts, func(x, y blogPost) int { return strings.Compare(y.Slug, x.Slug) }) - return posts -} - var ( //go:embed templates/index.html.template indexString string indexTemplate = template.Must(template.Must(outlineTemplate.Clone()).New("body").Parse(indexString)) - - blogPostsList = mustLoadBlogPosts() ) func index(w http.ResponseWriter, _ *http.Request) { - if err := indexTemplate.ExecuteTemplate(w, "outline", blogPostsList); err != nil { + if err := indexTemplate.ExecuteTemplate(w, "outline", nil); err != nil { log.Printf("Warning: index: %s", err) } } @@ -150,22 +74,28 @@ func pong(w http.ResponseWriter, _ *http.Request) { //go:embed static var staticFiles embed.FS -func static(w http.ResponseWriter, r *http.Request) { - fileName := strings.TrimPrefix(r.URL.Path, "/") - f, err := staticFiles.Open(fileName) +func serveStaticFile(w http.ResponseWriter, r *http.Request, path string) { + f, err := staticFiles.Open(path) if err != nil { notFound(w, r) return } defer f.Close() - http.ServeContent(w, r, fileName, serverStartTime, f.(io.ReadSeeker)) + http.ServeContent(w, r, path, serverStartTime, f.(io.ReadSeeker)) +} + +func static(w http.ResponseWriter, r *http.Request) { + serveStaticFile(w, r, strings.TrimPrefix(r.URL.Path, "/")) +} + +func favicon(w http.ResponseWriter, r *http.Request) { + serveStaticFile(w, r, "static/favicon.ico") } func main() { flag.Parse() mux := http.NewServeMux() - mux.HandleFunc("/blog/", blog) mux.HandleFunc("/pong", pong) jellyfinURL, err := url.Parse("http://localhost:8096") if err != nil { @@ -173,6 +103,7 @@ func main() { } mux.Handle("/cinema/", httputil.NewSingleHostReverseProxy(jellyfinURL)) mux.HandleFunc("/static/", static) + mux.HandleFunc("/favicon.ico", favicon) mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { if r.URL.Path == "/" { index(w, r) diff --git a/static/404/404.png b/static/404/404.png deleted file mode 100644 index 72d9d02..0000000 Binary files a/static/404/404.png and /dev/null differ diff --git a/static/404/404.webp b/static/404/404.webp new file mode 100644 index 0000000..c416a79 Binary files /dev/null and b/static/404/404.webp differ diff --git a/static/404/icon.png b/static/404/icon.png deleted file mode 100644 index 038ea8d..0000000 Binary files a/static/404/icon.png and /dev/null differ diff --git a/static/404/icon.webp b/static/404/icon.webp new file mode 100644 index 0000000..37bbfe3 Binary files /dev/null and b/static/404/icon.webp differ diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000..01a66aa Binary files /dev/null and b/static/favicon.ico differ diff --git a/static/icon.png b/static/icon.png deleted file mode 100644 index 8dfebb9..0000000 Binary files a/static/icon.png and /dev/null differ diff --git a/static/icon.webp b/static/icon.webp new file mode 100644 index 0000000..7330971 Binary files /dev/null and b/static/icon.webp differ diff --git a/static/index/kanna.png b/static/index/kanna.png deleted file mode 100644 index e144b96..0000000 Binary files a/static/index/kanna.png and /dev/null differ diff --git a/static/index/kanna.webp b/static/index/kanna.webp new file mode 100644 index 0000000..bb8907e Binary files /dev/null and b/static/index/kanna.webp differ diff --git a/static/index/stars.gif b/static/index/stars.gif deleted file mode 100644 index 2b7372f..0000000 Binary files a/static/index/stars.gif and /dev/null differ diff --git a/static/index/stars.webp b/static/index/stars.webp new file mode 100644 index 0000000..27c6f05 Binary files /dev/null and b/static/index/stars.webp differ diff --git a/static/pong/icon.png b/static/pong/icon.png deleted file mode 100644 index 70670b9..0000000 Binary files a/static/pong/icon.png and /dev/null differ diff --git a/static/pong/icon.webp b/static/pong/icon.webp new file mode 100644 index 0000000..03ab77e Binary files /dev/null and b/static/pong/icon.webp differ diff --git a/templates/404.html.template b/templates/404.html.template index a5cccf6..b30281f 100644 --- a/templates/404.html.template +++ b/templates/404.html.template @@ -2,7 +2,7 @@ Not Found - +
@@ -10,7 +10,7 @@ {{.Path}} was not found
- +
diff --git a/templates/blog/post.html.template b/templates/blog/post.html.template deleted file mode 100644 index 80670d6..0000000 --- a/templates/blog/post.html.template +++ /dev/null @@ -1,5 +0,0 @@ -
- ⬅️Home -

{{template "title" .}}

-{{template "post"}} -
diff --git a/templates/blog/posts/2024-10-22_nix_flakes.html.template b/templates/blog/posts/2024-10-22_nix_flakes.html.template deleted file mode 100644 index d191908..0000000 --- a/templates/blog/posts/2024-10-22_nix_flakes.html.template +++ /dev/null @@ -1,82 +0,0 @@ -{{define "title"}}nix flakes for busy people{{end}} - -

TL;DR

- -

To enable flakes on a NixOS system

- -

Just put

- -
-  nix.settings.experimental-features = [
-    "nix-command"
-    "flakes"
-  ];
-
- -

in your configuration.nix. IMO it's a shame that flakes -have been locked behind experimental for so long, it's a large part of -why they have a bad reputation. It's absolutely worth enabling them -since they're so useful.

- -

To use a flake from github

- -
-nix shell github:ggerganov/llama.cpp
-
- -

or to install a specific flake output:

- -
-nix shell github:ggerganov/llama.cpp#rocm
-
- -

To list the outputs for a specific flake, you can usually type -nix shell github:ggerganov/llama.cpp#<tab> and your -shell may or may not list the outputs. If anyone has a better way to do this, -please let me know.

- -

To install a flake in your system profile, use

- -
-nix profile install github:ggerganov/llama.cpp
-
- -

Here is the greatest power of nix flakes: the ability to install and -use them as first-class packages just like anything from nixpkgs. It -feels a lot better integrated than something like the AUR.

- -

To create a nix flake for your own project

- -
-nix flake init -t templates#go-hello
-
- -

Replace go-hello with whatever template you want that most closely -matches your project configuration. Unfortunately many of these templates -have the questionable behavior of also overwriting source files in the -current directory, so I recommend only running nix flake init in an -empty directory, and copying the flake.nix file over to your -existing project.

- -

A philosophical intro to nix flakes

- -

Flakes are a way to replace the centralized nixpkgs repository with -decentralized packages controlled directly by upstream. In many ways -Linux packaging has been moving more and more towards upstream with -things like appimages or flatpak, and being able to remove many of the -distro-specific hacks needed to make things run on various systems. Nix -flakes address this same issue, by allowing upstream to control their own -flake.nix, and pull in the specific versions of any dependencies they -might need. They also give an easy way to install any programs that -might not be packaged yet for nixpkgs, as long as anyone has written a -flake and published it online.

- -

The bad parts

- -

Nix flakes are still rough around the edges, and the worst part for -a new Nix user is the lack of documentation. This is a large part of why -I'm writing yet another nix flakes tutorial! -https://xeiaso.net/blog/nix-flakes-1-2022-02-21 -is really good, but reading this as a new user, I only wanted to know -how to install an app packaged with flakes, and I didn't care so much -about how to package my own stuff yet.

diff --git a/templates/index.html.template b/templates/index.html.template index 4737e3d..9591293 100644 --- a/templates/index.html.template +++ b/templates/index.html.template @@ -1,19 +1,13 @@ {{define "title"}}roseh.moe{{end}} -
+

roseh.moe

- A dragon loli + A dragon loli

Games? (Warning: loud)

- -{{range .}} -
-

{{.Name}}

-
-{{end}} diff --git a/templates/outline.html.template b/templates/outline.html.template index 9dd6730..1dbc621 100644 --- a/templates/outline.html.template +++ b/templates/outline.html.template @@ -2,7 +2,7 @@ {{template "title" .}} - + diff --git a/templates/pong.html.template b/templates/pong.html.template index 141a685..777e0d0 100644 --- a/templates/pong.html.template +++ b/templates/pong.html.template @@ -2,7 +2,7 @@ Pong - + -- cgit v1.3.1