From 3d83e85919341732f0bf658379dca0b9f907646b Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sun, 14 Jan 2024 20:45:54 -0600 Subject: [PATCH 01/69] new post: securing-web-servers-cloudflare-tunnel --- .../access-challenge.png | Bin 0 -> 48897 bytes .../connector-online.png | Bin 0 -> 30623 bytes .../create-policy.png | Bin 0 -> 120101 bytes .../define-application.png | Bin 0 -> 87782 bytes .../index.md | 182 ++++++++++++++++++ .../install-connector.png | Bin 0 -> 132406 bytes .../speedtest-cloudflared.png | Bin 0 -> 97512 bytes .../speedtest-funnel.png | Bin 0 -> 98678 bytes .../speedtest-tailnet.png | Bin 0 -> 101190 bytes .../tunnel-configuration.png | Bin 0 -> 125730 bytes 10 files changed, 182 insertions(+) create mode 100644 content/posts/securing-web-servers-cloudflare-tunnel/access-challenge.png create mode 100644 content/posts/securing-web-servers-cloudflare-tunnel/connector-online.png create mode 100644 content/posts/securing-web-servers-cloudflare-tunnel/create-policy.png create mode 100644 content/posts/securing-web-servers-cloudflare-tunnel/define-application.png create mode 100644 content/posts/securing-web-servers-cloudflare-tunnel/index.md create mode 100644 content/posts/securing-web-servers-cloudflare-tunnel/install-connector.png create mode 100644 content/posts/securing-web-servers-cloudflare-tunnel/speedtest-cloudflared.png create mode 100644 content/posts/securing-web-servers-cloudflare-tunnel/speedtest-funnel.png create mode 100644 content/posts/securing-web-servers-cloudflare-tunnel/speedtest-tailnet.png create mode 100644 content/posts/securing-web-servers-cloudflare-tunnel/tunnel-configuration.png diff --git a/content/posts/securing-web-servers-cloudflare-tunnel/access-challenge.png b/content/posts/securing-web-servers-cloudflare-tunnel/access-challenge.png new file mode 100644 index 0000000000000000000000000000000000000000..a0b58f61f93ceaab3cb023d6792187a83762189c GIT binary patch literal 48897 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 literal 0 HcmV?d00001 diff --git a/content/posts/securing-web-servers-cloudflare-tunnel/connector-online.png b/content/posts/securing-web-servers-cloudflare-tunnel/connector-online.png new file mode 100644 index 0000000000000000000000000000000000000000..e8141dabc7ed709282e48094ec0e618ac889ffab GIT binary patch literal 30623 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

Fp|!2>hLxf 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 an91VePTr{LBmE8kojP{D;EB_xRl80>o literal 0 HcmV?d00001 diff --git a/content/posts/securing-web-servers-cloudflare-tunnel/define-application.png b/content/posts/securing-web-servers-cloudflare-tunnel/define-application.png new file mode 100644 index 0000000000000000000000000000000000000000..a648483bbf0c0b11ffc46b2cace6b3219b9ad4d9 GIT binary patch literal 87782 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 =cV9NQ39cmP+aEeQ91V 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 Tunnels** and click on **+ Create a tunnel**. I'll give it an appropriate name like `speedtest` and then click **Save tunnel**. + +Now Cloudflare helpfully provides installation instructions for a variety of different platforms. I'm doing that Docker thing so I'll click the appropriate button and review that command snippet: +![Tunnel installation instructions](install-connector.png) + +I can easily adapt that and add it to my Docker Compose setup[^network-mode]: +```yaml +# torchlight! {"lineNumbers":true} +# docker-compose.yml +services: + speedtest: + image: openspeedtest/latest + container_name: speedtest + restart: unless-stopped + network_mode: service:tailscale + tailscale: # [tl! collapse:start] + image: ghcr.io/jbowdre/tailscale-docker:latest + container_name: speedtest-tailscaled + restart: unless-stopped + environment: + TS_AUTHKEY: ${TS_AUTHKEY:?err} + TS_HOSTNAME: ${TS_HOSTNAME:-tailscale} + TS_STATE_DIR: "/var/lib/tailscale/" + TS_EXTRA_ARGS: ${TS_EXTRA_ARGS:-} + TS_SERVE_PORT: ${TS_SERVE_PORT:-} + TS_FUNNEL: ${TS_FUNNEL:-} # [tl! collapse:end] + cloudflared: # [tl! ++:start focus:start] + image: cloudflare/cloudflared + container_name: speedtest-cloudflared + restart: unless-stopped + command: + - tunnel + - --no-autoupdate + - run + - --token + - ${CLOUDFLARED_TOKEN} + network_mode: service:tailscale # [tl! ++:end focus:end] +``` + +[^network-mode]: Setting the `network_mode` isn't strictly necessary for the `cloudflared` container since Cloudflare Tunnel *does* support proxying remote hosts, but I'll just stick with it here for consistency. + +After dropping the value for `CLOUDFLARED_TOKEN` into my `.env` file, I can do another `docker compose up -d` to bring this online - and that status will be reflected back on the config page as well: +![Connector is alive!](connector-online.png) + +I'll click **Next** and proceed with the rest of the configuration, which consists of picking a public hostname for the frontend and defining the private service for the backend: +![Tunnel configuration](tunnel-configuration.png) + +I can click **Save tunnel** and... that's it. My tunnel is live, and I can now reach my speedtest at `https://speedtest.runtimeterror.dev`. Let's see how it does: +![Cloudflare Tunnel speedtest](speedtest-cloudflared.png) + +So that's *much* faster than Tailscale Funnel, and even faster than a direct transfer within the Tailnet. Cloudflare Tunnel should work quite nicely for sharing photos publicly from my Immich instance. + +#### Bonus: Access Control +But what if I don't want *just anyone* to be able to use my new speedtest (or access my Immich instance)? Defining an application in Cloudflare One will let me set some limits. + +So I'll go to **Access -> Applications** and select that I'm adding a **Self-hosted** application. I can then do the basic configuration, basically just telling Cloudflare that I'd like to protect the `https://speedtest.runtimeterror.dev` app: +![Defining the application](define-application.png) + +I can leave the rest of that page with the default selections so I'll scroll down and click **Next**. + +Now I need to create a policy to apply to this application. I'm going to be simple and just say that anyone with an `@runtimeterror.dev` email address should be able to use my speedtest: +![Creating a policy](create-policy.png) + +Without any external identity providers connected, Cloudflare will default to requiring authentication via a one-time PIN sent to an input email address. That's pretty easy, and it pairs well with allowing access based on email address attributes. There are a bunch of other options I could configure if I wanted... but my needs are simple so I'll just click through and save this new application config. + +Now, if I try to visit my speedtest with a new session I'll get automatically routed to the Cloudflare Access challenge which will prompt for my email address. +![Access challenge](access-challenge.png) + +If my email is on the approved list (that is, if it ends with `@runtimeterror.dev`), I'll get emailed a code which I can then use to log in and access the speedtest. If not, I won't get in. And since this thing is served through a Cloudflare Tunnel (rather than a public IP address merely advertised via DNS) there isn't any way to bypass Cloudflare's authentication challenge. + +### Conclusion +This has been a quick demo of how easy it is to configure a Cloudflare Tunnel to securely publish resources on the web. I really like being able to share a service publicly without having to manage DNS, port-forwarding, or firewall configurations, and the ability to offload authentication and authorization to Cloudflare is a big plus. I still don't think Tailscale can be beat for sharing stuff internally, but I think Cloudflare Tunnels make more sense for long-term public sharing. And it's awesome that I can run both solutions side-by-side to really get the best of both when I need it. \ No newline at end of file diff --git a/content/posts/securing-web-servers-cloudflare-tunnel/install-connector.png b/content/posts/securing-web-servers-cloudflare-tunnel/install-connector.png new file mode 100644 index 0000000000000000000000000000000000000000..9cc27f8348bbb2973250f00561f24bf7950b148d GIT binary patch literal 132406 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 literal 0 HcmV?d00001 diff --git a/content/posts/securing-web-servers-cloudflare-tunnel/speedtest-cloudflared.png b/content/posts/securing-web-servers-cloudflare-tunnel/speedtest-cloudflared.png new file mode 100644 index 0000000000000000000000000000000000000000..0e96b371ab35409d4044dc4fcb0a759e4337fd28 GIT binary patch literal 97512 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

    t=wO#Lbp`eg2ClFH->UzD_s?*R7@M1`F%Vj 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 NDKmeJHdyfM{{sFGBuW4P literal 0 HcmV?d00001 From 483e7a7803ea91d608f855a7b60389f6c22b496d Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sun, 14 Jan 2024 21:20:45 -0600 Subject: [PATCH 02/69] make --off-fg a little lighter to improve code/pre contrast --- static/css/palettes/runtimeterror.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/css/palettes/runtimeterror.css b/static/css/palettes/runtimeterror.css index 91bc2b8..18f1f1f 100644 --- a/static/css/palettes/runtimeterror.css +++ b/static/css/palettes/runtimeterror.css @@ -6,7 +6,7 @@ --base01: #282828; /* off-bg */ --base02: #383838; /* inner-bg */ --base03: #585858; /* muted */ - --base04: #abaaaa; /* off-fg */ + --base04: #cfcfcf; /* off-fg */ --base05: #d8d8d8; /* fg */ --base06: #e8e8e8; --base07: #5f8700; /* user prompt */ From 7f639cdbe294805d1165ec3615a635ea8a89a509 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sun, 14 Jan 2024 21:22:24 -0600 Subject: [PATCH 03/69] rename and future-date post --- .../access-challenge.png | Bin .../connector-online.png | Bin .../create-policy.png | Bin .../define-application.png | Bin .../index.md | 4 ++-- .../install-connector.png | Bin .../speedtest-cloudflared.png | Bin .../speedtest-funnel.png | Bin .../speedtest-tailnet.png | Bin .../tunnel-configuration.png | Bin 10 files changed, 2 insertions(+), 2 deletions(-) rename content/posts/{securing-web-servers-cloudflare-tunnel => publish-services-cloudflare-tunnel}/access-challenge.png (100%) rename content/posts/{securing-web-servers-cloudflare-tunnel => publish-services-cloudflare-tunnel}/connector-online.png (100%) rename content/posts/{securing-web-servers-cloudflare-tunnel => publish-services-cloudflare-tunnel}/create-policy.png (100%) rename content/posts/{securing-web-servers-cloudflare-tunnel => publish-services-cloudflare-tunnel}/define-application.png (100%) rename content/posts/{securing-web-servers-cloudflare-tunnel => publish-services-cloudflare-tunnel}/index.md (99%) rename content/posts/{securing-web-servers-cloudflare-tunnel => publish-services-cloudflare-tunnel}/install-connector.png (100%) rename content/posts/{securing-web-servers-cloudflare-tunnel => publish-services-cloudflare-tunnel}/speedtest-cloudflared.png (100%) rename content/posts/{securing-web-servers-cloudflare-tunnel => publish-services-cloudflare-tunnel}/speedtest-funnel.png (100%) rename content/posts/{securing-web-servers-cloudflare-tunnel => publish-services-cloudflare-tunnel}/speedtest-tailnet.png (100%) rename content/posts/{securing-web-servers-cloudflare-tunnel => publish-services-cloudflare-tunnel}/tunnel-configuration.png (100%) diff --git a/content/posts/securing-web-servers-cloudflare-tunnel/access-challenge.png b/content/posts/publish-services-cloudflare-tunnel/access-challenge.png similarity index 100% rename from content/posts/securing-web-servers-cloudflare-tunnel/access-challenge.png rename to content/posts/publish-services-cloudflare-tunnel/access-challenge.png diff --git a/content/posts/securing-web-servers-cloudflare-tunnel/connector-online.png b/content/posts/publish-services-cloudflare-tunnel/connector-online.png similarity index 100% rename from content/posts/securing-web-servers-cloudflare-tunnel/connector-online.png rename to content/posts/publish-services-cloudflare-tunnel/connector-online.png diff --git a/content/posts/securing-web-servers-cloudflare-tunnel/create-policy.png b/content/posts/publish-services-cloudflare-tunnel/create-policy.png similarity index 100% rename from content/posts/securing-web-servers-cloudflare-tunnel/create-policy.png rename to content/posts/publish-services-cloudflare-tunnel/create-policy.png diff --git a/content/posts/securing-web-servers-cloudflare-tunnel/define-application.png b/content/posts/publish-services-cloudflare-tunnel/define-application.png similarity index 100% rename from content/posts/securing-web-servers-cloudflare-tunnel/define-application.png rename to content/posts/publish-services-cloudflare-tunnel/define-application.png diff --git a/content/posts/securing-web-servers-cloudflare-tunnel/index.md b/content/posts/publish-services-cloudflare-tunnel/index.md similarity index 99% rename from content/posts/securing-web-servers-cloudflare-tunnel/index.md rename to content/posts/publish-services-cloudflare-tunnel/index.md index 82c814c..827998d 100644 --- a/content/posts/securing-web-servers-cloudflare-tunnel/index.md +++ b/content/posts/publish-services-cloudflare-tunnel/index.md @@ -1,6 +1,6 @@ --- -title: "Securing Web Servers with Cloudflare Tunnel" -date: 2024-01-14 +title: "Publish Services with Cloudflare Tunnel" +date: 2024-01-15 # lastmod: 2024-01-13 description: "Exploring Cloudflare Tunnel as an alternative to Tailscale Funnel for secure public access to internal resources." featured: false diff --git a/content/posts/securing-web-servers-cloudflare-tunnel/install-connector.png b/content/posts/publish-services-cloudflare-tunnel/install-connector.png similarity index 100% rename from content/posts/securing-web-servers-cloudflare-tunnel/install-connector.png rename to content/posts/publish-services-cloudflare-tunnel/install-connector.png diff --git a/content/posts/securing-web-servers-cloudflare-tunnel/speedtest-cloudflared.png b/content/posts/publish-services-cloudflare-tunnel/speedtest-cloudflared.png similarity index 100% rename from content/posts/securing-web-servers-cloudflare-tunnel/speedtest-cloudflared.png rename to content/posts/publish-services-cloudflare-tunnel/speedtest-cloudflared.png diff --git a/content/posts/securing-web-servers-cloudflare-tunnel/speedtest-funnel.png b/content/posts/publish-services-cloudflare-tunnel/speedtest-funnel.png similarity index 100% rename from content/posts/securing-web-servers-cloudflare-tunnel/speedtest-funnel.png rename to content/posts/publish-services-cloudflare-tunnel/speedtest-funnel.png diff --git a/content/posts/securing-web-servers-cloudflare-tunnel/speedtest-tailnet.png b/content/posts/publish-services-cloudflare-tunnel/speedtest-tailnet.png similarity index 100% rename from content/posts/securing-web-servers-cloudflare-tunnel/speedtest-tailnet.png rename to content/posts/publish-services-cloudflare-tunnel/speedtest-tailnet.png diff --git a/content/posts/securing-web-servers-cloudflare-tunnel/tunnel-configuration.png b/content/posts/publish-services-cloudflare-tunnel/tunnel-configuration.png similarity index 100% rename from content/posts/securing-web-servers-cloudflare-tunnel/tunnel-configuration.png rename to content/posts/publish-services-cloudflare-tunnel/tunnel-configuration.png From 15cb3e0a820727e5f77f8bec9327ae51380970f9 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 15 Jan 2024 12:42:20 -0600 Subject: [PATCH 04/69] rss: use full text instead of summary --- layouts/_default/rss.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/_default/rss.xml b/layouts/_default/rss.xml index 6a7f770..5c2d88e 100644 --- a/layouts/_default/rss.xml +++ b/layouts/_default/rss.xml @@ -40,7 +40,7 @@ {{ range (.GetTerms "tags") }} {{ .LinkTitle }}{{ end }} {{ .Permalink }} - {{ .Summary | plainify }} + {{- .Content | html -}} {{ end }} From ccf395c95b5cf0ce51b30b4d10055675829a147e Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 15 Jan 2024 12:51:22 -0600 Subject: [PATCH 05/69] rss: highlight xml --- torchlight.config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/torchlight.config.js b/torchlight.config.js index 81c3bea..35265ff 100644 --- a/torchlight.config.js +++ b/torchlight.config.js @@ -50,7 +50,8 @@ module.exports = { // Globs to include when looking for files to highlight. includeGlobs: [ '**/*.htm', - '**/*.html' + '**/*.html', + '**/feed.xml' ], // String patterns to ignore (not globs). The entire file From 71b61c700db3d8594eafbaa33794fcee0f2b6ca0 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 15 Jan 2024 12:57:07 -0600 Subject: [PATCH 06/69] Revert "rss: highlight xml" This reverts commit ccf395c95b5cf0ce51b30b4d10055675829a147e. --- torchlight.config.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/torchlight.config.js b/torchlight.config.js index 35265ff..81c3bea 100644 --- a/torchlight.config.js +++ b/torchlight.config.js @@ -50,8 +50,7 @@ module.exports = { // Globs to include when looking for files to highlight. includeGlobs: [ '**/*.htm', - '**/*.html', - '**/feed.xml' + '**/*.html' ], // String patterns to ignore (not globs). The entire file From de7579064727e30c6e12197dae9fff2aef1a46d1 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 15 Jan 2024 13:09:20 -0600 Subject: [PATCH 07/69] rss: encode content in description --- layouts/_default/rss.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/layouts/_default/rss.xml b/layouts/_default/rss.xml index 5c2d88e..8420e36 100644 --- a/layouts/_default/rss.xml +++ b/layouts/_default/rss.xml @@ -13,6 +13,7 @@ {{- printf "" | safeHTML }} {{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }} @@ -40,7 +41,8 @@ {{ range (.GetTerms "tags") }} {{ .LinkTitle }}{{ end }} {{ .Permalink }} - {{- .Content | html -}} + {{ " + {{ " {{ end }} From c8f4a80c27528ba7e277d37aad890781f02d1c59 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 15 Jan 2024 13:23:34 -0600 Subject: [PATCH 08/69] rss: fix image embeds --- layouts/_default/rss.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/_default/rss.xml b/layouts/_default/rss.xml index 8420e36..e44d174 100644 --- a/layouts/_default/rss.xml +++ b/layouts/_default/rss.xml @@ -42,7 +42,7 @@ {{ .LinkTitle }}{{ end }} {{ .Permalink }} {{ " - {{ " + {{ " {{ end }} From d86964f33fce2b839c4fd38e24a351cf5518044f Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 15 Jan 2024 13:39:27 -0600 Subject: [PATCH 09/69] rss: alternate approach to image embeds --- layouts/_default/rss.xml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/layouts/_default/rss.xml b/layouts/_default/rss.xml index e44d174..e1f9961 100644 --- a/layouts/_default/rss.xml +++ b/layouts/_default/rss.xml @@ -10,7 +10,7 @@ {{- if ge $limit 1 -}} {{- $pages = $pages | first $limit -}} {{- end -}} -{{- printf "" | safeHTML }} + {{ .LinkTitle }}{{ end }} {{ .Permalink }} - {{ " - {{ " + {{- $content := replaceRE "a href=\"(#.*?)\"" (printf "%s%s%s" "a href=\"" .Permalink "$1\"") .Content -}} + {{- $content = replaceRE "img src=\"(.*?)\"" (printf "%s%s%s" "img src=\"" .Permalink "$1\"") $content -}} + {{ $content | html }} {{ end }} From 41843eba32801f4ff501b6a63adbc92037f03539 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 15 Jan 2024 13:53:52 -0600 Subject: [PATCH 10/69] rss: don't minify whitespace in xml --- config/_default/hugo.toml | 27 +++++++++++++++++++++++++++ layouts/_default/rss.xml | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/config/_default/hugo.toml b/config/_default/hugo.toml index c6155e5..ef02686 100644 --- a/config/_default/hugo.toml +++ b/config/_default/hugo.toml @@ -60,3 +60,30 @@ enableInlineShortcodes = true tag = "tags" series = "series" +# Copied from https://gohugo.io/getting-started/configuration/#configure-minify +# Only change made is xml keepWhitespace = true +[minify] + disableCSS = false + disableHTML = false + disableJS = false + disableJSON = false + disableSVG = false + disableXML = false + minifyOutput = false + [minify.tdewolff] + [minify.tdewolff.css] + decimals = -1 + keepCSS2 = true + [minify.tdewolff.html] + keepConditionalComments = true + keepDefaultAttrVals = true + keepDocumentTags = true + keepEndTags = true + keepQuotes = false + keepWhitespace = false + [minify.tdewolff.js] + [minify.tdewolff.json] + [minify.tdewolff.svg] + decimals = -1 + [minify.tdewolff.xml] + keepWhitespace = true \ No newline at end of file diff --git a/layouts/_default/rss.xml b/layouts/_default/rss.xml index e1f9961..198a490 100644 --- a/layouts/_default/rss.xml +++ b/layouts/_default/rss.xml @@ -10,7 +10,7 @@ {{- if ge $limit 1 -}} {{- $pages = $pages | first $limit -}} {{- end -}} - +{{- printf "" | safeHTML }} Date: Mon, 15 Jan 2024 13:59:40 -0600 Subject: [PATCH 11/69] Revert "rss: don't minify whitespace in xml" This reverts commit 41843eba32801f4ff501b6a63adbc92037f03539. --- config/_default/hugo.toml | 27 --------------------------- layouts/_default/rss.xml | 2 +- 2 files changed, 1 insertion(+), 28 deletions(-) diff --git a/config/_default/hugo.toml b/config/_default/hugo.toml index ef02686..c6155e5 100644 --- a/config/_default/hugo.toml +++ b/config/_default/hugo.toml @@ -60,30 +60,3 @@ enableInlineShortcodes = true tag = "tags" series = "series" -# Copied from https://gohugo.io/getting-started/configuration/#configure-minify -# Only change made is xml keepWhitespace = true -[minify] - disableCSS = false - disableHTML = false - disableJS = false - disableJSON = false - disableSVG = false - disableXML = false - minifyOutput = false - [minify.tdewolff] - [minify.tdewolff.css] - decimals = -1 - keepCSS2 = true - [minify.tdewolff.html] - keepConditionalComments = true - keepDefaultAttrVals = true - keepDocumentTags = true - keepEndTags = true - keepQuotes = false - keepWhitespace = false - [minify.tdewolff.js] - [minify.tdewolff.json] - [minify.tdewolff.svg] - decimals = -1 - [minify.tdewolff.xml] - keepWhitespace = true \ No newline at end of file diff --git a/layouts/_default/rss.xml b/layouts/_default/rss.xml index 198a490..e1f9961 100644 --- a/layouts/_default/rss.xml +++ b/layouts/_default/rss.xml @@ -10,7 +10,7 @@ {{- if ge $limit 1 -}} {{- $pages = $pages | first $limit -}} {{- end -}} -{{- printf "" | safeHTML }} + Date: Mon, 15 Jan 2024 14:00:28 -0600 Subject: [PATCH 12/69] enable minify in config, don't minify xml --- build.sh | 2 +- config/_default/hugo.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/build.sh b/build.sh index 3d63676..78499bd 100755 --- a/build.sh +++ b/build.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Quick script to run local builds source .env -hugo --minify --environment local -D +hugo --environment local -D npx torchlight python3 -m http.server --directory public 1313 diff --git a/config/_default/hugo.toml b/config/_default/hugo.toml index c6155e5..7d181e6 100644 --- a/config/_default/hugo.toml +++ b/config/_default/hugo.toml @@ -60,3 +60,6 @@ enableInlineShortcodes = true tag = "tags" series = "series" +[minify] + disableXML = true + minifyOutput = true \ No newline at end of file From f51fc36b6dbee2f4237b439b4122089289dffb2a Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 15 Jan 2024 14:04:59 -0600 Subject: [PATCH 13/69] remove minify from netlify config --- netlify.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/netlify.toml b/netlify.toml index 601059d..d62d2ed 100644 --- a/netlify.toml +++ b/netlify.toml @@ -6,14 +6,14 @@ [context.production] command = """ - hugo --minify + hugo npm i @torchlight-api/torchlight-cli npx torchlight """ [context.preview] command = """ - hugo --minify --environment preview + hugo --environment preview npm i @torchlight-api/torchlight-cli npx torchlight """ @@ -24,7 +24,7 @@ [context.drafts] command = """ - hugo --minify --environment drafts -D + hugo --environment drafts -D npm i @torchlight-api/torchlight-cli npx torchlight """ From f8ba3f7cf275f2606d8439f41b3352a7403a1854 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 15 Jan 2024 14:10:19 -0600 Subject: [PATCH 14/69] fix broken link in post --- .../index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/posts/automating-camera-notifications-home-assistant-ntfy/index.md b/content/posts/automating-camera-notifications-home-assistant-ntfy/index.md index 33c72e1..712b7ac 100644 --- a/content/posts/automating-camera-notifications-home-assistant-ntfy/index.md +++ b/content/posts/automating-camera-notifications-home-assistant-ntfy/index.md @@ -1,7 +1,7 @@ --- title: "Automating Security Camera Notifications With Home Assistant and Ntfy" date: 2023-11-25 -lastmod: 2023-11-27 +lastmod: 2024-01-15 description: "Using the power of Home Assistant automations and Ntfy push notifications to level-up security camera motion detections." featured: true alias: automating-security-camera-notifications-with-home-assistant-and-ntfy @@ -25,7 +25,7 @@ I figured I could combine the excellent [Reolink integration for Home Assistant] ### Alert on motion detection {{% notice note "Ntfy Integration" %}} -Since manually configuring ntfy in Home Assistant via the [RESTful Notifications integration](easy-push-notifications-with-ntfy/#notify-configuration), I found that a [ntfy-specific integration](https://github.com/ivanmihov/homeassistant-ntfy.sh) was available through the [Home Assistant Community Store](https://hacs.xyz/) addon. That setup is a bit more flexible so I've switched my setup to use it instead: +Since manually configuring ntfy in Home Assistant via the [RESTful Notifications integration](/easy-push-notifications-with-ntfy#notify-configuration), I found that a [ntfy-specific integration](https://github.com/ivanmihov/homeassistant-ntfy.sh) was available through the [Home Assistant Community Store](https://hacs.xyz/) addon. That setup is a bit more flexible so I've switched my setup to use it instead: ```yaml # configuration.yaml notify: From 4286612406be3fdd30cc228c738c7f43d9bb0cb7 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 15 Jan 2024 14:33:26 -0600 Subject: [PATCH 15/69] rss: strip ... elements --- layouts/_default/rss.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/layouts/_default/rss.xml b/layouts/_default/rss.xml index e1f9961..e1a96ba 100644 --- a/layouts/_default/rss.xml +++ b/layouts/_default/rss.xml @@ -43,6 +43,7 @@ {{ .Permalink }} {{- $content := replaceRE "a href=\"(#.*?)\"" (printf "%s%s%s" "a href=\"" .Permalink "$1\"") .Content -}} {{- $content = replaceRE "img src=\"(.*?)\"" (printf "%s%s%s" "img src=\"" .Permalink "$1\"") $content -}} + {{- $content = replaceRE "" "" $content -}} {{ $content | html }} {{ end }} From c74cc3ad37a2e334d3433a02679ebbf6e02cb4f8 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 15 Jan 2024 14:53:35 -0600 Subject: [PATCH 16/69] rss: strip potentially-unsafe style elements --- layouts/_default/rss.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/layouts/_default/rss.xml b/layouts/_default/rss.xml index e1a96ba..b255c9f 100644 --- a/layouts/_default/rss.xml +++ b/layouts/_default/rss.xml @@ -44,6 +44,7 @@ {{- $content := replaceRE "a href=\"(#.*?)\"" (printf "%s%s%s" "a href=\"" .Permalink "$1\"") .Content -}} {{- $content = replaceRE "img src=\"(.*?)\"" (printf "%s%s%s" "img src=\"" .Permalink "$1\"") $content -}} {{- $content = replaceRE "" "" $content -}} + {{- $content = replaceRE `-moz-tab-size:\d;-o-tab-size:\d;tab-size:\d` "" $content -}} {{ $content | html }} {{ end }} From ad1848ef3c9b5aecc5d401be8734380355104327 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 15 Jan 2024 14:57:42 -0600 Subject: [PATCH 17/69] rss: strip potentially-unsafe style elements (improve regex) --- layouts/_default/rss.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/_default/rss.xml b/layouts/_default/rss.xml index b255c9f..373a6b8 100644 --- a/layouts/_default/rss.xml +++ b/layouts/_default/rss.xml @@ -44,7 +44,7 @@ {{- $content := replaceRE "a href=\"(#.*?)\"" (printf "%s%s%s" "a href=\"" .Permalink "$1\"") .Content -}} {{- $content = replaceRE "img src=\"(.*?)\"" (printf "%s%s%s" "img src=\"" .Permalink "$1\"") $content -}} {{- $content = replaceRE "" "" $content -}} - {{- $content = replaceRE `-moz-tab-size:\d;-o-tab-size:\d;tab-size:\d` "" $content -}} + {{- $content = replaceRE `-moz-tab-size:\d;-o-tab-size:\d;tab-size:\d;?` "" $content -}} {{ $content | html }} {{ end }} From 335a0ab2cd45cbee2efd67c0c1ac3312a300f4aa Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 15 Jan 2024 15:06:39 -0600 Subject: [PATCH 18/69] Revert "make --off-fg a little lighter to improve code/pre contrast" This made non-code elements a bit too bright. Need to address code elements more directly. This reverts commit 483e7a7803ea91d608f855a7b60389f6c22b496d. --- static/css/palettes/runtimeterror.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/css/palettes/runtimeterror.css b/static/css/palettes/runtimeterror.css index 18f1f1f..91bc2b8 100644 --- a/static/css/palettes/runtimeterror.css +++ b/static/css/palettes/runtimeterror.css @@ -6,7 +6,7 @@ --base01: #282828; /* off-bg */ --base02: #383838; /* inner-bg */ --base03: #585858; /* muted */ - --base04: #cfcfcf; /* off-fg */ + --base04: #abaaaa; /* off-fg */ --base05: #d8d8d8; /* fg */ --base06: #e8e8e8; --base07: #5f8700; /* user prompt */ From 7c0b287ceecfeb9d84f34d05de29d114f197cf3d Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 15 Jan 2024 15:14:08 -0600 Subject: [PATCH 19/69] css: define new slightly-lighter color for code/pre elements --- static/css/custom.css | 13 +++++++++++++ static/css/palettes/runtimeterror.css | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/static/css/custom.css b/static/css/custom.css index 729876c..dcc3109 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -1,3 +1,8 @@ +/* color overrides */ +:root { + --code: var(--base06); +} + /* override page max-width */ .page { max-width: 72rem; @@ -203,4 +208,12 @@ ul.pagination li { small[style^="opacity: .5"] { opacity: 1 !important; +} + +/* code overrides */ +pre, +code, +kbd, +samp { + color: var(--code); } \ No newline at end of file diff --git a/static/css/palettes/runtimeterror.css b/static/css/palettes/runtimeterror.css index 91bc2b8..3838a79 100644 --- a/static/css/palettes/runtimeterror.css +++ b/static/css/palettes/runtimeterror.css @@ -8,7 +8,7 @@ --base03: #585858; /* muted */ --base04: #abaaaa; /* off-fg */ --base05: #d8d8d8; /* fg */ - --base06: #e8e8e8; + --base06: #cfcfcf; /* code */ --base07: #5f8700; /* user prompt */ --base08: #ab4642; /* root prompt */ --base09: #dc9656; From 4fb8039ba041859b8fe3969a00d87c649e8de3bd Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 15 Jan 2024 16:02:30 -0600 Subject: [PATCH 20/69] initial work on search with lunr.js --- assets/js/lunr.js | 3475 ++++++++++++++++++++++++++++ assets/js/search.js | 41 + content/search/_index.md | 3 + layouts/partials/about.html | 1 + layouts/partials/footer.html | 1 + layouts/partials/search-form.html | 7 + layouts/partials/search-index.html | 16 + layouts/search/list.html | 9 + 8 files changed, 3553 insertions(+) create mode 100644 assets/js/lunr.js create mode 100644 assets/js/search.js create mode 100644 content/search/_index.md create mode 100644 layouts/partials/search-form.html create mode 100644 layouts/partials/search-index.html create mode 100644 layouts/search/list.html diff --git a/assets/js/lunr.js b/assets/js/lunr.js new file mode 100644 index 0000000..7118d74 --- /dev/null +++ b/assets/js/lunr.js @@ -0,0 +1,3475 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + */ + +;(function(){ + + /** + * A convenience function for configuring and constructing + * a new lunr Index. + * + * A lunr.Builder instance is created and the pipeline setup + * with a trimmer, stop word filter and stemmer. + * + * This builder object is yielded to the configuration function + * that is passed as a parameter, allowing the list of fields + * and other builder parameters to be customised. + * + * All documents _must_ be added within the passed config function. + * + * @example + * var idx = lunr(function () { + * this.field('title') + * this.field('body') + * this.ref('id') + * + * documents.forEach(function (doc) { + * this.add(doc) + * }, this) + * }) + * + * @see {@link lunr.Builder} + * @see {@link lunr.Pipeline} + * @see {@link lunr.trimmer} + * @see {@link lunr.stopWordFilter} + * @see {@link lunr.stemmer} + * @namespace {function} lunr + */ + var lunr = function (config) { + var builder = new lunr.Builder + + builder.pipeline.add( + lunr.trimmer, + lunr.stopWordFilter, + lunr.stemmer + ) + + builder.searchPipeline.add( + lunr.stemmer + ) + + config.call(builder, builder) + return builder.build() + } + + lunr.version = "2.3.9" + /*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + */ + + /** + * A namespace containing utils for the rest of the lunr library + * @namespace lunr.utils + */ + lunr.utils = {} + + /** + * Print a warning message to the console. + * + * @param {String} message The message to be printed. + * @memberOf lunr.utils + * @function + */ + lunr.utils.warn = (function (global) { + /* eslint-disable no-console */ + return function (message) { + if (global.console && console.warn) { + console.warn(message) + } + } + /* eslint-enable no-console */ + })(this) + + /** + * Convert an object to a string. + * + * In the case of `null` and `undefined` the function returns + * the empty string, in all other cases the result of calling + * `toString` on the passed object is returned. + * + * @param {Any} obj The object to convert to a string. + * @return {String} string representation of the passed object. + * @memberOf lunr.utils + */ + lunr.utils.asString = function (obj) { + if (obj === void 0 || obj === null) { + return "" + } else { + return obj.toString() + } + } + + /** + * Clones an object. + * + * Will create a copy of an existing object such that any mutations + * on the copy cannot affect the original. + * + * Only shallow objects are supported, passing a nested object to this + * function will cause a TypeError. + * + * Objects with primitives, and arrays of primitives are supported. + * + * @param {Object} obj The object to clone. + * @return {Object} a clone of the passed object. + * @throws {TypeError} when a nested object is passed. + * @memberOf Utils + */ + lunr.utils.clone = function (obj) { + if (obj === null || obj === undefined) { + return obj + } + + var clone = Object.create(null), + keys = Object.keys(obj) + + for (var i = 0; i < keys.length; i++) { + var key = keys[i], + val = obj[key] + + if (Array.isArray(val)) { + clone[key] = val.slice() + continue + } + + if (typeof val === 'string' || + typeof val === 'number' || + typeof val === 'boolean') { + clone[key] = val + continue + } + + throw new TypeError("clone is not deep and does not support nested objects") + } + + return clone + } + lunr.FieldRef = function (docRef, fieldName, stringValue) { + this.docRef = docRef + this.fieldName = fieldName + this._stringValue = stringValue + } + + lunr.FieldRef.joiner = "/" + + lunr.FieldRef.fromString = function (s) { + var n = s.indexOf(lunr.FieldRef.joiner) + + if (n === -1) { + throw "malformed field ref string" + } + + var fieldRef = s.slice(0, n), + docRef = s.slice(n + 1) + + return new lunr.FieldRef (docRef, fieldRef, s) + } + + lunr.FieldRef.prototype.toString = function () { + if (this._stringValue == undefined) { + this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef + } + + return this._stringValue + } + /*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + */ + + /** + * A lunr set. + * + * @constructor + */ + lunr.Set = function (elements) { + this.elements = Object.create(null) + + if (elements) { + this.length = elements.length + + for (var i = 0; i < this.length; i++) { + this.elements[elements[i]] = true + } + } else { + this.length = 0 + } + } + + /** + * A complete set that contains all elements. + * + * @static + * @readonly + * @type {lunr.Set} + */ + lunr.Set.complete = { + intersect: function (other) { + return other + }, + + union: function () { + return this + }, + + contains: function () { + return true + } + } + + /** + * An empty set that contains no elements. + * + * @static + * @readonly + * @type {lunr.Set} + */ + lunr.Set.empty = { + intersect: function () { + return this + }, + + union: function (other) { + return other + }, + + contains: function () { + return false + } + } + + /** + * Returns true if this set contains the specified object. + * + * @param {object} object - Object whose presence in this set is to be tested. + * @returns {boolean} - True if this set contains the specified object. + */ + lunr.Set.prototype.contains = function (object) { + return !!this.elements[object] + } + + /** + * Returns a new set containing only the elements that are present in both + * this set and the specified set. + * + * @param {lunr.Set} other - set to intersect with this set. + * @returns {lunr.Set} a new set that is the intersection of this and the specified set. + */ + + lunr.Set.prototype.intersect = function (other) { + var a, b, elements, intersection = [] + + if (other === lunr.Set.complete) { + return this + } + + if (other === lunr.Set.empty) { + return other + } + + if (this.length < other.length) { + a = this + b = other + } else { + a = other + b = this + } + + elements = Object.keys(a.elements) + + for (var i = 0; i < elements.length; i++) { + var element = elements[i] + if (element in b.elements) { + intersection.push(element) + } + } + + return new lunr.Set (intersection) + } + + /** + * Returns a new set combining the elements of this and the specified set. + * + * @param {lunr.Set} other - set to union with this set. + * @return {lunr.Set} a new set that is the union of this and the specified set. + */ + + lunr.Set.prototype.union = function (other) { + if (other === lunr.Set.complete) { + return lunr.Set.complete + } + + if (other === lunr.Set.empty) { + return this + } + + return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements))) + } + /** + * A function to calculate the inverse document frequency for + * a posting. This is shared between the builder and the index + * + * @private + * @param {object} posting - The posting for a given term + * @param {number} documentCount - The total number of documents. + */ + lunr.idf = function (posting, documentCount) { + var documentsWithTerm = 0 + + for (var fieldName in posting) { + if (fieldName == '_index') continue // Ignore the term index, its not a field + documentsWithTerm += Object.keys(posting[fieldName]).length + } + + var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5) + + return Math.log(1 + Math.abs(x)) + } + + /** + * A token wraps a string representation of a token + * as it is passed through the text processing pipeline. + * + * @constructor + * @param {string} [str=''] - The string token being wrapped. + * @param {object} [metadata={}] - Metadata associated with this token. + */ + lunr.Token = function (str, metadata) { + this.str = str || "" + this.metadata = metadata || {} + } + + /** + * Returns the token string that is being wrapped by this object. + * + * @returns {string} + */ + lunr.Token.prototype.toString = function () { + return this.str + } + + /** + * A token update function is used when updating or optionally + * when cloning a token. + * + * @callback lunr.Token~updateFunction + * @param {string} str - The string representation of the token. + * @param {Object} metadata - All metadata associated with this token. + */ + + /** + * Applies the given function to the wrapped string token. + * + * @example + * token.update(function (str, metadata) { + * return str.toUpperCase() + * }) + * + * @param {lunr.Token~updateFunction} fn - A function to apply to the token string. + * @returns {lunr.Token} + */ + lunr.Token.prototype.update = function (fn) { + this.str = fn(this.str, this.metadata) + return this + } + + /** + * Creates a clone of this token. Optionally a function can be + * applied to the cloned token. + * + * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token. + * @returns {lunr.Token} + */ + lunr.Token.prototype.clone = function (fn) { + fn = fn || function (s) { return s } + return new lunr.Token (fn(this.str, this.metadata), this.metadata) + } + /*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + */ + + /** + * A function for splitting a string into tokens ready to be inserted into + * the search index. Uses `lunr.tokenizer.separator` to split strings, change + * the value of this property to change how strings are split into tokens. + * + * This tokenizer will convert its parameter to a string by calling `toString` and + * then will split this string on the character in `lunr.tokenizer.separator`. + * Arrays will have their elements converted to strings and wrapped in a lunr.Token. + * + * Optional metadata can be passed to the tokenizer, this metadata will be cloned and + * added as metadata to every token that is created from the object to be tokenized. + * + * @static + * @param {?(string|object|object[])} obj - The object to convert into tokens + * @param {?object} metadata - Optional metadata to associate with every token + * @returns {lunr.Token[]} + * @see {@link lunr.Pipeline} + */ + lunr.tokenizer = function (obj, metadata) { + if (obj == null || obj == undefined) { + return [] + } + + if (Array.isArray(obj)) { + return obj.map(function (t) { + return new lunr.Token( + lunr.utils.asString(t).toLowerCase(), + lunr.utils.clone(metadata) + ) + }) + } + + var str = obj.toString().toLowerCase(), + len = str.length, + tokens = [] + + for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) { + var char = str.charAt(sliceEnd), + sliceLength = sliceEnd - sliceStart + + if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) { + + if (sliceLength > 0) { + var tokenMetadata = lunr.utils.clone(metadata) || {} + tokenMetadata["position"] = [sliceStart, sliceLength] + tokenMetadata["index"] = tokens.length + + tokens.push( + new lunr.Token ( + str.slice(sliceStart, sliceEnd), + tokenMetadata + ) + ) + } + + sliceStart = sliceEnd + 1 + } + + } + + return tokens + } + + /** + * The separator used to split a string into tokens. Override this property to change the behaviour of + * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens. + * + * @static + * @see lunr.tokenizer + */ + lunr.tokenizer.separator = /[\s\-]+/ + /*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + */ + + /** + * lunr.Pipelines maintain an ordered list of functions to be applied to all + * tokens in documents entering the search index and queries being ran against + * the index. + * + * An instance of lunr.Index created with the lunr shortcut will contain a + * pipeline with a stop word filter and an English language stemmer. Extra + * functions can be added before or after either of these functions or these + * default functions can be removed. + * + * When run the pipeline will call each function in turn, passing a token, the + * index of that token in the original list of all tokens and finally a list of + * all the original tokens. + * + * The output of functions in the pipeline will be passed to the next function + * in the pipeline. To exclude a token from entering the index the function + * should return undefined, the rest of the pipeline will not be called with + * this token. + * + * For serialisation of pipelines to work, all functions used in an instance of + * a pipeline should be registered with lunr.Pipeline. Registered functions can + * then be loaded. If trying to load a serialised pipeline that uses functions + * that are not registered an error will be thrown. + * + * If not planning on serialising the pipeline then registering pipeline functions + * is not necessary. + * + * @constructor + */ + lunr.Pipeline = function () { + this._stack = [] + } + + lunr.Pipeline.registeredFunctions = Object.create(null) + + /** + * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token + * string as well as all known metadata. A pipeline function can mutate the token string + * or mutate (or add) metadata for a given token. + * + * A pipeline function can indicate that the passed token should be discarded by returning + * null, undefined or an empty string. This token will not be passed to any downstream pipeline + * functions and will not be added to the index. + * + * Multiple tokens can be returned by returning an array of tokens. Each token will be passed + * to any downstream pipeline functions and all will returned tokens will be added to the index. + * + * Any number of pipeline functions may be chained together using a lunr.Pipeline. + * + * @interface lunr.PipelineFunction + * @param {lunr.Token} token - A token from the document being processed. + * @param {number} i - The index of this token in the complete list of tokens for this document/field. + * @param {lunr.Token[]} tokens - All tokens for this document/field. + * @returns {(?lunr.Token|lunr.Token[])} + */ + + /** + * Register a function with the pipeline. + * + * Functions that are used in the pipeline should be registered if the pipeline + * needs to be serialised, or a serialised pipeline needs to be loaded. + * + * Registering a function does not add it to a pipeline, functions must still be + * added to instances of the pipeline for them to be used when running a pipeline. + * + * @param {lunr.PipelineFunction} fn - The function to check for. + * @param {String} label - The label to register this function with + */ + lunr.Pipeline.registerFunction = function (fn, label) { + if (label in this.registeredFunctions) { + lunr.utils.warn('Overwriting existing registered function: ' + label) + } + + fn.label = label + lunr.Pipeline.registeredFunctions[fn.label] = fn + } + + /** + * Warns if the function is not registered as a Pipeline function. + * + * @param {lunr.PipelineFunction} fn - The function to check for. + * @private + */ + lunr.Pipeline.warnIfFunctionNotRegistered = function (fn) { + var isRegistered = fn.label && (fn.label in this.registeredFunctions) + + if (!isRegistered) { + lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\n', fn) + } + } + + /** + * Loads a previously serialised pipeline. + * + * All functions to be loaded must already be registered with lunr.Pipeline. + * If any function from the serialised data has not been registered then an + * error will be thrown. + * + * @param {Object} serialised - The serialised pipeline to load. + * @returns {lunr.Pipeline} + */ + lunr.Pipeline.load = function (serialised) { + var pipeline = new lunr.Pipeline + + serialised.forEach(function (fnName) { + var fn = lunr.Pipeline.registeredFunctions[fnName] + + if (fn) { + pipeline.add(fn) + } else { + throw new Error('Cannot load unregistered function: ' + fnName) + } + }) + + return pipeline + } + + /** + * Adds new functions to the end of the pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline. + */ + lunr.Pipeline.prototype.add = function () { + var fns = Array.prototype.slice.call(arguments) + + fns.forEach(function (fn) { + lunr.Pipeline.warnIfFunctionNotRegistered(fn) + this._stack.push(fn) + }, this) + } + + /** + * Adds a single function after a function that already exists in the + * pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. + * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. + */ + lunr.Pipeline.prototype.after = function (existingFn, newFn) { + lunr.Pipeline.warnIfFunctionNotRegistered(newFn) + + var pos = this._stack.indexOf(existingFn) + if (pos == -1) { + throw new Error('Cannot find existingFn') + } + + pos = pos + 1 + this._stack.splice(pos, 0, newFn) + } + + /** + * Adds a single function before a function that already exists in the + * pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. + * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. + */ + lunr.Pipeline.prototype.before = function (existingFn, newFn) { + lunr.Pipeline.warnIfFunctionNotRegistered(newFn) + + var pos = this._stack.indexOf(existingFn) + if (pos == -1) { + throw new Error('Cannot find existingFn') + } + + this._stack.splice(pos, 0, newFn) + } + + /** + * Removes a function from the pipeline. + * + * @param {lunr.PipelineFunction} fn The function to remove from the pipeline. + */ + lunr.Pipeline.prototype.remove = function (fn) { + var pos = this._stack.indexOf(fn) + if (pos == -1) { + return + } + + this._stack.splice(pos, 1) + } + + /** + * Runs the current list of functions that make up the pipeline against the + * passed tokens. + * + * @param {Array} tokens The tokens to run through the pipeline. + * @returns {Array} + */ + lunr.Pipeline.prototype.run = function (tokens) { + var stackLength = this._stack.length + + for (var i = 0; i < stackLength; i++) { + var fn = this._stack[i] + var memo = [] + + for (var j = 0; j < tokens.length; j++) { + var result = fn(tokens[j], j, tokens) + + if (result === null || result === void 0 || result === '') continue + + if (Array.isArray(result)) { + for (var k = 0; k < result.length; k++) { + memo.push(result[k]) + } + } else { + memo.push(result) + } + } + + tokens = memo + } + + return tokens + } + + /** + * Convenience method for passing a string through a pipeline and getting + * strings out. This method takes care of wrapping the passed string in a + * token and mapping the resulting tokens back to strings. + * + * @param {string} str - The string to pass through the pipeline. + * @param {?object} metadata - Optional metadata to associate with the token + * passed to the pipeline. + * @returns {string[]} + */ + lunr.Pipeline.prototype.runString = function (str, metadata) { + var token = new lunr.Token (str, metadata) + + return this.run([token]).map(function (t) { + return t.toString() + }) + } + + /** + * Resets the pipeline by removing any existing processors. + * + */ + lunr.Pipeline.prototype.reset = function () { + this._stack = [] + } + + /** + * Returns a representation of the pipeline ready for serialisation. + * + * Logs a warning if the function has not been registered. + * + * @returns {Array} + */ + lunr.Pipeline.prototype.toJSON = function () { + return this._stack.map(function (fn) { + lunr.Pipeline.warnIfFunctionNotRegistered(fn) + + return fn.label + }) + } + /*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + */ + + /** + * A vector is used to construct the vector space of documents and queries. These + * vectors support operations to determine the similarity between two documents or + * a document and a query. + * + * Normally no parameters are required for initializing a vector, but in the case of + * loading a previously dumped vector the raw elements can be provided to the constructor. + * + * For performance reasons vectors are implemented with a flat array, where an elements + * index is immediately followed by its value. E.g. [index, value, index, value]. This + * allows the underlying array to be as sparse as possible and still offer decent + * performance when being used for vector calculations. + * + * @constructor + * @param {Number[]} [elements] - The flat list of element index and element value pairs. + */ + lunr.Vector = function (elements) { + this._magnitude = 0 + this.elements = elements || [] + } + + + /** + * Calculates the position within the vector to insert a given index. + * + * This is used internally by insert and upsert. If there are duplicate indexes then + * the position is returned as if the value for that index were to be updated, but it + * is the callers responsibility to check whether there is a duplicate at that index + * + * @param {Number} insertIdx - The index at which the element should be inserted. + * @returns {Number} + */ + lunr.Vector.prototype.positionForIndex = function (index) { + // For an empty vector the tuple can be inserted at the beginning + if (this.elements.length == 0) { + return 0 + } + + var start = 0, + end = this.elements.length / 2, + sliceLength = end - start, + pivotPoint = Math.floor(sliceLength / 2), + pivotIndex = this.elements[pivotPoint * 2] + + while (sliceLength > 1) { + if (pivotIndex < index) { + start = pivotPoint + } + + if (pivotIndex > index) { + end = pivotPoint + } + + if (pivotIndex == index) { + break + } + + sliceLength = end - start + pivotPoint = start + Math.floor(sliceLength / 2) + pivotIndex = this.elements[pivotPoint * 2] + } + + if (pivotIndex == index) { + return pivotPoint * 2 + } + + if (pivotIndex > index) { + return pivotPoint * 2 + } + + if (pivotIndex < index) { + return (pivotPoint + 1) * 2 + } + } + + /** + * Inserts an element at an index within the vector. + * + * Does not allow duplicates, will throw an error if there is already an entry + * for this index. + * + * @param {Number} insertIdx - The index at which the element should be inserted. + * @param {Number} val - The value to be inserted into the vector. + */ + lunr.Vector.prototype.insert = function (insertIdx, val) { + this.upsert(insertIdx, val, function () { + throw "duplicate index" + }) + } + + /** + * Inserts or updates an existing index within the vector. + * + * @param {Number} insertIdx - The index at which the element should be inserted. + * @param {Number} val - The value to be inserted into the vector. + * @param {function} fn - A function that is called for updates, the existing value and the + * requested value are passed as arguments + */ + lunr.Vector.prototype.upsert = function (insertIdx, val, fn) { + this._magnitude = 0 + var position = this.positionForIndex(insertIdx) + + if (this.elements[position] == insertIdx) { + this.elements[position + 1] = fn(this.elements[position + 1], val) + } else { + this.elements.splice(position, 0, insertIdx, val) + } + } + + /** + * Calculates the magnitude of this vector. + * + * @returns {Number} + */ + lunr.Vector.prototype.magnitude = function () { + if (this._magnitude) return this._magnitude + + var sumOfSquares = 0, + elementsLength = this.elements.length + + for (var i = 1; i < elementsLength; i += 2) { + var val = this.elements[i] + sumOfSquares += val * val + } + + return this._magnitude = Math.sqrt(sumOfSquares) + } + + /** + * Calculates the dot product of this vector and another vector. + * + * @param {lunr.Vector} otherVector - The vector to compute the dot product with. + * @returns {Number} + */ + lunr.Vector.prototype.dot = function (otherVector) { + var dotProduct = 0, + a = this.elements, b = otherVector.elements, + aLen = a.length, bLen = b.length, + aVal = 0, bVal = 0, + i = 0, j = 0 + + while (i < aLen && j < bLen) { + aVal = a[i], bVal = b[j] + if (aVal < bVal) { + i += 2 + } else if (aVal > bVal) { + j += 2 + } else if (aVal == bVal) { + dotProduct += a[i + 1] * b[j + 1] + i += 2 + j += 2 + } + } + + return dotProduct + } + + /** + * Calculates the similarity between this vector and another vector. + * + * @param {lunr.Vector} otherVector - The other vector to calculate the + * similarity with. + * @returns {Number} + */ + lunr.Vector.prototype.similarity = function (otherVector) { + return this.dot(otherVector) / this.magnitude() || 0 + } + + /** + * Converts the vector to an array of the elements within the vector. + * + * @returns {Number[]} + */ + lunr.Vector.prototype.toArray = function () { + var output = new Array (this.elements.length / 2) + + for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) { + output[j] = this.elements[i] + } + + return output + } + + /** + * A JSON serializable representation of the vector. + * + * @returns {Number[]} + */ + lunr.Vector.prototype.toJSON = function () { + return this.elements + } + /* eslint-disable */ + /*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + */ + + /** + * lunr.stemmer is an english language stemmer, this is a JavaScript + * implementation of the PorterStemmer taken from http://tartarus.org/~martin + * + * @static + * @implements {lunr.PipelineFunction} + * @param {lunr.Token} token - The string to stem + * @returns {lunr.Token} + * @see {@link lunr.Pipeline} + * @function + */ + lunr.stemmer = (function(){ + var step2list = { + "ational" : "ate", + "tional" : "tion", + "enci" : "ence", + "anci" : "ance", + "izer" : "ize", + "bli" : "ble", + "alli" : "al", + "entli" : "ent", + "eli" : "e", + "ousli" : "ous", + "ization" : "ize", + "ation" : "ate", + "ator" : "ate", + "alism" : "al", + "iveness" : "ive", + "fulness" : "ful", + "ousness" : "ous", + "aliti" : "al", + "iviti" : "ive", + "biliti" : "ble", + "logi" : "log" + }, + + step3list = { + "icate" : "ic", + "ative" : "", + "alize" : "al", + "iciti" : "ic", + "ical" : "ic", + "ful" : "", + "ness" : "" + }, + + c = "[^aeiou]", // consonant + v = "[aeiouy]", // vowel + C = c + "[^aeiouy]*", // consonant sequence + V = v + "[aeiou]*", // vowel sequence + + mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0 + meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1 + mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1 + s_v = "^(" + C + ")?" + v; // vowel in stem + + var re_mgr0 = new RegExp(mgr0); + var re_mgr1 = new RegExp(mgr1); + var re_meq1 = new RegExp(meq1); + var re_s_v = new RegExp(s_v); + + var re_1a = /^(.+?)(ss|i)es$/; + var re2_1a = /^(.+?)([^s])s$/; + var re_1b = /^(.+?)eed$/; + var re2_1b = /^(.+?)(ed|ing)$/; + var re_1b_2 = /.$/; + var re2_1b_2 = /(at|bl|iz)$/; + var re3_1b_2 = new RegExp("([^aeiouylsz])\\1$"); + var re4_1b_2 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + + var re_1c = /^(.+?[^aeiou])y$/; + var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + + var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + + var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + var re2_4 = /^(.+?)(s|t)(ion)$/; + + var re_5 = /^(.+?)e$/; + var re_5_1 = /ll$/; + var re3_5 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + + var porterStemmer = function porterStemmer(w) { + var stem, + suffix, + firstch, + re, + re2, + re3, + re4; + + if (w.length < 3) { return w; } + + firstch = w.substr(0,1); + if (firstch == "y") { + w = firstch.toUpperCase() + w.substr(1); + } + + // Step 1a + re = re_1a + re2 = re2_1a; + + if (re.test(w)) { w = w.replace(re,"$1$2"); } + else if (re2.test(w)) { w = w.replace(re2,"$1$2"); } + + // Step 1b + re = re_1b; + re2 = re2_1b; + if (re.test(w)) { + var fp = re.exec(w); + re = re_mgr0; + if (re.test(fp[1])) { + re = re_1b_2; + w = w.replace(re,""); + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = re_s_v; + if (re2.test(stem)) { + w = stem; + re2 = re2_1b_2; + re3 = re3_1b_2; + re4 = re4_1b_2; + if (re2.test(w)) { w = w + "e"; } + else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,""); } + else if (re4.test(w)) { w = w + "e"; } + } + } + + // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say) + re = re_1c; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem + "i"; + } + + // Step 2 + re = re_2; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = re_mgr0; + if (re.test(stem)) { + w = stem + step2list[suffix]; + } + } + + // Step 3 + re = re_3; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = re_mgr0; + if (re.test(stem)) { + w = stem + step3list[suffix]; + } + } + + // Step 4 + re = re_4; + re2 = re2_4; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = re_mgr1; + if (re.test(stem)) { + w = stem; + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = re_mgr1; + if (re2.test(stem)) { + w = stem; + } + } + + // Step 5 + re = re_5; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = re_mgr1; + re2 = re_meq1; + re3 = re3_5; + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) { + w = stem; + } + } + + re = re_5_1; + re2 = re_mgr1; + if (re.test(w) && re2.test(w)) { + re = re_1b_2; + w = w.replace(re,""); + } + + // and turn initial Y back to y + + if (firstch == "y") { + w = firstch.toLowerCase() + w.substr(1); + } + + return w; + }; + + return function (token) { + return token.update(porterStemmer); + } + })(); + + lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer') + /*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + */ + + /** + * lunr.generateStopWordFilter builds a stopWordFilter function from the provided + * list of stop words. + * + * The built in lunr.stopWordFilter is built using this generator and can be used + * to generate custom stopWordFilters for applications or non English languages. + * + * @function + * @param {Array} token The token to pass through the filter + * @returns {lunr.PipelineFunction} + * @see lunr.Pipeline + * @see lunr.stopWordFilter + */ + lunr.generateStopWordFilter = function (stopWords) { + var words = stopWords.reduce(function (memo, stopWord) { + memo[stopWord] = stopWord + return memo + }, {}) + + return function (token) { + if (token && words[token.toString()] !== token.toString()) return token + } + } + + /** + * lunr.stopWordFilter is an English language stop word list filter, any words + * contained in the list will not be passed through the filter. + * + * This is intended to be used in the Pipeline. If the token does not pass the + * filter then undefined will be returned. + * + * @function + * @implements {lunr.PipelineFunction} + * @params {lunr.Token} token - A token to check for being a stop word. + * @returns {lunr.Token} + * @see {@link lunr.Pipeline} + */ + lunr.stopWordFilter = lunr.generateStopWordFilter([ + 'a', + 'able', + 'about', + 'across', + 'after', + 'all', + 'almost', + 'also', + 'am', + 'among', + 'an', + 'and', + 'any', + 'are', + 'as', + 'at', + 'be', + 'because', + 'been', + 'but', + 'by', + 'can', + 'cannot', + 'could', + 'dear', + 'did', + 'do', + 'does', + 'either', + 'else', + 'ever', + 'every', + 'for', + 'from', + 'get', + 'got', + 'had', + 'has', + 'have', + 'he', + 'her', + 'hers', + 'him', + 'his', + 'how', + 'however', + 'i', + 'if', + 'in', + 'into', + 'is', + 'it', + 'its', + 'just', + 'least', + 'let', + 'like', + 'likely', + 'may', + 'me', + 'might', + 'most', + 'must', + 'my', + 'neither', + 'no', + 'nor', + 'not', + 'of', + 'off', + 'often', + 'on', + 'only', + 'or', + 'other', + 'our', + 'own', + 'rather', + 'said', + 'say', + 'says', + 'she', + 'should', + 'since', + 'so', + 'some', + 'than', + 'that', + 'the', + 'their', + 'them', + 'then', + 'there', + 'these', + 'they', + 'this', + 'tis', + 'to', + 'too', + 'twas', + 'us', + 'wants', + 'was', + 'we', + 'were', + 'what', + 'when', + 'where', + 'which', + 'while', + 'who', + 'whom', + 'why', + 'will', + 'with', + 'would', + 'yet', + 'you', + 'your' + ]) + + lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter') + /*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + */ + + /** + * lunr.trimmer is a pipeline function for trimming non word + * characters from the beginning and end of tokens before they + * enter the index. + * + * This implementation may not work correctly for non latin + * characters and should either be removed or adapted for use + * with languages with non-latin characters. + * + * @static + * @implements {lunr.PipelineFunction} + * @param {lunr.Token} token The token to pass through the filter + * @returns {lunr.Token} + * @see lunr.Pipeline + */ + lunr.trimmer = function (token) { + return token.update(function (s) { + return s.replace(/^\W+/, '').replace(/\W+$/, '') + }) + } + + lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer') + /*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + */ + + /** + * A token set is used to store the unique list of all tokens + * within an index. Token sets are also used to represent an + * incoming query to the index, this query token set and index + * token set are then intersected to find which tokens to look + * up in the inverted index. + * + * A token set can hold multiple tokens, as in the case of the + * index token set, or it can hold a single token as in the + * case of a simple query token set. + * + * Additionally token sets are used to perform wildcard matching. + * Leading, contained and trailing wildcards are supported, and + * from this edit distance matching can also be provided. + * + * Token sets are implemented as a minimal finite state automata, + * where both common prefixes and suffixes are shared between tokens. + * This helps to reduce the space used for storing the token set. + * + * @constructor + */ + lunr.TokenSet = function () { + this.final = false + this.edges = {} + this.id = lunr.TokenSet._nextId + lunr.TokenSet._nextId += 1 + } + + /** + * Keeps track of the next, auto increment, identifier to assign + * to a new tokenSet. + * + * TokenSets require a unique identifier to be correctly minimised. + * + * @private + */ + lunr.TokenSet._nextId = 1 + + /** + * Creates a TokenSet instance from the given sorted array of words. + * + * @param {String[]} arr - A sorted array of strings to create the set from. + * @returns {lunr.TokenSet} + * @throws Will throw an error if the input array is not sorted. + */ + lunr.TokenSet.fromArray = function (arr) { + var builder = new lunr.TokenSet.Builder + + for (var i = 0, len = arr.length; i < len; i++) { + builder.insert(arr[i]) + } + + builder.finish() + return builder.root + } + + /** + * Creates a token set from a query clause. + * + * @private + * @param {Object} clause - A single clause from lunr.Query. + * @param {string} clause.term - The query clause term. + * @param {number} [clause.editDistance] - The optional edit distance for the term. + * @returns {lunr.TokenSet} + */ + lunr.TokenSet.fromClause = function (clause) { + if ('editDistance' in clause) { + return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance) + } else { + return lunr.TokenSet.fromString(clause.term) + } + } + + /** + * Creates a token set representing a single string with a specified + * edit distance. + * + * Insertions, deletions, substitutions and transpositions are each + * treated as an edit distance of 1. + * + * Increasing the allowed edit distance will have a dramatic impact + * on the performance of both creating and intersecting these TokenSets. + * It is advised to keep the edit distance less than 3. + * + * @param {string} str - The string to create the token set from. + * @param {number} editDistance - The allowed edit distance to match. + * @returns {lunr.Vector} + */ + lunr.TokenSet.fromFuzzyString = function (str, editDistance) { + var root = new lunr.TokenSet + + var stack = [{ + node: root, + editsRemaining: editDistance, + str: str + }] + + while (stack.length) { + var frame = stack.pop() + + // no edit + if (frame.str.length > 0) { + var char = frame.str.charAt(0), + noEditNode + + if (char in frame.node.edges) { + noEditNode = frame.node.edges[char] + } else { + noEditNode = new lunr.TokenSet + frame.node.edges[char] = noEditNode + } + + if (frame.str.length == 1) { + noEditNode.final = true + } + + stack.push({ + node: noEditNode, + editsRemaining: frame.editsRemaining, + str: frame.str.slice(1) + }) + } + + if (frame.editsRemaining == 0) { + continue + } + + // insertion + if ("*" in frame.node.edges) { + var insertionNode = frame.node.edges["*"] + } else { + var insertionNode = new lunr.TokenSet + frame.node.edges["*"] = insertionNode + } + + if (frame.str.length == 0) { + insertionNode.final = true + } + + stack.push({ + node: insertionNode, + editsRemaining: frame.editsRemaining - 1, + str: frame.str + }) + + // deletion + // can only do a deletion if we have enough edits remaining + // and if there are characters left to delete in the string + if (frame.str.length > 1) { + stack.push({ + node: frame.node, + editsRemaining: frame.editsRemaining - 1, + str: frame.str.slice(1) + }) + } + + // deletion + // just removing the last character from the str + if (frame.str.length == 1) { + frame.node.final = true + } + + // substitution + // can only do a substitution if we have enough edits remaining + // and if there are characters left to substitute + if (frame.str.length >= 1) { + if ("*" in frame.node.edges) { + var substitutionNode = frame.node.edges["*"] + } else { + var substitutionNode = new lunr.TokenSet + frame.node.edges["*"] = substitutionNode + } + + if (frame.str.length == 1) { + substitutionNode.final = true + } + + stack.push({ + node: substitutionNode, + editsRemaining: frame.editsRemaining - 1, + str: frame.str.slice(1) + }) + } + + // transposition + // can only do a transposition if there are edits remaining + // and there are enough characters to transpose + if (frame.str.length > 1) { + var charA = frame.str.charAt(0), + charB = frame.str.charAt(1), + transposeNode + + if (charB in frame.node.edges) { + transposeNode = frame.node.edges[charB] + } else { + transposeNode = new lunr.TokenSet + frame.node.edges[charB] = transposeNode + } + + if (frame.str.length == 1) { + transposeNode.final = true + } + + stack.push({ + node: transposeNode, + editsRemaining: frame.editsRemaining - 1, + str: charA + frame.str.slice(2) + }) + } + } + + return root + } + + /** + * Creates a TokenSet from a string. + * + * The string may contain one or more wildcard characters (*) + * that will allow wildcard matching when intersecting with + * another TokenSet. + * + * @param {string} str - The string to create a TokenSet from. + * @returns {lunr.TokenSet} + */ + lunr.TokenSet.fromString = function (str) { + var node = new lunr.TokenSet, + root = node + + /* + * Iterates through all characters within the passed string + * appending a node for each character. + * + * When a wildcard character is found then a self + * referencing edge is introduced to continually match + * any number of any characters. + */ + for (var i = 0, len = str.length; i < len; i++) { + var char = str[i], + final = (i == len - 1) + + if (char == "*") { + node.edges[char] = node + node.final = final + + } else { + var next = new lunr.TokenSet + next.final = final + + node.edges[char] = next + node = next + } + } + + return root + } + + /** + * Converts this TokenSet into an array of strings + * contained within the TokenSet. + * + * This is not intended to be used on a TokenSet that + * contains wildcards, in these cases the results are + * undefined and are likely to cause an infinite loop. + * + * @returns {string[]} + */ + lunr.TokenSet.prototype.toArray = function () { + var words = [] + + var stack = [{ + prefix: "", + node: this + }] + + while (stack.length) { + var frame = stack.pop(), + edges = Object.keys(frame.node.edges), + len = edges.length + + if (frame.node.final) { + /* In Safari, at this point the prefix is sometimes corrupted, see: + * https://github.com/olivernn/lunr.js/issues/279 Calling any + * String.prototype method forces Safari to "cast" this string to what + * it's supposed to be, fixing the bug. */ + frame.prefix.charAt(0) + words.push(frame.prefix) + } + + for (var i = 0; i < len; i++) { + var edge = edges[i] + + stack.push({ + prefix: frame.prefix.concat(edge), + node: frame.node.edges[edge] + }) + } + } + + return words + } + + /** + * Generates a string representation of a TokenSet. + * + * This is intended to allow TokenSets to be used as keys + * in objects, largely to aid the construction and minimisation + * of a TokenSet. As such it is not designed to be a human + * friendly representation of the TokenSet. + * + * @returns {string} + */ + lunr.TokenSet.prototype.toString = function () { + // NOTE: Using Object.keys here as this.edges is very likely + // to enter 'hash-mode' with many keys being added + // + // avoiding a for-in loop here as it leads to the function + // being de-optimised (at least in V8). From some simple + // benchmarks the performance is comparable, but allowing + // V8 to optimize may mean easy performance wins in the future. + + if (this._str) { + return this._str + } + + var str = this.final ? '1' : '0', + labels = Object.keys(this.edges).sort(), + len = labels.length + + for (var i = 0; i < len; i++) { + var label = labels[i], + node = this.edges[label] + + str = str + label + node.id + } + + return str + } + + /** + * Returns a new TokenSet that is the intersection of + * this TokenSet and the passed TokenSet. + * + * This intersection will take into account any wildcards + * contained within the TokenSet. + * + * @param {lunr.TokenSet} b - An other TokenSet to intersect with. + * @returns {lunr.TokenSet} + */ + lunr.TokenSet.prototype.intersect = function (b) { + var output = new lunr.TokenSet, + frame = undefined + + var stack = [{ + qNode: b, + output: output, + node: this + }] + + while (stack.length) { + frame = stack.pop() + + // NOTE: As with the #toString method, we are using + // Object.keys and a for loop instead of a for-in loop + // as both of these objects enter 'hash' mode, causing + // the function to be de-optimised in V8 + var qEdges = Object.keys(frame.qNode.edges), + qLen = qEdges.length, + nEdges = Object.keys(frame.node.edges), + nLen = nEdges.length + + for (var q = 0; q < qLen; q++) { + var qEdge = qEdges[q] + + for (var n = 0; n < nLen; n++) { + var nEdge = nEdges[n] + + if (nEdge == qEdge || qEdge == '*') { + var node = frame.node.edges[nEdge], + qNode = frame.qNode.edges[qEdge], + final = node.final && qNode.final, + next = undefined + + if (nEdge in frame.output.edges) { + // an edge already exists for this character + // no need to create a new node, just set the finality + // bit unless this node is already final + next = frame.output.edges[nEdge] + next.final = next.final || final + + } else { + // no edge exists yet, must create one + // set the finality bit and insert it + // into the output + next = new lunr.TokenSet + next.final = final + frame.output.edges[nEdge] = next + } + + stack.push({ + qNode: qNode, + output: next, + node: node + }) + } + } + } + } + + return output + } + lunr.TokenSet.Builder = function () { + this.previousWord = "" + this.root = new lunr.TokenSet + this.uncheckedNodes = [] + this.minimizedNodes = {} + } + + lunr.TokenSet.Builder.prototype.insert = function (word) { + var node, + commonPrefix = 0 + + if (word < this.previousWord) { + throw new Error ("Out of order word insertion") + } + + for (var i = 0; i < word.length && i < this.previousWord.length; i++) { + if (word[i] != this.previousWord[i]) break + commonPrefix++ + } + + this.minimize(commonPrefix) + + if (this.uncheckedNodes.length == 0) { + node = this.root + } else { + node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child + } + + for (var i = commonPrefix; i < word.length; i++) { + var nextNode = new lunr.TokenSet, + char = word[i] + + node.edges[char] = nextNode + + this.uncheckedNodes.push({ + parent: node, + char: char, + child: nextNode + }) + + node = nextNode + } + + node.final = true + this.previousWord = word + } + + lunr.TokenSet.Builder.prototype.finish = function () { + this.minimize(0) + } + + lunr.TokenSet.Builder.prototype.minimize = function (downTo) { + for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) { + var node = this.uncheckedNodes[i], + childKey = node.child.toString() + + if (childKey in this.minimizedNodes) { + node.parent.edges[node.char] = this.minimizedNodes[childKey] + } else { + // Cache the key for this node since + // we know it can't change anymore + node.child._str = childKey + + this.minimizedNodes[childKey] = node.child + } + + this.uncheckedNodes.pop() + } + } + /*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + */ + + /** + * An index contains the built index of all documents and provides a query interface + * to the index. + * + * Usually instances of lunr.Index will not be created using this constructor, instead + * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be + * used to load previously built and serialized indexes. + * + * @constructor + * @param {Object} attrs - The attributes of the built search index. + * @param {Object} attrs.invertedIndex - An index of term/field to document reference. + * @param {Object} attrs.fieldVectors - Field vectors + * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens. + * @param {string[]} attrs.fields - The names of indexed document fields. + * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms. + */ + lunr.Index = function (attrs) { + this.invertedIndex = attrs.invertedIndex + this.fieldVectors = attrs.fieldVectors + this.tokenSet = attrs.tokenSet + this.fields = attrs.fields + this.pipeline = attrs.pipeline + } + + /** + * A result contains details of a document matching a search query. + * @typedef {Object} lunr.Index~Result + * @property {string} ref - The reference of the document this result represents. + * @property {number} score - A number between 0 and 1 representing how similar this document is to the query. + * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match. + */ + + /** + * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple + * query language which itself is parsed into an instance of lunr.Query. + * + * For programmatically building queries it is advised to directly use lunr.Query, the query language + * is best used for human entered text rather than program generated text. + * + * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported + * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello' + * or 'world', though those that contain both will rank higher in the results. + * + * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can + * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding + * wildcards will increase the number of documents that will be found but can also have a negative + * impact on query performance, especially with wildcards at the beginning of a term. + * + * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term + * hello in the title field will match this query. Using a field not present in the index will lead + * to an error being thrown. + * + * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term + * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported + * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2. + * Avoid large values for edit distance to improve query performance. + * + * Each term also supports a presence modifier. By default a term's presence in document is optional, however + * this can be changed to either required or prohibited. For a term's presence to be required in a document the + * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and + * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not + * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'. + * + * To escape special characters the backslash character '\' can be used, this allows searches to include + * characters that would normally be considered modifiers, e.g. `foo\~2` will search for a term "foo~2" instead + * of attempting to apply a boost of 2 to the search term "foo". + * + * @typedef {string} lunr.Index~QueryString + * @example Simple single term query + * hello + * @example Multiple term query + * hello world + * @example term scoped to a field + * title:hello + * @example term with a boost of 10 + * hello^10 + * @example term with an edit distance of 2 + * hello~2 + * @example terms with presence modifiers + * -foo +bar baz + */ + + /** + * Performs a search against the index using lunr query syntax. + * + * Results will be returned sorted by their score, the most relevant results + * will be returned first. For details on how the score is calculated, please see + * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}. + * + * For more programmatic querying use lunr.Index#query. + * + * @param {lunr.Index~QueryString} queryString - A string containing a lunr query. + * @throws {lunr.QueryParseError} If the passed query string cannot be parsed. + * @returns {lunr.Index~Result[]} + */ + lunr.Index.prototype.search = function (queryString) { + return this.query(function (query) { + var parser = new lunr.QueryParser(queryString, query) + parser.parse() + }) + } + + /** + * A query builder callback provides a query object to be used to express + * the query to perform on the index. + * + * @callback lunr.Index~queryBuilder + * @param {lunr.Query} query - The query object to build up. + * @this lunr.Query + */ + + /** + * Performs a query against the index using the yielded lunr.Query object. + * + * If performing programmatic queries against the index, this method is preferred + * over lunr.Index#search so as to avoid the additional query parsing overhead. + * + * A query object is yielded to the supplied function which should be used to + * express the query to be run against the index. + * + * Note that although this function takes a callback parameter it is _not_ an + * asynchronous operation, the callback is just yielded a query object to be + * customized. + * + * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query. + * @returns {lunr.Index~Result[]} + */ + lunr.Index.prototype.query = function (fn) { + // for each query clause + // * process terms + // * expand terms from token set + // * find matching documents and metadata + // * get document vectors + // * score documents + + var query = new lunr.Query(this.fields), + matchingFields = Object.create(null), + queryVectors = Object.create(null), + termFieldCache = Object.create(null), + requiredMatches = Object.create(null), + prohibitedMatches = Object.create(null) + + /* + * To support field level boosts a query vector is created per + * field. An empty vector is eagerly created to support negated + * queries. + */ + for (var i = 0; i < this.fields.length; i++) { + queryVectors[this.fields[i]] = new lunr.Vector + } + + fn.call(query, query) + + for (var i = 0; i < query.clauses.length; i++) { + /* + * Unless the pipeline has been disabled for this term, which is + * the case for terms with wildcards, we need to pass the clause + * term through the search pipeline. A pipeline returns an array + * of processed terms. Pipeline functions may expand the passed + * term, which means we may end up performing multiple index lookups + * for a single query term. + */ + var clause = query.clauses[i], + terms = null, + clauseMatches = lunr.Set.empty + + if (clause.usePipeline) { + terms = this.pipeline.runString(clause.term, { + fields: clause.fields + }) + } else { + terms = [clause.term] + } + + for (var m = 0; m < terms.length; m++) { + var term = terms[m] + + /* + * Each term returned from the pipeline needs to use the same query + * clause object, e.g. the same boost and or edit distance. The + * simplest way to do this is to re-use the clause object but mutate + * its term property. + */ + clause.term = term + + /* + * From the term in the clause we create a token set which will then + * be used to intersect the indexes token set to get a list of terms + * to lookup in the inverted index + */ + var termTokenSet = lunr.TokenSet.fromClause(clause), + expandedTerms = this.tokenSet.intersect(termTokenSet).toArray() + + /* + * If a term marked as required does not exist in the tokenSet it is + * impossible for the search to return any matches. We set all the field + * scoped required matches set to empty and stop examining any further + * clauses. + */ + if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) { + for (var k = 0; k < clause.fields.length; k++) { + var field = clause.fields[k] + requiredMatches[field] = lunr.Set.empty + } + + break + } + + for (var j = 0; j < expandedTerms.length; j++) { + /* + * For each term get the posting and termIndex, this is required for + * building the query vector. + */ + var expandedTerm = expandedTerms[j], + posting = this.invertedIndex[expandedTerm], + termIndex = posting._index + + for (var k = 0; k < clause.fields.length; k++) { + /* + * For each field that this query term is scoped by (by default + * all fields are in scope) we need to get all the document refs + * that have this term in that field. + * + * The posting is the entry in the invertedIndex for the matching + * term from above. + */ + var field = clause.fields[k], + fieldPosting = posting[field], + matchingDocumentRefs = Object.keys(fieldPosting), + termField = expandedTerm + "/" + field, + matchingDocumentsSet = new lunr.Set(matchingDocumentRefs) + + /* + * if the presence of this term is required ensure that the matching + * documents are added to the set of required matches for this clause. + * + */ + if (clause.presence == lunr.Query.presence.REQUIRED) { + clauseMatches = clauseMatches.union(matchingDocumentsSet) + + if (requiredMatches[field] === undefined) { + requiredMatches[field] = lunr.Set.complete + } + } + + /* + * if the presence of this term is prohibited ensure that the matching + * documents are added to the set of prohibited matches for this field, + * creating that set if it does not yet exist. + */ + if (clause.presence == lunr.Query.presence.PROHIBITED) { + if (prohibitedMatches[field] === undefined) { + prohibitedMatches[field] = lunr.Set.empty + } + + prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet) + + /* + * Prohibited matches should not be part of the query vector used for + * similarity scoring and no metadata should be extracted so we continue + * to the next field + */ + continue + } + + /* + * The query field vector is populated using the termIndex found for + * the term and a unit value with the appropriate boost applied. + * Using upsert because there could already be an entry in the vector + * for the term we are working with. In that case we just add the scores + * together. + */ + queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b }) + + /** + * If we've already seen this term, field combo then we've already collected + * the matching documents and metadata, no need to go through all that again + */ + if (termFieldCache[termField]) { + continue + } + + for (var l = 0; l < matchingDocumentRefs.length; l++) { + /* + * All metadata for this term/field/document triple + * are then extracted and collected into an instance + * of lunr.MatchData ready to be returned in the query + * results + */ + var matchingDocumentRef = matchingDocumentRefs[l], + matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field), + metadata = fieldPosting[matchingDocumentRef], + fieldMatch + + if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) { + matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata) + } else { + fieldMatch.add(expandedTerm, field, metadata) + } + + } + + termFieldCache[termField] = true + } + } + } + + /** + * If the presence was required we need to update the requiredMatches field sets. + * We do this after all fields for the term have collected their matches because + * the clause terms presence is required in _any_ of the fields not _all_ of the + * fields. + */ + if (clause.presence === lunr.Query.presence.REQUIRED) { + for (var k = 0; k < clause.fields.length; k++) { + var field = clause.fields[k] + requiredMatches[field] = requiredMatches[field].intersect(clauseMatches) + } + } + } + + /** + * Need to combine the field scoped required and prohibited + * matching documents into a global set of required and prohibited + * matches + */ + var allRequiredMatches = lunr.Set.complete, + allProhibitedMatches = lunr.Set.empty + + for (var i = 0; i < this.fields.length; i++) { + var field = this.fields[i] + + if (requiredMatches[field]) { + allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field]) + } + + if (prohibitedMatches[field]) { + allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field]) + } + } + + var matchingFieldRefs = Object.keys(matchingFields), + results = [], + matches = Object.create(null) + + /* + * If the query is negated (contains only prohibited terms) + * we need to get _all_ fieldRefs currently existing in the + * index. This is only done when we know that the query is + * entirely prohibited terms to avoid any cost of getting all + * fieldRefs unnecessarily. + * + * Additionally, blank MatchData must be created to correctly + * populate the results. + */ + if (query.isNegated()) { + matchingFieldRefs = Object.keys(this.fieldVectors) + + for (var i = 0; i < matchingFieldRefs.length; i++) { + var matchingFieldRef = matchingFieldRefs[i] + var fieldRef = lunr.FieldRef.fromString(matchingFieldRef) + matchingFields[matchingFieldRef] = new lunr.MatchData + } + } + + for (var i = 0; i < matchingFieldRefs.length; i++) { + /* + * Currently we have document fields that match the query, but we + * need to return documents. The matchData and scores are combined + * from multiple fields belonging to the same document. + * + * Scores are calculated by field, using the query vectors created + * above, and combined into a final document score using addition. + */ + var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]), + docRef = fieldRef.docRef + + if (!allRequiredMatches.contains(docRef)) { + continue + } + + if (allProhibitedMatches.contains(docRef)) { + continue + } + + var fieldVector = this.fieldVectors[fieldRef], + score = queryVectors[fieldRef.fieldName].similarity(fieldVector), + docMatch + + if ((docMatch = matches[docRef]) !== undefined) { + docMatch.score += score + docMatch.matchData.combine(matchingFields[fieldRef]) + } else { + var match = { + ref: docRef, + score: score, + matchData: matchingFields[fieldRef] + } + matches[docRef] = match + results.push(match) + } + } + + /* + * Sort the results objects by score, highest first. + */ + return results.sort(function (a, b) { + return b.score - a.score + }) + } + + /** + * Prepares the index for JSON serialization. + * + * The schema for this JSON blob will be described in a + * separate JSON schema file. + * + * @returns {Object} + */ + lunr.Index.prototype.toJSON = function () { + var invertedIndex = Object.keys(this.invertedIndex) + .sort() + .map(function (term) { + return [term, this.invertedIndex[term]] + }, this) + + var fieldVectors = Object.keys(this.fieldVectors) + .map(function (ref) { + return [ref, this.fieldVectors[ref].toJSON()] + }, this) + + return { + version: lunr.version, + fields: this.fields, + fieldVectors: fieldVectors, + invertedIndex: invertedIndex, + pipeline: this.pipeline.toJSON() + } + } + + /** + * Loads a previously serialized lunr.Index + * + * @param {Object} serializedIndex - A previously serialized lunr.Index + * @returns {lunr.Index} + */ + lunr.Index.load = function (serializedIndex) { + var attrs = {}, + fieldVectors = {}, + serializedVectors = serializedIndex.fieldVectors, + invertedIndex = Object.create(null), + serializedInvertedIndex = serializedIndex.invertedIndex, + tokenSetBuilder = new lunr.TokenSet.Builder, + pipeline = lunr.Pipeline.load(serializedIndex.pipeline) + + if (serializedIndex.version != lunr.version) { + lunr.utils.warn("Version mismatch when loading serialised index. Current version of lunr '" + lunr.version + "' does not match serialized index '" + serializedIndex.version + "'") + } + + for (var i = 0; i < serializedVectors.length; i++) { + var tuple = serializedVectors[i], + ref = tuple[0], + elements = tuple[1] + + fieldVectors[ref] = new lunr.Vector(elements) + } + + for (var i = 0; i < serializedInvertedIndex.length; i++) { + var tuple = serializedInvertedIndex[i], + term = tuple[0], + posting = tuple[1] + + tokenSetBuilder.insert(term) + invertedIndex[term] = posting + } + + tokenSetBuilder.finish() + + attrs.fields = serializedIndex.fields + + attrs.fieldVectors = fieldVectors + attrs.invertedIndex = invertedIndex + attrs.tokenSet = tokenSetBuilder.root + attrs.pipeline = pipeline + + return new lunr.Index(attrs) + } + /*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + */ + + /** + * lunr.Builder performs indexing on a set of documents and + * returns instances of lunr.Index ready for querying. + * + * All configuration of the index is done via the builder, the + * fields to index, the document reference, the text processing + * pipeline and document scoring parameters are all set on the + * builder before indexing. + * + * @constructor + * @property {string} _ref - Internal reference to the document reference field. + * @property {string[]} _fields - Internal reference to the document fields to index. + * @property {object} invertedIndex - The inverted index maps terms to document fields. + * @property {object} documentTermFrequencies - Keeps track of document term frequencies. + * @property {object} documentLengths - Keeps track of the length of documents added to the index. + * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing. + * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing. + * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index. + * @property {number} documentCount - Keeps track of the total number of documents indexed. + * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75. + * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2. + * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space. + * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index. + */ + lunr.Builder = function () { + this._ref = "id" + this._fields = Object.create(null) + this._documents = Object.create(null) + this.invertedIndex = Object.create(null) + this.fieldTermFrequencies = {} + this.fieldLengths = {} + this.tokenizer = lunr.tokenizer + this.pipeline = new lunr.Pipeline + this.searchPipeline = new lunr.Pipeline + this.documentCount = 0 + this._b = 0.75 + this._k1 = 1.2 + this.termIndex = 0 + this.metadataWhitelist = [] + } + + /** + * Sets the document field used as the document reference. Every document must have this field. + * The type of this field in the document should be a string, if it is not a string it will be + * coerced into a string by calling toString. + * + * The default ref is 'id'. + * + * The ref should _not_ be changed during indexing, it should be set before any documents are + * added to the index. Changing it during indexing can lead to inconsistent results. + * + * @param {string} ref - The name of the reference field in the document. + */ + lunr.Builder.prototype.ref = function (ref) { + this._ref = ref + } + + /** + * A function that is used to extract a field from a document. + * + * Lunr expects a field to be at the top level of a document, if however the field + * is deeply nested within a document an extractor function can be used to extract + * the right field for indexing. + * + * @callback fieldExtractor + * @param {object} doc - The document being added to the index. + * @returns {?(string|object|object[])} obj - The object that will be indexed for this field. + * @example Extracting a nested field + * function (doc) { return doc.nested.field } + */ + + /** + * Adds a field to the list of document fields that will be indexed. Every document being + * indexed should have this field. Null values for this field in indexed documents will + * not cause errors but will limit the chance of that document being retrieved by searches. + * + * All fields should be added before adding documents to the index. Adding fields after + * a document has been indexed will have no effect on already indexed documents. + * + * Fields can be boosted at build time. This allows terms within that field to have more + * importance when ranking search results. Use a field boost to specify that matches within + * one field are more important than other fields. + * + * @param {string} fieldName - The name of a field to index in all documents. + * @param {object} attributes - Optional attributes associated with this field. + * @param {number} [attributes.boost=1] - Boost applied to all terms within this field. + * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document. + * @throws {RangeError} fieldName cannot contain unsupported characters '/' + */ + lunr.Builder.prototype.field = function (fieldName, attributes) { + if (/\//.test(fieldName)) { + throw new RangeError ("Field '" + fieldName + "' contains illegal character '/'") + } + + this._fields[fieldName] = attributes || {} + } + + /** + * A parameter to tune the amount of field length normalisation that is applied when + * calculating relevance scores. A value of 0 will completely disable any normalisation + * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b + * will be clamped to the range 0 - 1. + * + * @param {number} number - The value to set for this tuning parameter. + */ + lunr.Builder.prototype.b = function (number) { + if (number < 0) { + this._b = 0 + } else if (number > 1) { + this._b = 1 + } else { + this._b = number + } + } + + /** + * A parameter that controls the speed at which a rise in term frequency results in term + * frequency saturation. The default value is 1.2. Setting this to a higher value will give + * slower saturation levels, a lower value will result in quicker saturation. + * + * @param {number} number - The value to set for this tuning parameter. + */ + lunr.Builder.prototype.k1 = function (number) { + this._k1 = number + } + + /** + * Adds a document to the index. + * + * Before adding fields to the index the index should have been fully setup, with the document + * ref and all fields to index already having been specified. + * + * The document must have a field name as specified by the ref (by default this is 'id') and + * it should have all fields defined for indexing, though null or undefined values will not + * cause errors. + * + * Entire documents can be boosted at build time. Applying a boost to a document indicates that + * this document should rank higher in search results than other documents. + * + * @param {object} doc - The document to add to the index. + * @param {object} attributes - Optional attributes associated with this document. + * @param {number} [attributes.boost=1] - Boost applied to all terms within this document. + */ + lunr.Builder.prototype.add = function (doc, attributes) { + var docRef = doc[this._ref], + fields = Object.keys(this._fields) + + this._documents[docRef] = attributes || {} + this.documentCount += 1 + + for (var i = 0; i < fields.length; i++) { + var fieldName = fields[i], + extractor = this._fields[fieldName].extractor, + field = extractor ? extractor(doc) : doc[fieldName], + tokens = this.tokenizer(field, { + fields: [fieldName] + }), + terms = this.pipeline.run(tokens), + fieldRef = new lunr.FieldRef (docRef, fieldName), + fieldTerms = Object.create(null) + + this.fieldTermFrequencies[fieldRef] = fieldTerms + this.fieldLengths[fieldRef] = 0 + + // store the length of this field for this document + this.fieldLengths[fieldRef] += terms.length + + // calculate term frequencies for this field + for (var j = 0; j < terms.length; j++) { + var term = terms[j] + + if (fieldTerms[term] == undefined) { + fieldTerms[term] = 0 + } + + fieldTerms[term] += 1 + + // add to inverted index + // create an initial posting if one doesn't exist + if (this.invertedIndex[term] == undefined) { + var posting = Object.create(null) + posting["_index"] = this.termIndex + this.termIndex += 1 + + for (var k = 0; k < fields.length; k++) { + posting[fields[k]] = Object.create(null) + } + + this.invertedIndex[term] = posting + } + + // add an entry for this term/fieldName/docRef to the invertedIndex + if (this.invertedIndex[term][fieldName][docRef] == undefined) { + this.invertedIndex[term][fieldName][docRef] = Object.create(null) + } + + // store all whitelisted metadata about this token in the + // inverted index + for (var l = 0; l < this.metadataWhitelist.length; l++) { + var metadataKey = this.metadataWhitelist[l], + metadata = term.metadata[metadataKey] + + if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) { + this.invertedIndex[term][fieldName][docRef][metadataKey] = [] + } + + this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata) + } + } + + } + } + + /** + * Calculates the average document length for this index + * + * @private + */ + lunr.Builder.prototype.calculateAverageFieldLengths = function () { + + var fieldRefs = Object.keys(this.fieldLengths), + numberOfFields = fieldRefs.length, + accumulator = {}, + documentsWithField = {} + + for (var i = 0; i < numberOfFields; i++) { + var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), + field = fieldRef.fieldName + + documentsWithField[field] || (documentsWithField[field] = 0) + documentsWithField[field] += 1 + + accumulator[field] || (accumulator[field] = 0) + accumulator[field] += this.fieldLengths[fieldRef] + } + + var fields = Object.keys(this._fields) + + for (var i = 0; i < fields.length; i++) { + var fieldName = fields[i] + accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName] + } + + this.averageFieldLength = accumulator + } + + /** + * Builds a vector space model of every document using lunr.Vector + * + * @private + */ + lunr.Builder.prototype.createFieldVectors = function () { + var fieldVectors = {}, + fieldRefs = Object.keys(this.fieldTermFrequencies), + fieldRefsLength = fieldRefs.length, + termIdfCache = Object.create(null) + + for (var i = 0; i < fieldRefsLength; i++) { + var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), + fieldName = fieldRef.fieldName, + fieldLength = this.fieldLengths[fieldRef], + fieldVector = new lunr.Vector, + termFrequencies = this.fieldTermFrequencies[fieldRef], + terms = Object.keys(termFrequencies), + termsLength = terms.length + + + var fieldBoost = this._fields[fieldName].boost || 1, + docBoost = this._documents[fieldRef.docRef].boost || 1 + + for (var j = 0; j < termsLength; j++) { + var term = terms[j], + tf = termFrequencies[term], + termIndex = this.invertedIndex[term]._index, + idf, score, scoreWithPrecision + + if (termIdfCache[term] === undefined) { + idf = lunr.idf(this.invertedIndex[term], this.documentCount) + termIdfCache[term] = idf + } else { + idf = termIdfCache[term] + } + + score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf) + score *= fieldBoost + score *= docBoost + scoreWithPrecision = Math.round(score * 1000) / 1000 + // Converts 1.23456789 to 1.234. + // Reducing the precision so that the vectors take up less + // space when serialised. Doing it now so that they behave + // the same before and after serialisation. Also, this is + // the fastest approach to reducing a number's precision in + // JavaScript. + + fieldVector.insert(termIndex, scoreWithPrecision) + } + + fieldVectors[fieldRef] = fieldVector + } + + this.fieldVectors = fieldVectors + } + + /** + * Creates a token set of all tokens in the index using lunr.TokenSet + * + * @private + */ + lunr.Builder.prototype.createTokenSet = function () { + this.tokenSet = lunr.TokenSet.fromArray( + Object.keys(this.invertedIndex).sort() + ) + } + + /** + * Builds the index, creating an instance of lunr.Index. + * + * This completes the indexing process and should only be called + * once all documents have been added to the index. + * + * @returns {lunr.Index} + */ + lunr.Builder.prototype.build = function () { + this.calculateAverageFieldLengths() + this.createFieldVectors() + this.createTokenSet() + + return new lunr.Index({ + invertedIndex: this.invertedIndex, + fieldVectors: this.fieldVectors, + tokenSet: this.tokenSet, + fields: Object.keys(this._fields), + pipeline: this.searchPipeline + }) + } + + /** + * Applies a plugin to the index builder. + * + * A plugin is a function that is called with the index builder as its context. + * Plugins can be used to customise or extend the behaviour of the index + * in some way. A plugin is just a function, that encapsulated the custom + * behaviour that should be applied when building the index. + * + * The plugin function will be called with the index builder as its argument, additional + * arguments can also be passed when calling use. The function will be called + * with the index builder as its context. + * + * @param {Function} plugin The plugin to apply. + */ + lunr.Builder.prototype.use = function (fn) { + var args = Array.prototype.slice.call(arguments, 1) + args.unshift(this) + fn.apply(this, args) + } + /** + * Contains and collects metadata about a matching document. + * A single instance of lunr.MatchData is returned as part of every + * lunr.Index~Result. + * + * @constructor + * @param {string} term - The term this match data is associated with + * @param {string} field - The field in which the term was found + * @param {object} metadata - The metadata recorded about this term in this field + * @property {object} metadata - A cloned collection of metadata associated with this document. + * @see {@link lunr.Index~Result} + */ + lunr.MatchData = function (term, field, metadata) { + var clonedMetadata = Object.create(null), + metadataKeys = Object.keys(metadata || {}) + + // Cloning the metadata to prevent the original + // being mutated during match data combination. + // Metadata is kept in an array within the inverted + // index so cloning the data can be done with + // Array#slice + for (var i = 0; i < metadataKeys.length; i++) { + var key = metadataKeys[i] + clonedMetadata[key] = metadata[key].slice() + } + + this.metadata = Object.create(null) + + if (term !== undefined) { + this.metadata[term] = Object.create(null) + this.metadata[term][field] = clonedMetadata + } + } + + /** + * An instance of lunr.MatchData will be created for every term that matches a + * document. However only one instance is required in a lunr.Index~Result. This + * method combines metadata from another instance of lunr.MatchData with this + * objects metadata. + * + * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one. + * @see {@link lunr.Index~Result} + */ + lunr.MatchData.prototype.combine = function (otherMatchData) { + var terms = Object.keys(otherMatchData.metadata) + + for (var i = 0; i < terms.length; i++) { + var term = terms[i], + fields = Object.keys(otherMatchData.metadata[term]) + + if (this.metadata[term] == undefined) { + this.metadata[term] = Object.create(null) + } + + for (var j = 0; j < fields.length; j++) { + var field = fields[j], + keys = Object.keys(otherMatchData.metadata[term][field]) + + if (this.metadata[term][field] == undefined) { + this.metadata[term][field] = Object.create(null) + } + + for (var k = 0; k < keys.length; k++) { + var key = keys[k] + + if (this.metadata[term][field][key] == undefined) { + this.metadata[term][field][key] = otherMatchData.metadata[term][field][key] + } else { + this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key]) + } + + } + } + } + } + + /** + * Add metadata for a term/field pair to this instance of match data. + * + * @param {string} term - The term this match data is associated with + * @param {string} field - The field in which the term was found + * @param {object} metadata - The metadata recorded about this term in this field + */ + lunr.MatchData.prototype.add = function (term, field, metadata) { + if (!(term in this.metadata)) { + this.metadata[term] = Object.create(null) + this.metadata[term][field] = metadata + return + } + + if (!(field in this.metadata[term])) { + this.metadata[term][field] = metadata + return + } + + var metadataKeys = Object.keys(metadata) + + for (var i = 0; i < metadataKeys.length; i++) { + var key = metadataKeys[i] + + if (key in this.metadata[term][field]) { + this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key]) + } else { + this.metadata[term][field][key] = metadata[key] + } + } + } + /** + * A lunr.Query provides a programmatic way of defining queries to be performed + * against a {@link lunr.Index}. + * + * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method + * so the query object is pre-initialized with the right index fields. + * + * @constructor + * @property {lunr.Query~Clause[]} clauses - An array of query clauses. + * @property {string[]} allFields - An array of all available fields in a lunr.Index. + */ + lunr.Query = function (allFields) { + this.clauses = [] + this.allFields = allFields + } + + /** + * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause. + * + * This allows wildcards to be added to the beginning and end of a term without having to manually do any string + * concatenation. + * + * The wildcard constants can be bitwise combined to select both leading and trailing wildcards. + * + * @constant + * @default + * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour + * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists + * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists + * @see lunr.Query~Clause + * @see lunr.Query#clause + * @see lunr.Query#term + * @example query term with trailing wildcard + * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING }) + * @example query term with leading and trailing wildcard + * query.term('foo', { + * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING + * }) + */ + + lunr.Query.wildcard = new String ("*") + lunr.Query.wildcard.NONE = 0 + lunr.Query.wildcard.LEADING = 1 + lunr.Query.wildcard.TRAILING = 2 + + /** + * Constants for indicating what kind of presence a term must have in matching documents. + * + * @constant + * @enum {number} + * @see lunr.Query~Clause + * @see lunr.Query#clause + * @see lunr.Query#term + * @example query term with required presence + * query.term('foo', { presence: lunr.Query.presence.REQUIRED }) + */ + lunr.Query.presence = { + /** + * Term's presence in a document is optional, this is the default value. + */ + OPTIONAL: 1, + + /** + * Term's presence in a document is required, documents that do not contain + * this term will not be returned. + */ + REQUIRED: 2, + + /** + * Term's presence in a document is prohibited, documents that do contain + * this term will not be returned. + */ + PROHIBITED: 3 + } + + /** + * A single clause in a {@link lunr.Query} contains a term and details on how to + * match that term against a {@link lunr.Index}. + * + * @typedef {Object} lunr.Query~Clause + * @property {string[]} fields - The fields in an index this clause should be matched against. + * @property {number} [boost=1] - Any boost that should be applied when matching this clause. + * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be. + * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline. + * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended. + * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents. + */ + + /** + * Adds a {@link lunr.Query~Clause} to this query. + * + * Unless the clause contains the fields to be matched all fields will be matched. In addition + * a default boost of 1 is applied to the clause. + * + * @param {lunr.Query~Clause} clause - The clause to add to this query. + * @see lunr.Query~Clause + * @returns {lunr.Query} + */ + lunr.Query.prototype.clause = function (clause) { + if (!('fields' in clause)) { + clause.fields = this.allFields + } + + if (!('boost' in clause)) { + clause.boost = 1 + } + + if (!('usePipeline' in clause)) { + clause.usePipeline = true + } + + if (!('wildcard' in clause)) { + clause.wildcard = lunr.Query.wildcard.NONE + } + + if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) { + clause.term = "*" + clause.term + } + + if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) { + clause.term = "" + clause.term + "*" + } + + if (!('presence' in clause)) { + clause.presence = lunr.Query.presence.OPTIONAL + } + + this.clauses.push(clause) + + return this + } + + /** + * A negated query is one in which every clause has a presence of + * prohibited. These queries require some special processing to return + * the expected results. + * + * @returns boolean + */ + lunr.Query.prototype.isNegated = function () { + for (var i = 0; i < this.clauses.length; i++) { + if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) { + return false + } + } + + return true + } + + /** + * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause} + * to the list of clauses that make up this query. + * + * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion + * to a token or token-like string should be done before calling this method. + * + * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an + * array, each term in the array will share the same options. + * + * @param {object|object[]} term - The term(s) to add to the query. + * @param {object} [options] - Any additional properties to add to the query clause. + * @returns {lunr.Query} + * @see lunr.Query#clause + * @see lunr.Query~Clause + * @example adding a single term to a query + * query.term("foo") + * @example adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard + * query.term("foo", { + * fields: ["title"], + * boost: 10, + * wildcard: lunr.Query.wildcard.TRAILING + * }) + * @example using lunr.tokenizer to convert a string to tokens before using them as terms + * query.term(lunr.tokenizer("foo bar")) + */ + lunr.Query.prototype.term = function (term, options) { + if (Array.isArray(term)) { + term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this) + return this + } + + var clause = options || {} + clause.term = term.toString() + + this.clause(clause) + + return this + } + lunr.QueryParseError = function (message, start, end) { + this.name = "QueryParseError" + this.message = message + this.start = start + this.end = end + } + + lunr.QueryParseError.prototype = new Error + lunr.QueryLexer = function (str) { + this.lexemes = [] + this.str = str + this.length = str.length + this.pos = 0 + this.start = 0 + this.escapeCharPositions = [] + } + + lunr.QueryLexer.prototype.run = function () { + var state = lunr.QueryLexer.lexText + + while (state) { + state = state(this) + } + } + + lunr.QueryLexer.prototype.sliceString = function () { + var subSlices = [], + sliceStart = this.start, + sliceEnd = this.pos + + for (var i = 0; i < this.escapeCharPositions.length; i++) { + sliceEnd = this.escapeCharPositions[i] + subSlices.push(this.str.slice(sliceStart, sliceEnd)) + sliceStart = sliceEnd + 1 + } + + subSlices.push(this.str.slice(sliceStart, this.pos)) + this.escapeCharPositions.length = 0 + + return subSlices.join('') + } + + lunr.QueryLexer.prototype.emit = function (type) { + this.lexemes.push({ + type: type, + str: this.sliceString(), + start: this.start, + end: this.pos + }) + + this.start = this.pos + } + + lunr.QueryLexer.prototype.escapeCharacter = function () { + this.escapeCharPositions.push(this.pos - 1) + this.pos += 1 + } + + lunr.QueryLexer.prototype.next = function () { + if (this.pos >= this.length) { + return lunr.QueryLexer.EOS + } + + var char = this.str.charAt(this.pos) + this.pos += 1 + return char + } + + lunr.QueryLexer.prototype.width = function () { + return this.pos - this.start + } + + lunr.QueryLexer.prototype.ignore = function () { + if (this.start == this.pos) { + this.pos += 1 + } + + this.start = this.pos + } + + lunr.QueryLexer.prototype.backup = function () { + this.pos -= 1 + } + + lunr.QueryLexer.prototype.acceptDigitRun = function () { + var char, charCode + + do { + char = this.next() + charCode = char.charCodeAt(0) + } while (charCode > 47 && charCode < 58) + + if (char != lunr.QueryLexer.EOS) { + this.backup() + } + } + + lunr.QueryLexer.prototype.more = function () { + return this.pos < this.length + } + + lunr.QueryLexer.EOS = 'EOS' + lunr.QueryLexer.FIELD = 'FIELD' + lunr.QueryLexer.TERM = 'TERM' + lunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE' + lunr.QueryLexer.BOOST = 'BOOST' + lunr.QueryLexer.PRESENCE = 'PRESENCE' + + lunr.QueryLexer.lexField = function (lexer) { + lexer.backup() + lexer.emit(lunr.QueryLexer.FIELD) + lexer.ignore() + return lunr.QueryLexer.lexText + } + + lunr.QueryLexer.lexTerm = function (lexer) { + if (lexer.width() > 1) { + lexer.backup() + lexer.emit(lunr.QueryLexer.TERM) + } + + lexer.ignore() + + if (lexer.more()) { + return lunr.QueryLexer.lexText + } + } + + lunr.QueryLexer.lexEditDistance = function (lexer) { + lexer.ignore() + lexer.acceptDigitRun() + lexer.emit(lunr.QueryLexer.EDIT_DISTANCE) + return lunr.QueryLexer.lexText + } + + lunr.QueryLexer.lexBoost = function (lexer) { + lexer.ignore() + lexer.acceptDigitRun() + lexer.emit(lunr.QueryLexer.BOOST) + return lunr.QueryLexer.lexText + } + + lunr.QueryLexer.lexEOS = function (lexer) { + if (lexer.width() > 0) { + lexer.emit(lunr.QueryLexer.TERM) + } + } + + // This matches the separator used when tokenising fields + // within a document. These should match otherwise it is + // not possible to search for some tokens within a document. + // + // It is possible for the user to change the separator on the + // tokenizer so it _might_ clash with any other of the special + // characters already used within the search string, e.g. :. + // + // This means that it is possible to change the separator in + // such a way that makes some words unsearchable using a search + // string. + lunr.QueryLexer.termSeparator = lunr.tokenizer.separator + + lunr.QueryLexer.lexText = function (lexer) { + while (true) { + var char = lexer.next() + + if (char == lunr.QueryLexer.EOS) { + return lunr.QueryLexer.lexEOS + } + + // Escape character is '\' + if (char.charCodeAt(0) == 92) { + lexer.escapeCharacter() + continue + } + + if (char == ":") { + return lunr.QueryLexer.lexField + } + + if (char == "~") { + lexer.backup() + if (lexer.width() > 0) { + lexer.emit(lunr.QueryLexer.TERM) + } + return lunr.QueryLexer.lexEditDistance + } + + if (char == "^") { + lexer.backup() + if (lexer.width() > 0) { + lexer.emit(lunr.QueryLexer.TERM) + } + return lunr.QueryLexer.lexBoost + } + + // "+" indicates term presence is required + // checking for length to ensure that only + // leading "+" are considered + if (char == "+" && lexer.width() === 1) { + lexer.emit(lunr.QueryLexer.PRESENCE) + return lunr.QueryLexer.lexText + } + + // "-" indicates term presence is prohibited + // checking for length to ensure that only + // leading "-" are considered + if (char == "-" && lexer.width() === 1) { + lexer.emit(lunr.QueryLexer.PRESENCE) + return lunr.QueryLexer.lexText + } + + if (char.match(lunr.QueryLexer.termSeparator)) { + return lunr.QueryLexer.lexTerm + } + } + } + + lunr.QueryParser = function (str, query) { + this.lexer = new lunr.QueryLexer (str) + this.query = query + this.currentClause = {} + this.lexemeIdx = 0 + } + + lunr.QueryParser.prototype.parse = function () { + this.lexer.run() + this.lexemes = this.lexer.lexemes + + var state = lunr.QueryParser.parseClause + + while (state) { + state = state(this) + } + + return this.query + } + + lunr.QueryParser.prototype.peekLexeme = function () { + return this.lexemes[this.lexemeIdx] + } + + lunr.QueryParser.prototype.consumeLexeme = function () { + var lexeme = this.peekLexeme() + this.lexemeIdx += 1 + return lexeme + } + + lunr.QueryParser.prototype.nextClause = function () { + var completedClause = this.currentClause + this.query.clause(completedClause) + this.currentClause = {} + } + + lunr.QueryParser.parseClause = function (parser) { + var lexeme = parser.peekLexeme() + + if (lexeme == undefined) { + return + } + + switch (lexeme.type) { + case lunr.QueryLexer.PRESENCE: + return lunr.QueryParser.parsePresence + case lunr.QueryLexer.FIELD: + return lunr.QueryParser.parseField + case lunr.QueryLexer.TERM: + return lunr.QueryParser.parseTerm + default: + var errorMessage = "expected either a field or a term, found " + lexeme.type + + if (lexeme.str.length >= 1) { + errorMessage += " with value '" + lexeme.str + "'" + } + + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + } + + lunr.QueryParser.parsePresence = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + switch (lexeme.str) { + case "-": + parser.currentClause.presence = lunr.Query.presence.PROHIBITED + break + case "+": + parser.currentClause.presence = lunr.Query.presence.REQUIRED + break + default: + var errorMessage = "unrecognised presence operator'" + lexeme.str + "'" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + var errorMessage = "expecting term or field, found nothing" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.FIELD: + return lunr.QueryParser.parseField + case lunr.QueryLexer.TERM: + return lunr.QueryParser.parseTerm + default: + var errorMessage = "expecting term or field, found '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } + } + + lunr.QueryParser.parseField = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + if (parser.query.allFields.indexOf(lexeme.str) == -1) { + var possibleFields = parser.query.allFields.map(function (f) { return "'" + f + "'" }).join(', '), + errorMessage = "unrecognised field '" + lexeme.str + "', possible fields: " + possibleFields + + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + parser.currentClause.fields = [lexeme.str] + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + var errorMessage = "expecting term, found nothing" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + return lunr.QueryParser.parseTerm + default: + var errorMessage = "expecting term, found '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } + } + + lunr.QueryParser.parseTerm = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + parser.currentClause.term = lexeme.str.toLowerCase() + + if (lexeme.str.indexOf("*") != -1) { + parser.currentClause.usePipeline = false + } + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + parser.nextClause() + return + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + parser.nextClause() + return lunr.QueryParser.parseTerm + case lunr.QueryLexer.FIELD: + parser.nextClause() + return lunr.QueryParser.parseField + case lunr.QueryLexer.EDIT_DISTANCE: + return lunr.QueryParser.parseEditDistance + case lunr.QueryLexer.BOOST: + return lunr.QueryParser.parseBoost + case lunr.QueryLexer.PRESENCE: + parser.nextClause() + return lunr.QueryParser.parsePresence + default: + var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } + } + + lunr.QueryParser.parseEditDistance = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + var editDistance = parseInt(lexeme.str, 10) + + if (isNaN(editDistance)) { + var errorMessage = "edit distance must be numeric" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + parser.currentClause.editDistance = editDistance + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + parser.nextClause() + return + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + parser.nextClause() + return lunr.QueryParser.parseTerm + case lunr.QueryLexer.FIELD: + parser.nextClause() + return lunr.QueryParser.parseField + case lunr.QueryLexer.EDIT_DISTANCE: + return lunr.QueryParser.parseEditDistance + case lunr.QueryLexer.BOOST: + return lunr.QueryParser.parseBoost + case lunr.QueryLexer.PRESENCE: + parser.nextClause() + return lunr.QueryParser.parsePresence + default: + var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } + } + + lunr.QueryParser.parseBoost = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + var boost = parseInt(lexeme.str, 10) + + if (isNaN(boost)) { + var errorMessage = "boost must be numeric" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + parser.currentClause.boost = boost + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + parser.nextClause() + return + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + parser.nextClause() + return lunr.QueryParser.parseTerm + case lunr.QueryLexer.FIELD: + parser.nextClause() + return lunr.QueryParser.parseField + case lunr.QueryLexer.EDIT_DISTANCE: + return lunr.QueryParser.parseEditDistance + case lunr.QueryLexer.BOOST: + return lunr.QueryParser.parseBoost + case lunr.QueryLexer.PRESENCE: + parser.nextClause() + return lunr.QueryParser.parsePresence + default: + var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } + } + + /** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + ;(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like enviroments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + root.lunr = factory() + } + }(this, function () { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return lunr + })) + })(); \ No newline at end of file diff --git a/assets/js/search.js b/assets/js/search.js new file mode 100644 index 0000000..f7e7482 --- /dev/null +++ b/assets/js/search.js @@ -0,0 +1,41 @@ +function displayResults (results, store) { + const searchResults = document.getElementById('results'); + if (results.length) { + let resultList = ''; + for (const n in results) { + const item = store[results[n].ref]; + resultList += '' + resultList += '

    ' + item.content.substring(0, 150) + '...

    ' + } + searchResults.innerHTML = resultList; + } else { + searchResults.innerHTML = 'No results found.'; + } +} +const params = new URLSearchParams(window.location.search); +const query = params.get('query'); +if (query) { + document.getElementById('search-input').setAttribute('value', query); + const idx = lunr(function () { + this.ref('id') + this.field('title', { + boost: 15 + }) + this.field('tags') + this.field('content', { + boost: 10 + }) + for (const key in window.store) { + this.add({ + id: key, + title: window.store[key].title, + tags: window.store[key].tags, + content: window.store[key].content + }) + } + }) + const results = idx.search(query); + displayResults(results, window.store) +} + + diff --git a/content/search/_index.md b/content/search/_index.md new file mode 100644 index 0000000..45ce85d --- /dev/null +++ b/content/search/_index.md @@ -0,0 +1,3 @@ +--- +title: Search me! +--- \ No newline at end of file diff --git a/layouts/partials/about.html b/layouts/partials/about.html index 29869da..346de25 100644 --- a/layouts/partials/about.html +++ b/layouts/partials/about.html @@ -14,3 +14,4 @@ {{ end }} +{{ partial "search-form.html" . }} diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html index 6ac089d..45819fd 100644 --- a/layouts/partials/footer.html +++ b/layouts/partials/footer.html @@ -3,6 +3,7 @@

    {"powered_by": [{{- range $i, $link := .Site.Params.powerLinks }}{{ if $i }}, {{ end }}"{{ $link.title }}"{{ end }}]}
    <view source>

    +{{ partial "search-index.html" .}} {{ if (findRE " diff --git a/layouts/partials/search-form.html b/layouts/partials/search-form.html new file mode 100644 index 0000000..71cfa6e --- /dev/null +++ b/layouts/partials/search-form.html @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/layouts/partials/search-index.html b/layouts/partials/search-index.html new file mode 100644 index 0000000..5415627 --- /dev/null +++ b/layouts/partials/search-index.html @@ -0,0 +1,16 @@ + +{{ $jsLunr := resources.Get "js/lunr.js" | minify }} + +{{ $jsSearch := resources.Get "js/search.js" | minify }} + \ No newline at end of file diff --git a/layouts/search/list.html b/layouts/search/list.html new file mode 100644 index 0000000..82bb25f --- /dev/null +++ b/layouts/search/list.html @@ -0,0 +1,9 @@ +{{ define "main" }} +{{ partial "search-form.html" . }} + +
      +
    • + Enter a keyword above to search this site. +
    • +
    +{{ end }} \ No newline at end of file From a292270b11e61d55fe1a0910284ed24065d1fb4b Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 15 Jan 2024 17:07:23 -0600 Subject: [PATCH 21/69] search styling work... --- assets/js/search.js | 2 +- layouts/partials/search-form.html | 8 +++--- static/css/custom.css | 45 +++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 6 deletions(-) diff --git a/assets/js/search.js b/assets/js/search.js index f7e7482..b89362e 100644 --- a/assets/js/search.js +++ b/assets/js/search.js @@ -15,7 +15,7 @@ function displayResults (results, store) { const params = new URLSearchParams(window.location.search); const query = params.get('query'); if (query) { - document.getElementById('search-input').setAttribute('value', query); + document.getElementById('search-query').setAttribute('value', query); const idx = lunr(function () { this.ref('id') this.field('title', { diff --git a/layouts/partials/search-form.html b/layouts/partials/search-form.html index 71cfa6e..847e55b 100644 --- a/layouts/partials/search-form.html +++ b/layouts/partials/search-form.html @@ -1,7 +1,5 @@ \ No newline at end of file diff --git a/static/css/custom.css b/static/css/custom.css index dcc3109..c4cfff5 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -216,4 +216,49 @@ code, kbd, samp { color: var(--code); +} + +/* search box styling */ +form { + display: flex; + flex-direction: row; + border-radius: 0.25rem; + margin: 0.25rem; + height: 1.5rem; +} + +input { + flex-grow: 2; + border: none; + background-color: var(--off-bg); + /* border-radius: 0.25rem; */ + color: var(--off-fg); +} + +input:focus { + outline: none; +} + +input:placeholder-shown { + font-style: italic; +} + +form:focus-within { + outline: 1px solid var(--logo); + /* border-radius: 0.25rem; */ +} + +/* form input { + border-radius: 0.25rem; + margin: 0.25rem; + background-color: var(--off-bg); +} */ + +form button { + /* border-radius: 0.25rem; + margin: 0.25rem; */ + outline: none; + border: none; + background-color: var(--off-bg); + color: var(--logo); } \ No newline at end of file From a70c866dd0b84d349eac85aa0e89f845b49d8d33 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 15 Jan 2024 18:12:56 -0600 Subject: [PATCH 22/69] additional search tweaks --- assets/js/search.js | 5 ++++- layouts/partials/search-form.html | 2 +- layouts/partials/search-index.html | 1 + layouts/search/list.html | 2 +- static/css/custom.css | 25 +++++++------------------ 5 files changed, 14 insertions(+), 21 deletions(-) diff --git a/assets/js/search.js b/assets/js/search.js index b89362e..cf4d850 100644 --- a/assets/js/search.js +++ b/assets/js/search.js @@ -5,7 +5,10 @@ function displayResults (results, store) { for (const n in results) { const item = store[results[n].ref]; resultList += '
  1. ' + item.title + '
  2. ' - resultList += '

    ' + item.content.substring(0, 150) + '...

    ' + if (item.description) + resultList += '

    ' + item.description + '

    ' + else + resultList += '

    ' + item.content.substring(0, 150) + '...

    ' } searchResults.innerHTML = resultList; } else { diff --git a/layouts/partials/search-form.html b/layouts/partials/search-form.html index 847e55b..d0c1455 100644 --- a/layouts/partials/search-form.html +++ b/layouts/partials/search-form.html @@ -1,5 +1,5 @@ \ No newline at end of file diff --git a/layouts/partials/search-index.html b/layouts/partials/search-index.html index 5415627..4276532 100644 --- a/layouts/partials/search-index.html +++ b/layouts/partials/search-index.html @@ -5,6 +5,7 @@ "title": "{{ .Title }}", "tags": [{{ range .Params.Tags }}"{{ . }}",{{ end }}], "content": {{ .Content | plainify }}, + "description": {{ .Description | plainify }}, "url": "{{ .Permalink }}" }, {{ end }} diff --git a/layouts/search/list.html b/layouts/search/list.html index 82bb25f..3edd248 100644 --- a/layouts/search/list.html +++ b/layouts/search/list.html @@ -1,6 +1,6 @@ {{ define "main" }} {{ partial "search-form.html" . }} - +
    • Enter a keyword above to search this site. diff --git a/static/css/custom.css b/static/css/custom.css index c4cfff5..7c4eedb 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -223,42 +223,31 @@ form { display: flex; flex-direction: row; border-radius: 0.25rem; - margin: 0.25rem; - height: 1.5rem; + outline: 0.25rem solid var(--bg); } input { flex-grow: 2; border: none; background-color: var(--off-bg); - /* border-radius: 0.25rem; */ color: var(--off-fg); + height: 1.5rem; + border-radius: 0.25rem; + padding-left: 0.5rem; + font-family: var(--font-monospace); } input:focus { outline: none; } -input:placeholder-shown { - font-style: italic; -} - form:focus-within { outline: 1px solid var(--logo); - /* border-radius: 0.25rem; */ } -/* form input { - border-radius: 0.25rem; - margin: 0.25rem; - background-color: var(--off-bg); -} */ - form button { - /* border-radius: 0.25rem; - margin: 0.25rem; */ outline: none; border: none; background-color: var(--off-bg); - color: var(--logo); -} \ No newline at end of file + color: var(--link); +} From d6928214ee615dcd09194647cb6067e7f84977d7 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 15 Jan 2024 18:28:33 -0600 Subject: [PATCH 23/69] torchlight: don't highlight series or tags --- torchlight.config.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/torchlight.config.js b/torchlight.config.js index 81c3bea..202e334 100644 --- a/torchlight.config.js +++ b/torchlight.config.js @@ -58,7 +58,9 @@ module.exports = { // appear, the file will be ignored. excludePatterns: [ '/node_modules/', - '/vendor/' + '/vendor/', + '/series/', + '/tags/' ] } } From d9f8abc7be0d651bb94634c82e530c6bf7a9093a Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 15 Jan 2024 19:19:27 -0600 Subject: [PATCH 24/69] change title of search results page --- content/search/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/search/_index.md b/content/search/_index.md index 45ce85d..d810fcb 100644 --- a/content/search/_index.md +++ b/content/search/_index.md @@ -1,3 +1,3 @@ --- -title: Search me! +title: Search Results Page --- \ No newline at end of file From d7b7a2bccaa160f7535593f1097f83903cefe38d Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Tue, 16 Jan 2024 11:24:35 -0600 Subject: [PATCH 25/69] add transitions to searchbox --- static/css/custom.css | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/static/css/custom.css b/static/css/custom.css index 7c4eedb..e7131a2 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -224,6 +224,8 @@ form { flex-direction: row; border-radius: 0.25rem; outline: 0.25rem solid var(--bg); + width: 240px; + transition: width .2s ease-in-out, outline .2s ease-in-out; } input { @@ -243,6 +245,7 @@ input:focus { form:focus-within { outline: 1px solid var(--logo); + width: 100%; } form button { @@ -250,4 +253,4 @@ form button { border: none; background-color: var(--off-bg); color: var(--link); -} +} \ No newline at end of file From 2a960fe39197867f36f1cb852280cbb803d44b3b Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Tue, 16 Jan 2024 12:03:24 -0600 Subject: [PATCH 26/69] add attribution to search.js --- assets/js/search.js | 1 + 1 file changed, 1 insertion(+) diff --git a/assets/js/search.js b/assets/js/search.js index cf4d850..d2cf0ad 100644 --- a/assets/js/search.js +++ b/assets/js/search.js @@ -1,3 +1,4 @@ +// based on https://victoria.dev/blog/add-search-to-hugo-static-sites-with-lunr/ function displayResults (results, store) { const searchResults = document.getElementById('results'); if (results.length) { From c48195b8c51fd69693670fe65a64a1b20849c59e Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Tue, 16 Jan 2024 12:17:54 -0600 Subject: [PATCH 27/69] change prompt on search results page --- layouts/search/list.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/search/list.html b/layouts/search/list.html index 3edd248..d51d35a 100644 --- a/layouts/search/list.html +++ b/layouts/search/list.html @@ -3,7 +3,7 @@
      • - Enter a keyword above to search this site. + What is it you desire?
      {{ end }} \ No newline at end of file From ef2039b41bae1b4e6b1eeaae7b9a033062ab60b1 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Tue, 16 Jan 2024 13:02:35 -0600 Subject: [PATCH 28/69] begin adding/expanding alt text --- content/404.md | 2 +- .../posts/getting-started-vra-rest-api/index.md | 2 +- .../posts/removing-recreating-vcls-vms/index.md | 2 +- content/simplex.md | 16 ++++++++-------- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/content/404.md b/content/404.md index 9298bdd..6eff99f 100644 --- a/content/404.md +++ b/content/404.md @@ -6,7 +6,7 @@ comments = true +++ We're not sure what you were looking for but it's not here. -![](/images/nothing-to-see-here.gif) +![Animated GIF from the movie "The Naked Gun". A man in the foreground proclaims "Please disperse. Nothing to see here." while a building explodes in the background.](/images/nothing-to-see-here.gif) Maybe head back [home](/)? diff --git a/content/posts/getting-started-vra-rest-api/index.md b/content/posts/getting-started-vra-rest-api/index.md index 0c076ec..467640a 100644 --- a/content/posts/getting-started-vra-rest-api/index.md +++ b/content/posts/getting-started-vra-rest-api/index.md @@ -312,7 +312,7 @@ This doesn't give me the *name* of the regions, but I could use the `_links.regi You'll notice that HTTPie also prettifies the JSON response to make it easy for humans to parse. This is great for experimenting with requests against different API endpoints and getting a feel for what data can be found where. And firing off tests in HTTPie can be a lot quicker (and easier to format) than with other tools. Now let's take what we've learned and see about implementing it as vRO actions. -[^pie]: ![](pie.gif) +[^pie]: ![GIF from Supernatural wherein Dean ogles some delicious pie.](pie.gif) [^token]: Well, most of it. [^foreshadowing]: That knowledge will come in handy later. ### vRealize Orchestrator actions diff --git a/content/posts/removing-recreating-vcls-vms/index.md b/content/posts/removing-recreating-vcls-vms/index.md index 354189d..f5c287e 100644 --- a/content/posts/removing-recreating-vcls-vms/index.md +++ b/content/posts/removing-recreating-vcls-vms/index.md @@ -36,7 +36,7 @@ Fortunately there's a somewhat-hidden way to disable (and re-enable) vCLS on a p Disabling vCLS will break DRS, and could have other unintended side effects. Don't do this in prod if you can avoid it. {{% /notice %}} -[^off-and-on]: ![](off-and-on.gif) +[^off-and-on]: ![GIF from The IT Crowd: "Have you tried turning it off and back on again?"](off-and-on.gif) ### Find the cluster's domain ID It starts with determining the affected cluster's domain ID, which is very easy to do once you know where to look. Simply browse to the cluster object in the vSphere inventory, and look at the URL: diff --git a/content/simplex.md b/content/simplex.md index 3bdf23f..70afed5 100644 --- a/content/simplex.md +++ b/content/simplex.md @@ -10,7 +10,7 @@ title = "SimpleX Chat" +++ *You can **[contact me on SimpleX Chat](https://l.runtimeterror.dev/simplex-chat-invite)** by clicking that link or scanning the QR code below.* -![](/images/simplex-invite.png) +![QR code](/images/simplex-invite.png) [SimpleX Chat](https://simplex.chat/) is a secure messaging solution with a strong emphasis on user privacy. It's (naturally) end-to-end encrypted, doesn't require (or collect) *any* information about you in order to sign up, doesn't use any persistent user identifiers (not even a randomly-generated one), is fully decentralized, and is *not* affiliated with any cryptocurrency project/scam. @@ -19,37 +19,37 @@ Incoming messages are routed through a pool of servers so that your conversation The app is also packed with other features like disappearing messages, encrypted file transfers, encrypted voice messages, encrypted audio and video calls, decentralized private groups, and a cool incognito mode which connects new conversations to a randomly-generated profile instead of your primary one. There's even a [CLI client](https://github.com/simplex-chat/simplex-chat/blob/stable/docs/CLI.md)! ## Servers -[![](https://status.vpota.to/api/badge/11/status)](https://status.vpota.to/status/simplex) +[![Status badge](https://status.runtimeterror.dev/api/badge/11/status)](https://status.runtimeterror.dev/status/simplex) You can easily host your own [simplexmq server](https://github.com/simplex-chat/simplexmq) for handling your inbound message queue, and I've done just that; in fact, I've deployed three! And, as one of my closest internet friends, *you're welcome to use them as well.* Just add these in the SimpleX app at **Settings > Network & servers > SMP servers > + Add server...**. Enable the option to use them for new connections, and they'll be added to the pool used for incoming messages in new conversations. If you want to use them immediately for existing conversations, go into each conversation's options menu and use the **Switch receiving address** option. You can also *disable* the option to use the default servers for new conversations if you only want messages to be routed through specific servers, but that does increase the likelikhood of concurrent conversations being routed the same way. More servers, more path options, less metadata in any one place. --- -![](/images/smp-vpota-to.png) +![QR code](/images/smp-vpota-to.png) `smp://kYx5LmVD9FMM8hJN4BQqL4WmeUNZn8ipXsX2UkBoiHE=@smp.vpota.to` | | | | --- | --- | -| [![](https://status.vpota.to/api/badge/6/uptime)](https://status.vpota.to/status/simplex) | [[details](https://l.runtimeterror.dev/smp_status)] | +| [![Status badge](https://status.runtimeterror.dev/api/badge/6/uptime)](https://status.runtimeterror.dev/status/simplex) | [[details](https://l.runtimeterror.dev/smp_status)] | --- -![](/images/smp1-vpota-to.png) +![QR code](/images/smp1-vpota-to.png) `smp://TbUrGydawdVKID0Lvix14UkaN-WarFgqXx4kaEG8Trw=@smp1.vpota.to` | | | | --- | --- | -| [![](https://status.vpota.to/api/badge/4/uptime)](https://status.vpota.to/status/simplex) | [[details](https://l.runtimeterror.dev/smp1_status)] | +| [![Status badge](https://status.runtimeterror.dev/api/badge/4/uptime)](https://status.runtimeterror.dev/status/simplex) | [[details](https://l.runtimeterror.dev/smp1_status)] | --- -![](/images/smp2-vpota-to.png) +![QR code](/images/smp2-vpota-to.png) `smp://tNfQisxTQ9MhKpFDTbx9RnjgWigtxF1a26jroy5-rR4=@smp2.vpota.to` | | | | --- | --- | -| [![](https://status.vpota.to/api/badge/5/uptime)](https://status.vpota.to/status/simplex) | [[details](https://l.runtimeterror.dev/smp2_status)] | +| [![Status badge](https://status.runtimeterror.dev/api/badge/5/uptime)](https://status.runtimeterror.dev/status/simplex) | [[details](https://l.runtimeterror.dev/smp2_status)] | From 8fbba3b1ff3511a7593b5c9588c0d6f741682b23 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Tue, 16 Jan 2024 14:12:57 -0600 Subject: [PATCH 29/69] add scroll-to-top button --- assets/js/back-to-top.js | 1 + config/_default/hugo.toml | 2 +- layouts/_default/index.json | 7 ------- layouts/partials/footer.html | 12 ++++++++++++ 4 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 assets/js/back-to-top.js delete mode 100644 layouts/_default/index.json diff --git a/assets/js/back-to-top.js b/assets/js/back-to-top.js new file mode 100644 index 0000000..6be04a7 --- /dev/null +++ b/assets/js/back-to-top.js @@ -0,0 +1 @@ +"use strict";function addBackToTop(){var o,t,e,n,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=i.backgroundColor,d=void 0===r?"#000":r,a=i.cornerOffset,c=void 0===a?20:a,s=i.diameter,l=void 0===s?56:s,u=i.ease,p=void 0===u?function(o){return.5*(1-Math.cos(Math.PI*o))}:u,m=i.id,h=void 0===m?"back-to-top":m,b=i.innerHTML,v=void 0===b?'':b,f=i.onClickScrollTo,x=void 0===f?0:f,w=i.scrollContainer,g=void 0===w?document.body:w,k=i.scrollDuration,y=void 0===k?100:k,T=i.showWhenScrollTopIs,M=void 0===T?1:T,z=i.size,E=void 0===z?l:z,C=i.textColor,L=void 0===C?"#fff":C,N=i.zIndex,I=void 0===N?1:N,A=g===document.body,B=A&&document.documentElement;o=Math.round(.43*E),t=Math.round(.29*E),e="#"+h+"{background:"+d+";-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;bottom:"+c+"px;-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.26);-moz-box-shadow:0 2px 5px 0 rgba(0,0,0,.26);box-shadow:0 2px 5px 0 rgba(0,0,0,.26);color:"+L+";cursor:pointer;display:block;height:"+E+"px;opacity:1;outline:0;position:fixed;right:"+c+"px;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-transition:bottom .2s,opacity .2s;-o-transition:bottom .2s,opacity .2s;-moz-transition:bottom .2s,opacity .2s;transition:bottom .2s,opacity .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:"+E+"px;z-index:"+I+"}#"+h+" svg{display:block;fill:currentColor;height:"+o+"px;margin:"+t+"px auto 0;width:"+o+"px}#"+h+".hidden{bottom:-"+E+"px;opacity:0}",(n=document.createElement("style")).appendChild(document.createTextNode(e)),document.head.insertAdjacentElement("afterbegin",n);var D=function(){var o=document.createElement("div");return o.id=h,o.className="hidden",o.innerHTML=v,o.addEventListener("click",function(o){o.preventDefault(),function(){var o="function"==typeof x?x():x,t=window,e=t.performance,n=t.requestAnimationFrame;if(y<=0||void 0===e||void 0===n)return q(o);var i=e.now(),r=j(),d=r-o;n(function o(t){var e=Math.min((t-i)/y,1);q(r-Math.round(p(e)*d)),e<1&&n(o)})}()}),document.body.appendChild(o),o}(),H=!0;function S(){j()>=M?function(){if(!H)return;D.className="",H=!1}():function(){if(H)return;D.className="hidden",H=!0}()}function j(){return g.scrollTop||B&&document.documentElement.scrollTop||0}function q(o){g.scrollTop=o,B&&(document.documentElement.scrollTop=o)}(A?window:g).addEventListener("scroll",S),S()} \ No newline at end of file diff --git a/config/_default/hugo.toml b/config/_default/hugo.toml index 7d181e6..e85d6cf 100644 --- a/config/_default/hugo.toml +++ b/config/_default/hugo.toml @@ -11,7 +11,7 @@ enableInlineShortcodes = true # sectionPagesMenu = "main" [outputs] - home = ['html', 'rss', 'json'] + home = ['html', 'rss'] section = ['html'] taxonomy = ['html',] term = ['html', 'rss'] diff --git a/layouts/_default/index.json b/layouts/_default/index.json deleted file mode 100644 index fdb9ebc..0000000 --- a/layouts/_default/index.json +++ /dev/null @@ -1,7 +0,0 @@ -{{- $.Scratch.Add "index" slice -}} -{{- range .Site.Pages -}} - {{- if ne .Type "search" -}} - {{- $.Scratch.Add "index" (dict "title" .Title "body" .Plain "link" .Permalink "section" .Section "tags" .Params.tags) -}} - {{- end -}} -{{- end -}} -{{- jsonify (uniq ($.Scratch.Get "index")) -}} \ No newline at end of file diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html index 45819fd..0b70a07 100644 --- a/layouts/partials/footer.html +++ b/layouts/partials/footer.html @@ -3,7 +3,19 @@

      {"powered_by": [{{- range $i, $link := .Site.Params.powerLinks }}{{ if $i }}, {{ end }}"{{ $link.title }}"{{ end }}]}
      <view source>

      + +{{ $jsToTop := resources.Get "js/back-to-top.js" | minify }} + + + + {{ partial "search-index.html" .}} + + {{ if (findRE " From 4488bf43e25901c2266aefbb4573d6345d2adb52 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Tue, 16 Jan 2024 14:16:44 -0600 Subject: [PATCH 30/69] style status.lol container more consistently --- static/css/custom.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/css/custom.css b/static/css/custom.css index e7131a2..86e0365 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -177,7 +177,7 @@ ul.pagination li { /* statuslol overrides */ .statuslol { - background: var(--inner-bg) !important; + background: var(--off-bg) !important; flex-direction:column } From 8ad0d1170d36c688b1c514eb39667150def67adf Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Tue, 16 Jan 2024 16:33:08 -0600 Subject: [PATCH 31/69] fix simplex status links --- content/simplex.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/content/simplex.md b/content/simplex.md index 3bdf23f..70afed5 100644 --- a/content/simplex.md +++ b/content/simplex.md @@ -10,7 +10,7 @@ title = "SimpleX Chat" +++ *You can **[contact me on SimpleX Chat](https://l.runtimeterror.dev/simplex-chat-invite)** by clicking that link or scanning the QR code below.* -![](/images/simplex-invite.png) +![QR code](/images/simplex-invite.png) [SimpleX Chat](https://simplex.chat/) is a secure messaging solution with a strong emphasis on user privacy. It's (naturally) end-to-end encrypted, doesn't require (or collect) *any* information about you in order to sign up, doesn't use any persistent user identifiers (not even a randomly-generated one), is fully decentralized, and is *not* affiliated with any cryptocurrency project/scam. @@ -19,37 +19,37 @@ Incoming messages are routed through a pool of servers so that your conversation The app is also packed with other features like disappearing messages, encrypted file transfers, encrypted voice messages, encrypted audio and video calls, decentralized private groups, and a cool incognito mode which connects new conversations to a randomly-generated profile instead of your primary one. There's even a [CLI client](https://github.com/simplex-chat/simplex-chat/blob/stable/docs/CLI.md)! ## Servers -[![](https://status.vpota.to/api/badge/11/status)](https://status.vpota.to/status/simplex) +[![Status badge](https://status.runtimeterror.dev/api/badge/11/status)](https://status.runtimeterror.dev/status/simplex) You can easily host your own [simplexmq server](https://github.com/simplex-chat/simplexmq) for handling your inbound message queue, and I've done just that; in fact, I've deployed three! And, as one of my closest internet friends, *you're welcome to use them as well.* Just add these in the SimpleX app at **Settings > Network & servers > SMP servers > + Add server...**. Enable the option to use them for new connections, and they'll be added to the pool used for incoming messages in new conversations. If you want to use them immediately for existing conversations, go into each conversation's options menu and use the **Switch receiving address** option. You can also *disable* the option to use the default servers for new conversations if you only want messages to be routed through specific servers, but that does increase the likelikhood of concurrent conversations being routed the same way. More servers, more path options, less metadata in any one place. --- -![](/images/smp-vpota-to.png) +![QR code](/images/smp-vpota-to.png) `smp://kYx5LmVD9FMM8hJN4BQqL4WmeUNZn8ipXsX2UkBoiHE=@smp.vpota.to` | | | | --- | --- | -| [![](https://status.vpota.to/api/badge/6/uptime)](https://status.vpota.to/status/simplex) | [[details](https://l.runtimeterror.dev/smp_status)] | +| [![Status badge](https://status.runtimeterror.dev/api/badge/6/uptime)](https://status.runtimeterror.dev/status/simplex) | [[details](https://l.runtimeterror.dev/smp_status)] | --- -![](/images/smp1-vpota-to.png) +![QR code](/images/smp1-vpota-to.png) `smp://TbUrGydawdVKID0Lvix14UkaN-WarFgqXx4kaEG8Trw=@smp1.vpota.to` | | | | --- | --- | -| [![](https://status.vpota.to/api/badge/4/uptime)](https://status.vpota.to/status/simplex) | [[details](https://l.runtimeterror.dev/smp1_status)] | +| [![Status badge](https://status.runtimeterror.dev/api/badge/4/uptime)](https://status.runtimeterror.dev/status/simplex) | [[details](https://l.runtimeterror.dev/smp1_status)] | --- -![](/images/smp2-vpota-to.png) +![QR code](/images/smp2-vpota-to.png) `smp://tNfQisxTQ9MhKpFDTbx9RnjgWigtxF1a26jroy5-rR4=@smp2.vpota.to` | | | | --- | --- | -| [![](https://status.vpota.to/api/badge/5/uptime)](https://status.vpota.to/status/simplex) | [[details](https://l.runtimeterror.dev/smp2_status)] | +| [![Status badge](https://status.runtimeterror.dev/api/badge/5/uptime)](https://status.runtimeterror.dev/status/simplex) | [[details](https://l.runtimeterror.dev/smp2_status)] | From b15febb5e0a8f20ca0e0d3c655473af4b7768e70 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Tue, 16 Jan 2024 16:52:50 -0600 Subject: [PATCH 32/69] add missing alt text --- .../3d-modeling-and-printing-on-chrome-os/index.md | 12 ++++++------ .../index.md | 4 ++-- content/posts/spotlight-on-torchlight/index.md | 2 +- .../tanzu-community-edition-k8s-homelab/index.md | 3 ++- .../posts/vra8-custom-provisioning-part-two/index.md | 4 ++-- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/content/posts/3d-modeling-and-printing-on-chrome-os/index.md b/content/posts/3d-modeling-and-printing-on-chrome-os/index.md index c876383..950e72b 100644 --- a/content/posts/3d-modeling-and-printing-on-chrome-os/index.md +++ b/content/posts/3d-modeling-and-printing-on-chrome-os/index.md @@ -18,12 +18,12 @@ That's a pretty sweet setup, but I still needed a way to convert STL 3D models i Enter "Crostini," Chrome OS's [Linux (Beta) feature](https://chromium.googlesource.com/chromiumos/docs/+/master/containers_and_vms.md). It consists of a hardened Linux VM named `termina` which runs (by default) a Debian Buster LXD container named `penguin` (though you can spin up just about any container for which you can find an [image](https://us.images.linuxcontainers.org/)) and some fancy plumbing to let Chrome OS and Linux interact in specific clearly-defined ways. It's a brilliant balance between offering the flexibility of Linux while preserving Chrome OS's industry-leading security posture. -![Neofetch in the Crostini terminal](lhTnVwCO3.png) +![Screenshot of the 'neofetch' utility](lhTnVwCO3.png) There are plenty of great guides (like [this one](https://www.computerworld.com/article/3314739/linux-apps-on-chrome-os-an-easy-to-follow-guide.html)) on how to get started with Linux on Chrome OS so I won't rehash those steps here. One additional step you will probably want to take is make sure that your Chromebook is configured to enable hyperthreading, as it may have [hyperthreading disabled by default](https://support.google.com/chromebook/answer/9340236). Just plug `chrome://flags/#scheduler-configuration` into Chrome's address bar, set it to `Enables Hyper-Threading on relevant CPUs`, and then click the button to restart your Chromebook. You'll thank me later. -![Enabling hyperthreading](LHax6lAwh.png) +![Screenshot of ChromeOS flags page showing that '#scheduler-configuration' is set to 'Enables Hyper-Threading on relevant CPUs](LHax6lAwh.png) ### The Software I settled on using [FreeCAD](https://www.freecadweb.org/) for parametric modeling and [Ultimaker Cura](https://ultimaker.com/software/ultimaker-cura) for my GCODE slicer, but unfortunately getting them working cleanly wasn't entirely straightforward. @@ -68,7 +68,7 @@ Comment[de_DE]=Feature-basierter parametrischer Modellierer MimeType=application/x-extension-fcstd ``` That's it! Get on with your 3D-modeling bad self. -![FreeCAD](qDTXt1jp3.png) +![Screenshot of FreeCAD showing a 3d model being worked on](qDTXt1jp3.png) Now that you've got a model, be sure to [export it as an STL mesh](https://wiki.freecadweb.org/Export_to_STL_or_OBJ) so you can import it into your slicer. #### Ultimaker Cura @@ -88,12 +88,12 @@ sudo apt update && sudo apt install menulibre # [tl! .cmd:2] menulibre ``` Just plug in the relevant details (you can grab the appropriate icon [here](https://github.com/Ultimaker/Cura/blob/master/icons/cura-128.png)), hit the filing cabinet Save icon, and you should then be able to search for Cura from the Chrome OS launcher. -![Using menulibre to create the launcher shortcut](VTISYOKHO.png) +![Screenshot demoing the use of 'menulibre' to create the launcher shortcut](VTISYOKHO.png) -![Ultimaker Cura](f8nRJcyI6.png) +![Screenshot of Ultimake Cura software](f8nRJcyI6.png) From there, just import the STL mesh, configure the appropriate settings, slice, and save the resulting GCODE. You can then just upload the GCODE straight to The Spaghetti Detective and kick off the print. -![Successful print, designed and sliced on Chrome OS!](2g57odtq2.jpeg) +![A 3d-printed adapter for mounting a rear reflector on a bicycle, designed, sliced, and printed from a Chromebook](2g57odtq2.jpeg) Nice! \ No newline at end of file diff --git a/content/posts/abusing-chromes-custom-search-engines-for-fun-and-profit/index.md b/content/posts/abusing-chromes-custom-search-engines-for-fun-and-profit/index.md index d3ceca0..39ff9a3 100644 --- a/content/posts/abusing-chromes-custom-search-engines-for-fun-and-profit/index.md +++ b/content/posts/abusing-chromes-custom-search-engines-for-fun-and-profit/index.md @@ -17,7 +17,7 @@ Point your browser to `chrome://settings/searchEngines` to see which sites are r Each of these search engine entries has three parts: a name ("Search engine"), a Keyword, and a Query URL. The "Search engine" title is just what will appear in the Omnibox when the search engine gets triggered, the Keyword is what you'll type in the Omnibox to trigger it, and the Query URL tells Chrome how to handle the search. All you have to do is type the keyword, hit your Tab key to activate the search, input your query, and hit Enter: ![Using a custom search engine](o_o7rt4pA.gif) -For sites which register themselves automatically, the keyword is often set to something like `domain.tld` so it might make sense to assign it as something shorter or more descriptive. +For sites which register themselves automatically, the keyword is often set to something like `domain.tld` so it might make sense to assign it as something shorter or more descriptive. The Query URL is basically just what appears in the address bar when you search the site directly, with `%s` placed where your query text would normally go. You can view these details for a given search entry by tapping the three-dot menu button and selecting "Edit", and you can manually create new entries by hitting that big friendly "Add" button: ![Editing a search engine](fmLDUWjia.png) @@ -55,7 +55,7 @@ This works for pretty much any site which parses the URL to render certain conte Your Query URL doesn't even need to include a query at all! You can use the Custom Search Engines as a sort of hyper-fast shortcut to pages you visit frequently. If I create a new entry with the Keyword `searchax` and `abusing-chromes-custom-search-engines-for-fun-and-profit` as the query URL, I can quickly open to this page by typing `searchax[tab][enter]`: ![Custom search shortener](YilNCaHil.png) -I use that trick pretty regularly for getting back to vCenter appliance management interfaces without having to type out the full FQDN and port number and all that. +I use that trick pretty regularly for getting back to vCenter appliance management interfaces without having to type out the full FQDN and port number and all that. ------ diff --git a/content/posts/spotlight-on-torchlight/index.md b/content/posts/spotlight-on-torchlight/index.md index 4dd2f0c..6faf1e4 100644 --- a/content/posts/spotlight-on-torchlight/index.md +++ b/content/posts/spotlight-on-torchlight/index.md @@ -536,7 +536,7 @@ Serving HTTP on 0.0.0.0 port 1313 (http://0.0.0.0:1313/) ... # [tl! focus:1] #### Netlify Setting up Netlify to leverage the Torchlight API is kind of similar. I'll start with logging in to the [Netlify dashboard](https://app.netlify.com) and navigating to **Site Configuration > Environment Variables**. There, I'll click on **Add a variable > Add a ingle variable**. I'll give the new variable a key of `TORCHLIGHT_TOKEN` and set its value to the token I obtained earlier. -![](netlify-env-var.png) +![Screenshot showing the creation of the 'TORCHLIGHT_TOKEN' variable in Netlify](netlify-env-var.png) Once that's done, I edit the `netlify.toml` file at the root of my site repo to alter the build commands: ```toml diff --git a/content/posts/tanzu-community-edition-k8s-homelab/index.md b/content/posts/tanzu-community-edition-k8s-homelab/index.md index 65fa9dc..f6d26f4 100644 --- a/content/posts/tanzu-community-edition-k8s-homelab/index.md +++ b/content/posts/tanzu-community-edition-k8s-homelab/index.md @@ -983,7 +983,8 @@ I'll define the new subnet as `192.168.1.0/24`. Once I enable the option to *Che ![A new (but empty) subnet](new_subnet_pre_scan.png) It shows the scanner associated with the subnet, but no data yet. I'll need to wait a few minutes for the first scan to kick off (at the five-minute interval I defined in the configuration). -![](five_minutes.gif) + +![GIF which says 'Five Minutes Later!'](five_minutes.gif) ![Newly discovered IPs!](newly-discovered_IPs.png) Woah, it actually works! diff --git a/content/posts/vra8-custom-provisioning-part-two/index.md b/content/posts/vra8-custom-provisioning-part-two/index.md index 2dbaf4b..7bc25c4 100644 --- a/content/posts/vra8-custom-provisioning-part-two/index.md +++ b/content/posts/vra8-custom-provisioning-part-two/index.md @@ -331,9 +331,9 @@ I'll do that with another scriptable task element, named `Apply new names`, whic {{% notice note "Binding a workflow output" %}} To easily create a new workflow output and bind it to a task's output, click the task's **Add New** option like usual: -![](add_new.png) +![Screenshot showing the creation of a new output](add_new.png) Select **Output** at the top of the *New Variable* dialog and the complete the form with the other required details: -![](new_output_parameter.png) +![Screenshot showing the new output parameter with 'Name: resourceNames' and 'Type: string'](new_output_parameter.png) {{% /notice %}} From b66ad03991f878c1cb4100777771eaae0402e0c8 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Wed, 17 Jan 2024 15:43:14 -0600 Subject: [PATCH 33/69] update post: add note about another libvirt issue --- .../create-vms-chromebook-hashicorp-vagrant/index.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/content/posts/create-vms-chromebook-hashicorp-vagrant/index.md b/content/posts/create-vms-chromebook-hashicorp-vagrant/index.md index 3526ee6..9a1bd5c 100644 --- a/content/posts/create-vms-chromebook-hashicorp-vagrant/index.md +++ b/content/posts/create-vms-chromebook-hashicorp-vagrant/index.md @@ -1,7 +1,7 @@ --- title: "Create Virtual Machines on a Chromebook with HashiCorp Vagrant" # Title of the blog post. date: 2023-02-20 # Date of post creation. -lastmod: 2023-02-25 +lastmod: 2024-01-17 description: "Pairing the powerful Linux Development Environment on modern Chromebooks with HashiCorp Vagrant to create and manage local virtual machines for development and testing" # Description used for search engine. featured: true # Sets if post is a featured post, making appear on the home page side bar. draft: false # Sets whether to render this page. Draft of true will not be rendered. @@ -57,6 +57,16 @@ echo "remember_owner = 0" | sudo tee -a /etc/libvirt/qemu.conf # [tl! .cmd:1] sudo systemctl restart libvirtd ``` +{{% notice note "Update 2024-01-17" %}} +There seems to be an [issue with libvirt in LXC containers on Debian Bookworm](https://gitlab.com/libvirt/libvirt/-/issues/556), which explains why I was getting errors on `vagrant up` after updating my Crostini environment. + +The workaround is to add another line to `qemu.conf`: +```shell +echo "namespaces = []" | sudo tee -a /etc/libvirt/qemu.conf # [tl! .cmd:1] +sudo systemctl restart libvirtd +``` +{{% /notice %}} + I'm also going to use `rsync` to share a [synced folder](https://developer.hashicorp.com/vagrant/docs/synced-folders/basic_usage) between the host and the VM guest so I'll need to make sure that's installed too: ```shell sudo apt install rsync # [tl! .cmd] From 7bd1a7296f120678c2cd530c710bf5ac528b22b4 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Thu, 18 Jan 2024 16:06:53 -0600 Subject: [PATCH 34/69] taxonomy overhaul --- config/_default/hugo.toml | 2 +- config/_default/menu.toml | 28 ++++++---- content/about.md | 4 +- .../index.md | 1 + .../index.md | 2 +- .../index.md | 4 +- .../index.md | 2 +- .../index.md | 26 ++++----- .../index.md | 4 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../posts/cat-file-without-comments/index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../ditching-vsphere-for-proxmox/index.md | 2 +- .../docker-on-windows-10-with-wsl2/index.md | 1 + .../index.md | 2 +- .../index.md | 2 +- content/posts/esxi-arm-on-quartz64/index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../fixing-403-error-ssc-8-6-vra-idm/index.md | 2 +- .../index.md | 7 ++- .../index.md | 2 +- .../getting-started-vra-rest-api/index.md | 2 +- .../gitea-self-hosted-git-server/index.md | 2 +- content/posts/hello-hugo/index.md | 1 + content/posts/how-to-ask-for-help/index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../notes-on-vra-ha-with-nsx-alb/index.md | 14 ++--- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 20 +++---- .../removing-recreating-vcls-vms/index.md | 2 +- .../index.md | 4 +- .../index.md | 10 ++-- .../salt-state-netdata-tailscale/index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 15 ++--- .../index.md | 2 +- .../posts/spotlight-on-torchlight/index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../posts/tailscale-on-vmware-photon/index.md | 2 +- .../index.md | 2 +- .../posts/tailscale-ssh-serve-funnel/index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 4 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 3 +- .../virtuallypotato-runtimeterror/index.md | 3 +- .../vmware-home-lab-on-intel-nuc-9/index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- layouts/partials/archive.html | 55 +++++++++++-------- layouts/partials/aside.html | 8 +-- torchlight.config.js | 2 +- 77 files changed, 176 insertions(+), 152 deletions(-) diff --git a/config/_default/hugo.toml b/config/_default/hugo.toml index e85d6cf..f7f30ab 100644 --- a/config/_default/hugo.toml +++ b/config/_default/hugo.toml @@ -58,7 +58,7 @@ enableInlineShortcodes = true [taxonomies] tag = "tags" - series = "series" + category = "categories" [minify] disableXML = true diff --git a/config/_default/menu.toml b/config/_default/menu.toml index a4b6fee..a9e3300 100644 --- a/config/_default/menu.toml +++ b/config/_default/menu.toml @@ -5,22 +5,28 @@ # weight = 10 [[main]] - identifier = "projects" - name = "projects" - url = "/series/projects/" + identifier = "posts" + name = "posts" + url = "/" weight = 1 [[main]] - identifier = "tips" - name = "tips" - url = "/series/tips/" - weight = 1 + identifier = "categories" + name = "categories" + url = "/categories/" + weight = 2 [[main]] - identifier = "code" - name = "code" - url = "/series/code/" - weight = 1 + identifier = "tags" + name = "tags" + url = "/tags/" + weight = 3 + +[[main]] + identifier = "about" + name = "about" + url = "/about/" + weight = 4 [[main]] identifier = "virtuallypotato" diff --git a/content/about.md b/content/about.md index ad4599f..932079e 100644 --- a/content/about.md +++ b/content/about.md @@ -11,11 +11,11 @@ You've (somehow) managed to stumble upon my dark corner of the internet[^1]. I've enjoyed tinkering with computers and their code since discovering I could alter variable values in [`GORILLA.BAS`](https://en.wikipedia.org/wiki/Gorillas_%28video_game%29) on my dad's work computer to imbue the thrown bananas with enough explosive power to level the entire city. I thought, "hey, that's neat," and then spent much of my childhood free time learning how *else* I could bend computers to my will. -Once I grew up[^2], I found a career in system administration, and I leveraged my passion for coding to write scripts to help manage systems more efficiently. While managing a global-scale VMware environment, I was tasked with implementing [vRealize Automation](/series/vra8) (now called "Aria Automation"). I didn't realize it at the time but that was the start of my DevOps transformation. I started thinking about infrastructure-as-code, and began using [HashiCorp Packer](https://github.com/jbowdre/packer-vsphere-templates) and a CI/CD pipeline to automatically build fully-up-to-date VM templates on a weekly cadence. +Once I grew up[^2], I found a career in system administration, and I leveraged my passion for coding to write scripts to help manage systems more efficiently. While managing a global-scale VMware environment, I was tasked with implementing [vRealize Automation](/categories/vmware) (now called "Aria Automation"). I didn't realize it at the time but that was the start of my DevOps transformation. I started thinking about infrastructure-as-code, and began using [HashiCorp Packer](https://github.com/jbowdre/packer-vsphere-templates) and a CI/CD pipeline to automatically build fully-up-to-date VM templates on a weekly cadence. I'm now part of a small platform engineering team within that same large corporation, focused on leveraging DevOps thinking and tools to help our internal customers modernize how they operate IT, build code, and ship products, while designing solutions to help them accomplish those goals. It's a great blend of my virtual infrastructure operations background, hobbyist development experience, and hunger for solving problems, and I really enjoy applying these skills to solve interesting challenges at scale. -On my off time, I tinker with new [projects](/series/projects) in my little homelab (and share some of those adventures here). I also help out on Google's product support forums as a [Product Expert](https://productexperts.withgoogle.com/what-it-is), where I support Pixel phones, earbuds, and watches, as well as Chromebooks (primarily with Linux-related queries). Helping users troubleshoot their issues scratches my problem-solving itch, and it keeps me connected with some really great like-minded tech enthusiasts. +On my off time, I tinker with new [projects](/categories/self-hosting) in my little homelab (and share some of those adventures here). I also help out on Google's product support forums as a [Product Expert](https://productexperts.withgoogle.com/what-it-is), where I support Pixel phones, earbuds, and watches, as well as Chromebooks (primarily with Linux-related queries). Helping users troubleshoot their issues scratches my problem-solving itch, and it keeps me connected with some really great like-minded tech enthusiasts. On weekends, I race my daily-driven 2014 Subaru BRZ in local [autocross events](https://l.runtimeterror.dev/my-autox-vids) or wrench on my 1974 Volkswagen Karmann Ghia. diff --git a/content/posts/3d-modeling-and-printing-on-chrome-os/index.md b/content/posts/3d-modeling-and-printing-on-chrome-os/index.md index 950e72b..6b121aa 100644 --- a/content/posts/3d-modeling-and-printing-on-chrome-os/index.md +++ b/content/posts/3d-modeling-and-printing-on-chrome-os/index.md @@ -3,6 +3,7 @@ date: "2020-09-14T08:34:30Z" thumbnail: qDTXt1jp3.png featureImage: qDTXt1jp3.png usePageBundles: true +categories: ChromeOS tags: - linux - chromeos diff --git a/content/posts/abusing-chromes-custom-search-engines-for-fun-and-profit/index.md b/content/posts/abusing-chromes-custom-search-engines-for-fun-and-profit/index.md index 39ff9a3..5c7ba19 100644 --- a/content/posts/abusing-chromes-custom-search-engines-for-fun-and-profit/index.md +++ b/content/posts/abusing-chromes-custom-search-engines-for-fun-and-profit/index.md @@ -1,5 +1,5 @@ --- -series: Tips +categories: Tips date: "2020-09-24T08:34:30Z" thumbnail: fmLDUWjia.png usePageBundles: true diff --git a/content/posts/adding-vm-notes-and-custom-attributes-with-vra8/index.md b/content/posts/adding-vm-notes-and-custom-attributes-with-vra8/index.md index 2492b92..099f069 100644 --- a/content/posts/adding-vm-notes-and-custom-attributes-with-vra8/index.md +++ b/content/posts/adding-vm-notes-and-custom-attributes-with-vra8/index.md @@ -1,5 +1,5 @@ --- -series: vRA8 +categories: VMware date: "2021-06-01T08:34:30Z" thumbnail: -Fuvz-GmF.png usePageBundles: true @@ -11,7 +11,7 @@ tags: title: Adding VM Notes and Custom Attributes with vRA8 --- -*In [past posts](/series/vra8), I started by [creating a basic deployment infrastructure](/vra8-custom-provisioning-part-one) in Cloud Assembly and using tags to group those resources. I then [wrote an integration](/integrating-phpipam-with-vrealize-automation-8) to let vRA8 use phpIPAM for static address assignments. I [implemented a vRO workflow](/vra8-custom-provisioning-part-two) for generating unique VM names which fit an organization's established naming standard, and then [extended the workflow](/vra8-custom-provisioning-part-three) to avoid any naming conflicts in Active Directory and DNS. And, finally, I [created an intelligent provisioning request form in Service Broker](/vra8-custom-provisioning-part-four) to make it easy for users to get the servers they need. That's got the core functionality pretty well sorted, so moving forward I'll be detailing additions that enable new capabilities and enhance the experience.* +*In [past posts](/categories/vmware), I started by [creating a basic deployment infrastructure](/vra8-custom-provisioning-part-one) in Cloud Assembly and using tags to group those resources. I then [wrote an integration](/integrating-phpipam-with-vrealize-automation-8) to let vRA8 use phpIPAM for static address assignments. I [implemented a vRO workflow](/vra8-custom-provisioning-part-two) for generating unique VM names which fit an organization's established naming standard, and then [extended the workflow](/vra8-custom-provisioning-part-three) to avoid any naming conflicts in Active Directory and DNS. And, finally, I [created an intelligent provisioning request form in Service Broker](/vra8-custom-provisioning-part-four) to make it easy for users to get the servers they need. That's got the core functionality pretty well sorted, so moving forward I'll be detailing additions that enable new capabilities and enhance the experience.* In this post, I'll describe how to get certain details from the Service Broker request form and into the VM's properties in vCenter. The obvious application of this is adding descriptive notes so I can remember what purpose a VM serves, but I will also be using [Custom Attributes](https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.vcenterhost.doc/GUID-73606C4C-763C-4E27-A1DA-032E4C46219D.html) to store the server's Point of Contact information and a record of which ticketing system request resulted in the server's creation. diff --git a/content/posts/adguard-home-in-docker-on-photon-os/index.md b/content/posts/adguard-home-in-docker-on-photon-os/index.md index e6aafb7..a1f0ddf 100644 --- a/content/posts/adguard-home-in-docker-on-photon-os/index.md +++ b/content/posts/adguard-home-in-docker-on-photon-os/index.md @@ -1,5 +1,5 @@ --- -series: Projects +categories: Self-Hosting date: "2021-05-27T08:34:30Z" thumbnail: HRRpFOKuN.png usePageBundles: true diff --git a/content/posts/auto-connect-to-protonvpn-on-untrusted-wifi-with-tasker/index.md b/content/posts/auto-connect-to-protonvpn-on-untrusted-wifi-with-tasker/index.md index e6ec022..ca68133 100644 --- a/content/posts/auto-connect-to-protonvpn-on-untrusted-wifi-with-tasker/index.md +++ b/content/posts/auto-connect-to-protonvpn-on-untrusted-wifi-with-tasker/index.md @@ -1,5 +1,5 @@ --- -series: Projects +categories: Automation date: "2020-11-24T08:34:30Z" lastmod: "2021-03-12" thumbnail: Ki7jo65t3.png @@ -37,7 +37,7 @@ It's important to use the [open-source](https://github.com/schwabe/ics-openvpn) ### OpenVPN config file You can find instructions for configuring the OpenVPN client to work with ProtonVPN [here](https://protonvpn.com/support/android-vpn-setup/) but I'll go ahead and hit the highlights. You'll probably want to go ahead and do all this from your phone so you don't have to fuss with transferring files around, but hey, *you do you*. -1. Log in to your ProtonVPN account (or sign up for a new free one) at https://account.protonvpn.com/login. +1. Log in to your ProtonVPN account (or sign up for a new free one) at https://account.protonvpn.com/login. 2. Use the panel on the left side to navigate to **[Downloads > OpenVPN configuration files](https://account.protonvpn.com/downloads#openvpn-configuration-files)**. 3. Select the **Android** platform and **UDP** as the protocol, unless you have a [particular reason to use TCP](https://protonvpn.com/support/udp-tcp/#:~:text=When%20to%20use%20UDP%20vs.%20TCP). 4. Select and download the desired config file: @@ -49,7 +49,7 @@ You can find instructions for configuring the OpenVPN client to work with Proton Feel free to download more than one if you'd like to have different profiles available within the OpenVPN app. -ProtonVPN automatically generates a set of user credentials to use with a third-party VPN client so that you don't have to share your personal creds. You'll want to make a note of that randomly-generated username and password so you can plug them in to the OpenVPN app later. You can find the details at **[Account > OpenVPN / IKEv2 username](https://account.protonvpn.com/account#openvpn)**. +ProtonVPN automatically generates a set of user credentials to use with a third-party VPN client so that you don't have to share your personal creds. You'll want to make a note of that randomly-generated username and password so you can plug them in to the OpenVPN app later. You can find the details at **[Account > OpenVPN / IKEv2 username](https://account.protonvpn.com/account#openvpn)**. **Now that you've got the profile file, skip on down to [The Update](#update) to import it into OpenVPN Connect.** @@ -67,7 +67,7 @@ Now what you've got the config file(s) and your client credentials, it's time to Success! -I don't like to have a bunch of persistent notification icons hanging around (and Android already shows a persistent status icon when a VPN connection is active). If you're like me, long-press the OpenVPN notification and tap the gear icon. Then tap on the **Connection statistics** category and activate the **Minimized** slider. The notification will still appear, but it will collapse to the bottom of your notification stack and you won't get bugged by the icon. +I don't like to have a bunch of persistent notification icons hanging around (and Android already shows a persistent status icon when a VPN connection is active). If you're like me, long-press the OpenVPN notification and tap the gear icon. Then tap on the **Connection statistics** category and activate the **Minimized** slider. The notification will still appear, but it will collapse to the bottom of your notification stack and you won't get bugged by the icon. ![Notification settings](WWuHwVvrk.png) @@ -76,21 +76,21 @@ Open up Tasker and get ready to automate! We're going to wind up with at least t Let's start with a profile to track whether or not we're connected to one of our preferred/trusted WiFi networks: -#### Trusted WiFi +#### Trusted WiFi 1. Tap the '+' sign to create a new profile, and add a new **State > Net > Wifi Connected** context. This profile will become active whenever your phone connects to WiFi. 2. Tap the magnifying glass next to the **SSID** field, which will pop up a list of all detected nearby network identifiers. Tap to select whichever network(s) you'd like to be considered "safe". You can also manually enter the SSID names, separating multiple options with a `/` (ex, `FBI Surveillance Van/TellMyWifiLoveHer/Pretty fly for a WiFi`). Or, for more security, identify the networks based on the MACs instead of the SSIDs - just be sure to capture the MACs for any extenders or mesh nodes too! -3. Once you've got your networks added, tap the back button to move *forward* to the next task (Ah, Android!): configuring the *action* which will occur when the context is satisfied. -4. Tap the **New Task** option and then tap the check mark to skip giving it a name (no need). +3. Once you've got your networks added, tap the back button to move *forward* to the next task (Ah, Android!): configuring the *action* which will occur when the context is satisfied. +4. Tap the **New Task** option and then tap the check mark to skip giving it a name (no need). 5. Hit the '+' button to add an action and select **Variables > Variable Set**. -6. For **Name**, enter `%TRUSTED_WIFI` (all caps to make it a "public" variable), and for the **To** field just enter `1`. -7. Hit back to save the action, and back again to save the profile. +6. For **Name**, enter `%TRUSTED_WIFI` (all caps to make it a "public" variable), and for the **To** field just enter `1`. +7. Hit back to save the action, and back again to save the profile. 8. Back at the profile list, long-press on the **Variable Set...** action and then select **Add Exit Task**. 9. We want to un-set the variable when no longer connected to a trusted WiFi network so add a new **Variables > Variable Clear** action and set the name to `%TRUSTED_WIFI`. 10. And back back out to admire your handiwork. Here's a recap of the profile: ``` Profile: Trusted Wifi State: Wifi Connected [ SSID:FBI Surveillance Van/TellMyWifiLoveHer/Pretty fly for a WiFi MAC:* IP:* Active:Any ] -Enter: Anon +Enter: Anon A1: Variable Set [ Name:%TRUSTED_WIFI To:1 Recurse Variables:Off Do Maths:Off Append:Off Max Rounding Digits:0 ] Exit: Anon A1: Variable Clear [ Name:%TRUSTED_WIFI Pattern Matching:Off Local Variables Only:Off Clear All Variables:Off ] @@ -103,7 +103,7 @@ This profile will kick in if the phone connects to a WiFi network which isn't on 1. It starts out the same way by creating a new profile with the **State > Net > Wifi Connected** context but this time don't add any network names to the list. 2. For the action, select **Plugin > OpenVpn Tasker Plugin**, tap the pencil icon to edit the configuration, and select your VPN profile from the list under **Connect using profile** 3. Back at the Action Edit screen, tap the checkbox next to **If** and enter the variable name `%TRUSTED_WIFI`. Tap the '~' button to change the condition operator to **Isn't Set**. So while this profile will activate every time you connect to WiFi, the action which connects to the VPN will only fire if the WiFi isn't a trusted network. -4. Back out to the profile list and add a new Exit Task. +4. Back out to the profile list and add a new Exit Task. 5. Add another **Plugin > OpenVpn Tasker Plugin** task and this time configure it to **Disconnect VPN**. To recap: @@ -149,7 +149,7 @@ After installing and launching the official [OpenVPN Connect app](https://play.g ![Creating a profile in OpenVPN Connect](KjGOX8Yiv.png) #### Tasker profiles -Go ahead and create the [Trusted Wifi profile](#trusted-wifi) as described above. +Go ahead and create the [Trusted Wifi profile](#trusted-wifi) as described above. The condition for the [VPN on Strange Wifi profile](#vpn-on-strange-wifi) will be the same, but the task will be different. This time, add a **System > Send Intent** action. You'll need to enter the following details, leaving the other fields blank/default: @@ -176,4 +176,4 @@ Class: net.openvpn.unified.MainActivity Target: Activity ``` -All set! You can pop back up to the [Epilogue](#epilogue-working-with-googles-vpn) section to continue tweaking to avoid conflicts with Google's auto-connect VPN if you'd like. \ No newline at end of file +All set! You can pop back up to the [Epilogue](#epilogue-working-with-googles-vpn) section to continue tweaking to avoid conflicts with Google's auto-connect VPN if you'd like. \ No newline at end of file diff --git a/content/posts/automatic-unattended-expansion-of-linux-root-lvm-volume-to-fill-disk/index.md b/content/posts/automatic-unattended-expansion-of-linux-root-lvm-volume-to-fill-disk/index.md index 6e5a1bf..41b276a 100644 --- a/content/posts/automatic-unattended-expansion-of-linux-root-lvm-volume-to-fill-disk/index.md +++ b/content/posts/automatic-unattended-expansion-of-linux-root-lvm-volume-to-fill-disk/index.md @@ -1,5 +1,5 @@ --- -series: Code +categories: Code date: "2021-04-29T08:34:30Z" usePageBundles: true thumbnail: 20210723-script.png @@ -11,7 +11,7 @@ title: Automatic unattended expansion of Linux root LVM volume to fill disk toc: false --- -While working on my [vRealize Automation 8 project](/series/vra8), I wanted to let users specify how large a VM's system drive should be and have vRA apply that without any further user intervention. For instance, if the template has a 60GB C: drive and the user specifies that they want it to be 80GB, vRA will embiggen the new VM's VMDK to 80GB and then expand the guest file system to fill up the new free space. +While working on my [vRealize Automation 8 project](/categories/vmware), I wanted to let users specify how large a VM's system drive should be and have vRA apply that without any further user intervention. For instance, if the template has a 60GB C: drive and the user specifies that they want it to be 80GB, vRA will embiggen the new VM's VMDK to 80GB and then expand the guest file system to fill up the new free space. I'll get into the details of how that's implemented from the vRA side #soon, but first I needed to come up with simple scripts to extend the guest file system to fill the disk. diff --git a/content/posts/automating-camera-notifications-home-assistant-ntfy/index.md b/content/posts/automating-camera-notifications-home-assistant-ntfy/index.md index 712b7ac..2c3f129 100644 --- a/content/posts/automating-camera-notifications-home-assistant-ntfy/index.md +++ b/content/posts/automating-camera-notifications-home-assistant-ntfy/index.md @@ -8,7 +8,7 @@ alias: automating-security-camera-notifications-with-home-assistant-and-ntfy toc: true comments: true thumbnail: thumbnail.png -series: Projects +categories: Automation tags: - api - automation diff --git a/content/posts/bitwarden-password-manager-self-hosted-on-free-google-cloud-instance/index.md b/content/posts/bitwarden-password-manager-self-hosted-on-free-google-cloud-instance/index.md index 59b6d6b..2b8c5d2 100644 --- a/content/posts/bitwarden-password-manager-self-hosted-on-free-google-cloud-instance/index.md +++ b/content/posts/bitwarden-password-manager-self-hosted-on-free-google-cloud-instance/index.md @@ -1,5 +1,5 @@ --- -series: Projects +categories: Self-Hosting date: "2018-09-26T08:34:30Z" lastmod: "2022-03-06" thumbnail: i0UKdXleC.png diff --git a/content/posts/bulk-import-vsphere-dvportgroups-to-phpipam/index.md b/content/posts/bulk-import-vsphere-dvportgroups-to-phpipam/index.md index 0ab3752..4cb8e3b 100644 --- a/content/posts/bulk-import-vsphere-dvportgroups-to-phpipam/index.md +++ b/content/posts/bulk-import-vsphere-dvportgroups-to-phpipam/index.md @@ -14,7 +14,7 @@ usePageBundles: true thumbnail: "code.png" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: Code +categories: Code tags: - vmware - powercli diff --git a/content/posts/burn-an-iso-to-usb-with-the-chromebook-recovery-utility/index.md b/content/posts/burn-an-iso-to-usb-with-the-chromebook-recovery-utility/index.md index 3a97c42..631d613 100644 --- a/content/posts/burn-an-iso-to-usb-with-the-chromebook-recovery-utility/index.md +++ b/content/posts/burn-an-iso-to-usb-with-the-chromebook-recovery-utility/index.md @@ -1,5 +1,5 @@ --- -series: Tips +categories: ChromeOS date: "2020-12-23T08:34:30Z" thumbnail: -lp1-DGiM.png usePageBundles: true diff --git a/content/posts/cat-file-without-comments/index.md b/content/posts/cat-file-without-comments/index.md index 4043737..a0796e1 100644 --- a/content/posts/cat-file-without-comments/index.md +++ b/content/posts/cat-file-without-comments/index.md @@ -14,7 +14,7 @@ usePageBundles: true # thumbnail: "thumbnail.png" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: Tips # Projects, Code, vRA8, K8s on vSphere +categories: Tips # Projects, Code, vRA8, K8s on vSphere tags: - linux - shell diff --git a/content/posts/cloud-based-wireguard-vpn-remote-homelab-access/index.md b/content/posts/cloud-based-wireguard-vpn-remote-homelab-access/index.md index 0cb2f24..794d8ef 100644 --- a/content/posts/cloud-based-wireguard-vpn-remote-homelab-access/index.md +++ b/content/posts/cloud-based-wireguard-vpn-remote-homelab-access/index.md @@ -1,5 +1,5 @@ --- -series: Projects +categories: Self-Hosting date: "2021-10-28T00:00:00Z" thumbnail: 20211028_wireguard_in_the_cloud.jpg usePageBundles: true diff --git a/content/posts/create-vms-chromebook-hashicorp-vagrant/index.md b/content/posts/create-vms-chromebook-hashicorp-vagrant/index.md index 9a1bd5c..c1dd764 100644 --- a/content/posts/create-vms-chromebook-hashicorp-vagrant/index.md +++ b/content/posts/create-vms-chromebook-hashicorp-vagrant/index.md @@ -14,7 +14,7 @@ usePageBundles: true thumbnail: "thumbnail.png" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: Projects +categories: ChromeOS tags: - linux - chromeos diff --git a/content/posts/creating-static-records-in-microsoft-dns-from-vrealize-automation/index.md b/content/posts/creating-static-records-in-microsoft-dns-from-vrealize-automation/index.md index fddb128..3ff90b0 100644 --- a/content/posts/creating-static-records-in-microsoft-dns-from-vrealize-automation/index.md +++ b/content/posts/creating-static-records-in-microsoft-dns-from-vrealize-automation/index.md @@ -1,5 +1,5 @@ --- -series: vRA8 +categories: VMware date: "2021-08-13T00:00:00Z" lastmod: "2022-01-18" usePageBundles: true diff --git a/content/posts/ditching-vsphere-for-proxmox/index.md b/content/posts/ditching-vsphere-for-proxmox/index.md index 33f1ac6..0b5d2eb 100644 --- a/content/posts/ditching-vsphere-for-proxmox/index.md +++ b/content/posts/ditching-vsphere-for-proxmox/index.md @@ -5,7 +5,7 @@ description: "I moved my homelab from VMware vSphere to Proxmox VE, and my only featured: false toc: true comments: true -series: Tips # Projects, Code +categories: Tips # Projects, Code tags: - homelab - linux diff --git a/content/posts/docker-on-windows-10-with-wsl2/index.md b/content/posts/docker-on-windows-10-with-wsl2/index.md index 560975b..539167f 100644 --- a/content/posts/docker-on-windows-10-with-wsl2/index.md +++ b/content/posts/docker-on-windows-10-with-wsl2/index.md @@ -2,6 +2,7 @@ date: "2020-09-22T08:34:30Z" thumbnail: 8p-PSHx1R.png usePageBundles: true +categories: Tips tags: - docker - windows diff --git a/content/posts/easy-push-notifications-with-ntfy/index.md b/content/posts/easy-push-notifications-with-ntfy/index.md index 6be35c6..fb11bb9 100644 --- a/content/posts/easy-push-notifications-with-ntfy/index.md +++ b/content/posts/easy-push-notifications-with-ntfy/index.md @@ -6,7 +6,7 @@ description: "Deploying and configuring a self-hosted pub-sub notification handl featured: false toc: true comments: true -series: Projects +categories: Self-Hosting tags: - android - api diff --git a/content/posts/enable-tanzu-cli-auto-completion-bash-zsh/index.md b/content/posts/enable-tanzu-cli-auto-completion-bash-zsh/index.md index 6ad851f..c28a02d 100644 --- a/content/posts/enable-tanzu-cli-auto-completion-bash-zsh/index.md +++ b/content/posts/enable-tanzu-cli-auto-completion-bash-zsh/index.md @@ -14,7 +14,7 @@ usePageBundles: true thumbnail: "tanzu-completion.png" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: Tips +categories: VMware tags: - vmware - linux diff --git a/content/posts/esxi-arm-on-quartz64/index.md b/content/posts/esxi-arm-on-quartz64/index.md index bdec745..b65b640 100644 --- a/content/posts/esxi-arm-on-quartz64/index.md +++ b/content/posts/esxi-arm-on-quartz64/index.md @@ -14,7 +14,7 @@ featureImage: "quartz64.jpg" # Sets featured image on blog post. thumbnail: "quartz64.jpg" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: Projects +categories: VMware tags: - vmware - linux diff --git a/content/posts/federated-matrix-server-synapse-on-oracle-clouds-free-tier/index.md b/content/posts/federated-matrix-server-synapse-on-oracle-clouds-free-tier/index.md index 1a90093..033e516 100644 --- a/content/posts/federated-matrix-server-synapse-on-oracle-clouds-free-tier/index.md +++ b/content/posts/federated-matrix-server-synapse-on-oracle-clouds-free-tier/index.md @@ -1,5 +1,5 @@ --- -series: Projects +categories: Self-Hosting date: "2021-06-28T00:00:00Z" thumbnail: 2xe34VJym.png usePageBundles: true diff --git a/content/posts/finding-the-most-popular-ips-in-a-log-file/index.md b/content/posts/finding-the-most-popular-ips-in-a-log-file/index.md index c51ba1d..cb22105 100644 --- a/content/posts/finding-the-most-popular-ips-in-a-log-file/index.md +++ b/content/posts/finding-the-most-popular-ips-in-a-log-file/index.md @@ -1,5 +1,5 @@ --- -series: Tips +categories: Tips date: "2020-09-13T08:34:30Z" usePageBundles: true tags: diff --git a/content/posts/fixing-403-error-ssc-8-6-vra-idm/index.md b/content/posts/fixing-403-error-ssc-8-6-vra-idm/index.md index 6e16f21..40434fe 100644 --- a/content/posts/fixing-403-error-ssc-8-6-vra-idm/index.md +++ b/content/posts/fixing-403-error-ssc-8-6-vra-idm/index.md @@ -1,5 +1,5 @@ --- -series: vRA8 +categories: VMware date: "2021-11-05T00:00:00Z" thumbnail: 20211105_ssc_403.png usePageBundles: true diff --git a/content/posts/fixing-wsl2-connectivity-when-connected-to-a-vpn-with-wsl-vpnkit/index.md b/content/posts/fixing-wsl2-connectivity-when-connected-to-a-vpn-with-wsl-vpnkit/index.md index c09df0e..9b819e3 100644 --- a/content/posts/fixing-wsl2-connectivity-when-connected-to-a-vpn-with-wsl-vpnkit/index.md +++ b/content/posts/fixing-wsl2-connectivity-when-connected-to-a-vpn-with-wsl-vpnkit/index.md @@ -2,6 +2,7 @@ date: "2020-10-07T08:34:30Z" thumbnail: MnmMuA0HC.png usePageBundles: true +categories: Tips tags: - windows - linux @@ -11,15 +12,15 @@ title: Fixing WSL2 connectivity when connected to a VPN with wsl-vpnkit toc: false --- -I was pretty excited to get [WSL2 and Docker working on my Windows 10 1909](/docker-on-windows-10-with-wsl2) laptop a few weeks ago, but I quickly encountered a problem: WSL2 had no network connectivity when connected to my work VPN. +I was pretty excited to get [WSL2 and Docker working on my Windows 10 1909](/docker-on-windows-10-with-wsl2) laptop a few weeks ago, but I quickly encountered a problem: WSL2 had no network connectivity when connected to my work VPN. Well, that's not *entirely* true; Docker worked just fine, but nothing else could talk to anything outside of the WSL environment. I found a few open issues for this problem in the [WSL2 Github](https://github.com/microsoft/WSL/issues?q=is%3Aissue+is%3Aopen+VPN) with suggested workarounds including modifying Windows registry entries, adjusting the metrics assigned to various virtual network interfaces within Windows, and manually setting DNS servers in `/etc/resolv.conf`. None of these worked for me. I eventually came across a solution [here](https://github.com/sakai135/wsl-vpnkit) which did the trick. This takes advantage of the fact that Docker for Windows is already utilizing `vpnkit` for connectivity - so you may also want to be sure Docker Desktop is configured to start at login. -The instructions worked well for me so I won't rehash them all here. When it came time to modify my `/etc/resolv.conf` file, I added in two of the internal DNS servers followed by the IP for my home router's DNS service. This allows me to use WSL2 both on and off the corporate network without having to reconfigure things. +The instructions worked well for me so I won't rehash them all here. When it came time to modify my `/etc/resolv.conf` file, I added in two of the internal DNS servers followed by the IP for my home router's DNS service. This allows me to use WSL2 both on and off the corporate network without having to reconfigure things. -All I need to do now is execute `sudo ./wsl-vpnkit` and leave that running in the background when I need to use WSL while connected to the corporate VPN. +All I need to do now is execute `sudo ./wsl-vpnkit` and leave that running in the background when I need to use WSL while connected to the corporate VPN. ![Successful connection via wsl-vpnkit](MnmMuA0HC.png) diff --git a/content/posts/free-serverless-url-shortener-google-cloud-run/index.md b/content/posts/free-serverless-url-shortener-google-cloud-run/index.md index 731362c..7280b01 100644 --- a/content/posts/free-serverless-url-shortener-google-cloud-run/index.md +++ b/content/posts/free-serverless-url-shortener-google-cloud-run/index.md @@ -1,5 +1,5 @@ --- -series: Projects +categories: Self-Hosting date: "2021-08-20T00:00:00Z" lastmod: 2022-02-03 usePageBundles: true diff --git a/content/posts/getting-started-vra-rest-api/index.md b/content/posts/getting-started-vra-rest-api/index.md index 467640a..650d519 100644 --- a/content/posts/getting-started-vra-rest-api/index.md +++ b/content/posts/getting-started-vra-rest-api/index.md @@ -14,7 +14,7 @@ usePageBundles: true thumbnail: "thumbnail.png" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: vRA8 # Projects, Code, vRA8 +categories: VMware # Projects, Code, vRA8 tags: - vmware - vra diff --git a/content/posts/gitea-self-hosted-git-server/index.md b/content/posts/gitea-self-hosted-git-server/index.md index 143dc96..8f526cc 100644 --- a/content/posts/gitea-self-hosted-git-server/index.md +++ b/content/posts/gitea-self-hosted-git-server/index.md @@ -14,7 +14,7 @@ usePageBundles: true thumbnail: "gitea-logo.png" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: Projects +categories: Self-Hosting tags: - caddy - linux diff --git a/content/posts/hello-hugo/index.md b/content/posts/hello-hugo/index.md index 3820f97..2b0c107 100644 --- a/content/posts/hello-hugo/index.md +++ b/content/posts/hello-hugo/index.md @@ -16,6 +16,7 @@ shareImage: "/hugo-logo-wide.png" # shareImage: "/images/path/share.png" # Designate a separate image for social media sharing. codeMaxLines: 10 # Override global value for how many lines within a code block before auto-collapsing. codeLineNumbers: false # Override global value for showing of line numbers within code block. +categories: Blog tags: - meta - hugo diff --git a/content/posts/how-to-ask-for-help/index.md b/content/posts/how-to-ask-for-help/index.md index f628455..3ad2a51 100644 --- a/content/posts/how-to-ask-for-help/index.md +++ b/content/posts/how-to-ask-for-help/index.md @@ -6,7 +6,7 @@ timeless: true description: There are no dumb questions - but there are smarter (and dumber) ways to ask them. featured: true aliases: ["how2ask"] -series: Tips +categories: Tips --- I spend a lot of my time and energy answering technical questions, both professionally and "for fun" as a way to scratch that troubleshooting itch. How a question is asked plays a big factor in how effectively I'll be able to answer it. diff --git a/content/posts/integrating-phpipam-with-vrealize-automation-8/index.md b/content/posts/integrating-phpipam-with-vrealize-automation-8/index.md index a8e0a03..5ee1a8b 100644 --- a/content/posts/integrating-phpipam-with-vrealize-automation-8/index.md +++ b/content/posts/integrating-phpipam-with-vrealize-automation-8/index.md @@ -1,5 +1,5 @@ --- -series: vRA8 +categories: VMware date: "2021-02-22T08:34:30Z" lastmod: 2022-07-25 thumbnail: 7_QI-Ti8g.png diff --git a/content/posts/joining-vms-to-active-directory-in-site-specific-ous-with-vra8/index.md b/content/posts/joining-vms-to-active-directory-in-site-specific-ous-with-vra8/index.md index 14cff51..c3e59fa 100644 --- a/content/posts/joining-vms-to-active-directory-in-site-specific-ous-with-vra8/index.md +++ b/content/posts/joining-vms-to-active-directory-in-site-specific-ous-with-vra8/index.md @@ -1,5 +1,5 @@ --- -series: vRA8 +categories: VMware date: "2021-07-21T00:00:00Z" thumbnail: 20210721-successful-ad_machine.png usePageBundles: true diff --git a/content/posts/k8s-on-vsphere-node-template-with-packer/index.md b/content/posts/k8s-on-vsphere-node-template-with-packer/index.md index 021cc6e..c0070ca 100644 --- a/content/posts/k8s-on-vsphere-node-template-with-packer/index.md +++ b/content/posts/k8s-on-vsphere-node-template-with-packer/index.md @@ -14,7 +14,7 @@ usePageBundles: true thumbnail: "thumbnail.jpg" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: K8s on vSphere +categories: VMware tags: - vmware - linux diff --git a/content/posts/ldaps-authentication-tanzu-community-edition/index.md b/content/posts/ldaps-authentication-tanzu-community-edition/index.md index 2845292..a5a360c 100644 --- a/content/posts/ldaps-authentication-tanzu-community-edition/index.md +++ b/content/posts/ldaps-authentication-tanzu-community-edition/index.md @@ -14,7 +14,7 @@ usePageBundles: true thumbnail: "ldaps_test.png" # Sets thumbnail image appearing inside card on homepage. shareImage: "ldaps_test.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: K8s on vSphere +categories: VMware tags: - vmware - kubernetes diff --git a/content/posts/logging-in-tce-cluster-from-new-device/index.md b/content/posts/logging-in-tce-cluster-from-new-device/index.md index c123a86..ebe2d73 100644 --- a/content/posts/logging-in-tce-cluster-from-new-device/index.md +++ b/content/posts/logging-in-tce-cluster-from-new-device/index.md @@ -14,7 +14,7 @@ featureImage: "tanzu.png" # Sets featured image on blog post. thumbnail: "tanzu.png" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: Tips +categories: VMware tags: - vmware - kubernetes diff --git a/content/posts/logging-in-to-multiple-vcenter-servers-at-once-with-powercli/index.md b/content/posts/logging-in-to-multiple-vcenter-servers-at-once-with-powercli/index.md index c6a246f..26b4c29 100644 --- a/content/posts/logging-in-to-multiple-vcenter-servers-at-once-with-powercli/index.md +++ b/content/posts/logging-in-to-multiple-vcenter-servers-at-once-with-powercli/index.md @@ -1,5 +1,5 @@ --- -series: Code +categories: Code date: "2020-09-16T08:34:30Z" thumbnail: LJOcy2oqc.png usePageBundles: true diff --git a/content/posts/nessus-essentials-on-tanzu-community-edition/index.md b/content/posts/nessus-essentials-on-tanzu-community-edition/index.md index ba0cf71..03a8079 100644 --- a/content/posts/nessus-essentials-on-tanzu-community-edition/index.md +++ b/content/posts/nessus-essentials-on-tanzu-community-edition/index.md @@ -14,7 +14,7 @@ usePageBundles: true thumbnail: "nessus_login.png" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: Tips # Projects, Code, vRA8 +categories: Self-Hosting tags: - vmware - kubernetes diff --git a/content/posts/notes-on-vra-ha-with-nsx-alb/index.md b/content/posts/notes-on-vra-ha-with-nsx-alb/index.md index e65a418..c68a4e8 100644 --- a/content/posts/notes-on-vra-ha-with-nsx-alb/index.md +++ b/content/posts/notes-on-vra-ha-with-nsx-alb/index.md @@ -1,5 +1,5 @@ --- -series: vRA8 +categories: VMware date: "2021-08-25T00:00:00Z" usePageBundles: true tags: @@ -13,7 +13,7 @@ title: Notes on vRA HA with NSX-ALB This is going to be a pretty quick recap of the steps I recently took to convert a single-node instance of vRealize Automation 8.4.2 into a 3-node High-Availability vRA cluster behind a standalone NSX Advanced Load Balancer (without NSX being deployed in the environment). No screenshots or specific details since I ran through this in the lab at work and didn't capture anything along the way, and my poor NUC homelab struggles enough to run a single instance of memory-hogging vRA. ### Getting started with NSX-ALB -I found a lot of information on how to use NSX-ALB as a component of a broader NSX-equipped environment, but not a lot of detail on how to use the ALB *without* NSX - until I found [Rudi Martinsen's blog on the subject](https://rudimartinsen.com/2021/06/25/load-balancing-with-nsx-alb/). That turned out to be a great reference for the ALB configuration so be sure to check it out if you need more details than what I provide in this section. +I found a lot of information on how to use NSX-ALB as a component of a broader NSX-equipped environment, but not a lot of detail on how to use the ALB *without* NSX - until I found [Rudi Martinsen's blog on the subject](https://rudimartinsen.com/2021/06/25/load-balancing-with-nsx-alb/). That turned out to be a great reference for the ALB configuration so be sure to check it out if you need more details than what I provide in this section. #### Download NSX-ALB is/was formerly known as the Avi Vantage Controller, and downloads are available [here](https://portal.avipulse.vmware.com/software/vantage). You'll need to log in with your VMware Customer Connect account to access the download, and then grab the latest VMware Controller OVA. Be sure to make a note of the default password listed on the right-hand side since you'll need that to log in post-deployment. @@ -45,7 +45,7 @@ Then go back to **Infastructure > Clouds**, edit the Cloud, and select the IPAM Navigate to **Infrastructure > Cloud Resources > Service Engine Group** and edit the *Default-Group*. I left everything on the *Basic Settings* tab at the defaults. On the *Advanced* tab, I specified which vSphere cluster the Service Engines should be deployed to. And I left everything else with the default settings. #### SSL Certificate -Hop over to **Templates > Security > SSL/TLS Certificates** and click **Create > Application Certificate**. Give the new cert a name and change the **Type** to `CSR` to generate a new signing request. Enter the **Common Name** you're going to want to use for the load balancer VIP (something like `vra`, perhaps?) and all the usual cert fields. Use the **Subject Alternate Name (SAN)** section at the bottom to add all the other components, like the individual vRA cluster members by both hostname and FQDN. I went ahead and included those IPs as well for good measure. +Hop over to **Templates > Security > SSL/TLS Certificates** and click **Create > Application Certificate**. Give the new cert a name and change the **Type** to `CSR` to generate a new signing request. Enter the **Common Name** you're going to want to use for the load balancer VIP (something like `vra`, perhaps?) and all the usual cert fields. Use the **Subject Alternate Name (SAN)** section at the bottom to add all the other components, like the individual vRA cluster members by both hostname and FQDN. I went ahead and included those IPs as well for good measure. | Name | |----------------------| @@ -60,14 +60,14 @@ Hop over to **Templates > Security > SSL/TLS Certificates** and click **Create > | `vra03` | | `192.168.1.43` | -Click **Save**. +Click **Save**. Click **Create** again, but this time select **Root/Intermediate CA Certificate** and upload/paste your CA's cert so it can be trusted. Save your work. Back at the cert list, find your new application cert and click the pencil icon to edit it. Copy the **Certificate Signing Request** field and go get it signed by your CA. Be sure to grab the certificate chain (base64-encoded) as well if you can. Come back and paste in / upload your shiny new CA-signed certificate file. #### Virtual Service -Now it's finally time to create the Virtual Service that will function as the load balancer front-end. Pop over to **Applications > Virtual Services** and click **Create Virtual Service > Basic Setup**. Give it a name and set the **Application Type** to `HTTPS`, which will automatically set the port and bind a default self-signed certificate. +Now it's finally time to create the Virtual Service that will function as the load balancer front-end. Pop over to **Applications > Virtual Services** and click **Create Virtual Service > Basic Setup**. Give it a name and set the **Application Type** to `HTTPS`, which will automatically set the port and bind a default self-signed certificate. Click on the **Certificate** field and select the new cert you created above. Be sure to remove the default cert. @@ -81,12 +81,12 @@ Now that the Virtual Service is created, make a note of the IP address assigned Log into LifeCycle Manager in a new browser tab/window. Make sure that you've mapped an *Install* product binary for your current version of vRA; the upgrade binary that you probably used to do your last update won't cut it. It's probably also a good idea to go make a snapshot of your vRA and IDM instances just in case. #### Adding new certificate -In LCM, go to **Locker > Certificates** and select the option to **Import**. Switch back to the NSX-ALB tab and go to **Templates > Security > SSL/TLS Certificates**. Click the little down-arrow-in-a-circle "Export" icon next to the application certificate you created earlier. Copy the key section and paste that into LCM. Then open the file containing the certificate chain you got from your CA, copy its contents, and paste it into LCM as well. Do *not* try to upload a certificate file directly to LCM; that will fail unless the file includes both the cert and the private key and that's silly. +In LCM, go to **Locker > Certificates** and select the option to **Import**. Switch back to the NSX-ALB tab and go to **Templates > Security > SSL/TLS Certificates**. Click the little down-arrow-in-a-circle "Export" icon next to the application certificate you created earlier. Copy the key section and paste that into LCM. Then open the file containing the certificate chain you got from your CA, copy its contents, and paste it into LCM as well. Do *not* try to upload a certificate file directly to LCM; that will fail unless the file includes both the cert and the private key and that's silly. Once the cert is successfully imported, go to the **Lifecycle Operations** component of LCM and navigate to the environment containing your vRA instance. Select the vRA product, hit the three-dot menu, and use the **Replace Certificate** option to replace the old and busted cert with the new HA-ready one. It will take a little bit for this to get applied. Don't move on until vRA services are back up. #### Scale out vRA -Still on the vRA product page, click on the **+ Add Components** button. +Still on the vRA product page, click on the **+ Add Components** button. On the **Infrastructure** page, tell LCM where to put the new VRA VMs. diff --git a/content/posts/powercli-list-linux-vms-and-datacenter-locations/index.md b/content/posts/powercli-list-linux-vms-and-datacenter-locations/index.md index 29d5d4e..5c2ddaf 100644 --- a/content/posts/powercli-list-linux-vms-and-datacenter-locations/index.md +++ b/content/posts/powercli-list-linux-vms-and-datacenter-locations/index.md @@ -14,7 +14,7 @@ usePageBundles: true thumbnail: "PowerCLI.png" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: Code +categories: VMware tags: - vmware - powercli diff --git a/content/posts/powershell-download-web-folder-contents/index.md b/content/posts/powershell-download-web-folder-contents/index.md index a937ac8..db1961f 100644 --- a/content/posts/powershell-download-web-folder-contents/index.md +++ b/content/posts/powershell-download-web-folder-contents/index.md @@ -14,7 +14,7 @@ usePageBundles: true # thumbnail: "thumbnail.png" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: Code +categories: Code tags: - powershell - windows diff --git a/content/posts/psa-halt-replication-before-snapshotting-linked-vcenters/index.md b/content/posts/psa-halt-replication-before-snapshotting-linked-vcenters/index.md index b7cde3f..c29a640 100644 --- a/content/posts/psa-halt-replication-before-snapshotting-linked-vcenters/index.md +++ b/content/posts/psa-halt-replication-before-snapshotting-linked-vcenters/index.md @@ -1,5 +1,5 @@ --- -series: Tips +categories: VMware date: "2021-01-30T08:34:30Z" thumbnail: XTaU9VDy8.png usePageBundles: true diff --git a/content/posts/psa-microsoft-kb5022842-breaks-ws2022-secure-boot/index.md b/content/posts/psa-microsoft-kb5022842-breaks-ws2022-secure-boot/index.md index c117bb3..39cb801 100644 --- a/content/posts/psa-microsoft-kb5022842-breaks-ws2022-secure-boot/index.md +++ b/content/posts/psa-microsoft-kb5022842-breaks-ws2022-secure-boot/index.md @@ -14,7 +14,7 @@ usePageBundles: true # thumbnail: "thumbnail.png" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: Tips # Projects, Code, vRA8, K8s on vSphere +categories: VMware # Projects, Code, vRA8, K8s on vSphere tags: - vmware - powershell diff --git a/content/posts/publish-services-cloudflare-tunnel/index.md b/content/posts/publish-services-cloudflare-tunnel/index.md index 827998d..ec9c8c7 100644 --- a/content/posts/publish-services-cloudflare-tunnel/index.md +++ b/content/posts/publish-services-cloudflare-tunnel/index.md @@ -6,7 +6,7 @@ description: "Exploring Cloudflare Tunnel as an alternative to Tailscale Funnel featured: false toc: true comments: true -series: Tips # Projects, Code +categories: Self-Hosting tags: - cloud - containers diff --git a/content/posts/recreating-hashnode-series-categories-in-jekyll-on-github-pages/index.md b/content/posts/recreating-hashnode-series-categories-in-jekyll-on-github-pages/index.md index 7c9b792..d5e9a08 100644 --- a/content/posts/recreating-hashnode-series-categories-in-jekyll-on-github-pages/index.md +++ b/content/posts/recreating-hashnode-series-categories-in-jekyll-on-github-pages/index.md @@ -1,5 +1,5 @@ --- -series: Tips +categories: Blog date: "2021-07-24T16:46:00Z" thumbnail: 20210724-series-navigation.png usePageBundles: true @@ -9,12 +9,12 @@ tags: title: Recreating Hashnode Series (Categories) in Jekyll on GitHub Pages --- -I recently [migrated this site](/virtually-potato-migrated-to-github-pages) from Hashnode to GitHub Pages, and I'm really getting into the flexibility and control that managing the content through Jekyll provides. So, naturally, after finalizing the move I got to work recreating Hashnode's "Series" feature, which lets you group posts together and highlight them as a collection. One of the things I liked about the Series setup was that I could control the order of the collected posts: my posts about [building out the vRA environment in my homelab](/series/vra8) are probably best consumed in chronological order (oldest to newest) since the newer posts build upon the groundwork laid by the older ones, while posts about my [other one-off projects](/series/projects) could really be enjoyed in any order. +I recently [migrated this site](/virtually-potato-migrated-to-github-pages) from Hashnode to GitHub Pages, and I'm really getting into the flexibility and control that managing the content through Jekyll provides. So, naturally, after finalizing the move I got to work recreating Hashnode's "Series" feature, which lets you group posts together and highlight them as a collection. One of the things I liked about the Series setup was that I could control the order of the collected posts: my posts about [building out the vRA environment in my homelab](/categories/vmware) are probably best consumed in chronological order (oldest to newest) since the newer posts build upon the groundwork laid by the older ones, while posts about my [other one-off projects](/categories/self-hosting) could really be enjoyed in any order. I quickly realized that if I were hosting this pretty much anywhere *other* than GitHub Pages I could simply leverage the [`jekyll-archives`](https://github.com/jekyll/jekyll-archives) plugin to manage this for me - but, alas, that's not one of the [plugins supported by the platform](https://pages.github.com/versions/). I needed to come up with my own solution, and being still quite new to Jekyll (and this whole website design thing in general) it took me a bit of fumbling to get it right. ### Reviewing the theme-provided option -The Jekyll theme I'm using ([Minimal Mistakes](https://github.com/mmistakes/minimal-mistakes)) comes with [built-in support](https://mmistakes.github.io/mm-github-pages-starter/categories/) for a [category archive page](/series), which (like the [tags page](/tags)) displays all the categorized posts on a single page. Links at the top will let you jump to an appropriate anchor to start viewing the selected category, but it's not really an elegant way to display a single category. +The Jekyll theme I'm using ([Minimal Mistakes](https://github.com/mmistakes/minimal-mistakes)) comes with [built-in support](https://mmistakes.github.io/mm-github-pages-starter/categories/) for a [category archive page](/categories), which (like the [tags page](/tags)) displays all the categorized posts on a single page. Links at the top will let you jump to an appropriate anchor to start viewing the selected category, but it's not really an elegant way to display a single category. ![Posts by category](20210724-posts-by-category.png) It's a start, though, so I took a few minutes to check out how it's being generated. The category archive page lives at [`_pages/category-archive.md`](https://raw.githubusercontent.com/mmistakes/mm-github-pages-starter/master/_pages/category-archive.md): @@ -144,7 +144,7 @@ Since I can't use a plugin to automatically generate pages for each series, I'll --- title: "Adventures in vRealize Automation 8" layout: series -permalink: "/series/vra8" +permalink: "/categories/vmware" tag: vRA8 sort_order: reverse author_profile: true @@ -155,9 +155,9 @@ header: *Follow along as I create a flexible VMware vRealize Automation 8 environment for provisioning virtual machines - all from the comfort of my Intel NUC homelab.* ``` -You can see that this page is referencing the series layout I just created, and it's going to live at `http://localhost/series/vra8` - precisely where this series was on Hashnode. I've tagged it with the category I want to feature on this page, and specified that the posts will be sorted in reverse order so that anyone reading through the series will start at the beginning (I hear it's a very good place to start). I also added a teaser image which will be displayed when I link to the series from elsewhere. And I included a quick little italicized blurb to tell readers what the series is about. +You can see that this page is referencing the series layout I just created, and it's going to live at `http://localhost/categories/vmware` - precisely where this series was on Hashnode. I've tagged it with the category I want to feature on this page, and specified that the posts will be sorted in reverse order so that anyone reading through the series will start at the beginning (I hear it's a very good place to start). I also added a teaser image which will be displayed when I link to the series from elsewhere. And I included a quick little italicized blurb to tell readers what the series is about. -Check it out [here](/series/vra8): +Check it out [here](/categories/vmware): ![vRA8 series](20210724-vra8-series.png) The other series pages will be basically the same, just without the reverse sort directive. Here's `_pages/series-tips.md`: @@ -202,7 +202,7 @@ author_profile: true ``` ### Fixing category links in posts -The bottom of each post has a section which lists the tags and categories to which it belongs. Right now, those are still pointing to the category archive page (`/series/#vra8`) instead of the series feature pages I created (`/series/vra8`). +The bottom of each post has a section which lists the tags and categories to which it belongs. Right now, those are still pointing to the category archive page (`/series/#vra8`) instead of the series feature pages I created (`/categories/vmware`). ![Old category link](20210724-old-category-link.png) That *works* but I'd rather it reference the fancy new pages I created. Tracking down where to make that change was a bit of a journey. @@ -245,7 +245,7 @@ Okay, it looks like [`_include/category-list.html`](https://github.com/mmistakes {% assign categories_sorted = page.categories | sort_natural %}

      - {{ site.data.ui-text[site.locale].categories_label | default: "series:" }} + {{ site.data.ui-text[site.locale].categories_label | default: "categories:" }} {% for category_word in categories_sorted %} {% unless forloop.last %}, {% endunless %} @@ -283,9 +283,9 @@ And, finally, I'll want to update the navigation links at the top of each page t # torchlight! {"lineNumbers": true} main: - title: "vRealize Automation 8" - url: /series/vra8 + url: /categories/vmware - title: "Projects" - url: /series/projects + url: /categories/self-hosting - title: "Code" url: /series/code - title: "Tips & Tricks" diff --git a/content/posts/removing-recreating-vcls-vms/index.md b/content/posts/removing-recreating-vcls-vms/index.md index f5c287e..2b4a981 100644 --- a/content/posts/removing-recreating-vcls-vms/index.md +++ b/content/posts/removing-recreating-vcls-vms/index.md @@ -14,7 +14,7 @@ featureImage: "basic-architecture.png" # Sets featured image on blog post. thumbnail: "basic-architecture.png" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: Tips # Projects, Code, vRA8 +categories: VMware # Projects, Code, vRA8 tags: - vmware - vsphere diff --git a/content/posts/run-scripts-in-guest-os-with-vra-abx-actions/index.md b/content/posts/run-scripts-in-guest-os-with-vra-abx-actions/index.md index 86bba78..b48fef3 100644 --- a/content/posts/run-scripts-in-guest-os-with-vra-abx-actions/index.md +++ b/content/posts/run-scripts-in-guest-os-with-vra-abx-actions/index.md @@ -1,5 +1,5 @@ --- -series: vRA8 +categories: VMware date: "2021-09-03T00:00:00Z" thumbnail: 20210903_action_run_success.png usePageBundles: true @@ -11,7 +11,7 @@ tags: - vmware title: Run scripts in guest OS with vRA ABX Actions --- -Thus far in my [vRealize Automation project](/series/vra8), I've primarily been handing the payload over to vRealize Orchestrator to do the heavy lifting on the back end. This approach works really well for complex multi-part workflows (like when [generating unique hostnames](/vra8-custom-provisioning-part-two#the-vro-workflow)), but it may be overkill for more linear tasks (such as just running some simple commands inside of a deployed guest OS). In this post, I'll explore how I use [vRA Action Based eXtensibility (ABX)](https://blogs.vmware.com/management/2020/09/vra-abx-flow.html) to do just that. +Thus far in my [vRealize Automation project](/categories/vmware), I've primarily been handing the payload over to vRealize Orchestrator to do the heavy lifting on the back end. This approach works really well for complex multi-part workflows (like when [generating unique hostnames](/vra8-custom-provisioning-part-two#the-vro-workflow)), but it may be overkill for more linear tasks (such as just running some simple commands inside of a deployed guest OS). In this post, I'll explore how I use [vRA Action Based eXtensibility (ABX)](https://blogs.vmware.com/management/2020/09/vra-abx-flow.html) to do just that. ### The Goal My ABX action is going to use PowerCLI to perform a few steps inside a deployed guest OS (Windows-only for this demonstration): diff --git a/content/posts/safeguard-your-androids-battery-with-tasker-home-assistant/index.md b/content/posts/safeguard-your-androids-battery-with-tasker-home-assistant/index.md index 77ad62e..0dddadb 100644 --- a/content/posts/safeguard-your-androids-battery-with-tasker-home-assistant/index.md +++ b/content/posts/safeguard-your-androids-battery-with-tasker-home-assistant/index.md @@ -1,5 +1,5 @@ --- -series: Projects +categories: Automation date: "2020-11-14T08:34:30Z" thumbnail: aeIOr8w6k.png usePageBundles: true @@ -11,11 +11,11 @@ tags: title: Safeguard your Android's battery with Tasker + Home Assistant --- -A few months ago, I started using the [AccuBattery app](https://play.google.com/store/apps/details?id=com.digibites.accubattery) to keep a closer eye on how I'd been charging my phones. The app has a handy feature that notifies you once the battery level reaches a certain threshold so you can pull the phone off the charger and extend the lithium battery's service life, and it even offers an estimate for what that impact might be. For instance, right now the app indicates that charging my Pixel 5 from 51% to 100% would cause 0.92 wear cycles, while stopping the charge at 80% would impose just 0.17 cycles. +A few months ago, I started using the [AccuBattery app](https://play.google.com/store/apps/details?id=com.digibites.accubattery) to keep a closer eye on how I'd been charging my phones. The app has a handy feature that notifies you once the battery level reaches a certain threshold so you can pull the phone off the charger and extend the lithium battery's service life, and it even offers an estimate for what that impact might be. For instance, right now the app indicates that charging my Pixel 5 from 51% to 100% would cause 0.92 wear cycles, while stopping the charge at 80% would impose just 0.17 cycles. ![AccuBattery screenshot](aeIOr8w6k.png) -But that depends on me being near my phone and conscious so I can take action when the notification goes off. That's often a big assumption to make - and, frankly, I'm lazy. +But that depends on me being near my phone and conscious so I can take action when the notification goes off. That's often a big assumption to make - and, frankly, I'm lazy. I'm fortunately also fairly crafty, so I came up with a way to combine my favorite Android automation app with my chosen home automation platform to take my laziness out of the picture. @@ -25,7 +25,7 @@ I'm fortunately also fairly crafty, so I came up with a way to combine my favori - [Tasker](https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm) - [Home Assistant Plug-In for Tasker](https://play.google.com/store/apps/details?id=com.markadamson.taskerplugin.homeassistant) -I'm not going to go through how to install Home Assistant on the Pi or how to configure it beyond what's strictly necessary for this particular recipe. The official [getting started documentation](https://www.home-assistant.io/getting-started/) is a great place to start. +I'm not going to go through how to install Home Assistant on the Pi or how to configure it beyond what's strictly necessary for this particular recipe. The official [getting started documentation](https://www.home-assistant.io/getting-started/) is a great place to start. ### The Recipe 1. Plug the Wemo into a wall outlet, and plug a phone charger into the Wemo. Add the Belkin Wemo integration in Home Assistant, and configure the device and entity. I named mine `switchy`. Make a note of the Entity ID: `switch.switchy`. We'll need that later. @@ -37,7 +37,7 @@ For the Service field, you need to tell HA what you want it to do. We want it to ```json {"entity_id": "switch.switchy"} ``` -Tap Test Service to make sure it works - and verify that the switch does indeed turn off. +Tap Test Service to make sure it works - and verify that the switch does indeed turn off. ![Creating and testing the service](U3LfmEJ_7.png) 4. Hard part is over. Now we just need to set up a profile in Tasker to fire our new task. I named mine 'Charge Limiter'. I started with `State > Power > Battery Level` and set it to trigger between 81-100%., and also added `State > Power > Source: Any` so it will only be active while charging. I also only want this to trigger while my phone is charging at home, so I added `State > Net > Wifi Connected` and then specified my home SSID. Link this profile to the Task you created earlier, and never worry about overcharging your phone again. ![Tasker profile to kill power above 80%](h7tl6facr.png) diff --git a/content/posts/salt-state-netdata-tailscale/index.md b/content/posts/salt-state-netdata-tailscale/index.md index 4b12172..ba89b01 100644 --- a/content/posts/salt-state-netdata-tailscale/index.md +++ b/content/posts/salt-state-netdata-tailscale/index.md @@ -6,7 +6,7 @@ description: "A hasty Salt state to deploy netdata monitoring and publish it int featured: false toc: true comments: true -series: Code +categories: Code tags: - homelab - iac diff --git a/content/posts/script-to-convert-posts-to-hugo-page-bundles/index.md b/content/posts/script-to-convert-posts-to-hugo-page-bundles/index.md index 322c839..25158c0 100644 --- a/content/posts/script-to-convert-posts-to-hugo-page-bundles/index.md +++ b/content/posts/script-to-convert-posts-to-hugo-page-bundles/index.md @@ -15,7 +15,7 @@ thumbnail: "thumbnail.png" # Sets thumbnail image appearing inside card on homep # shareImage: "/images/path/share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. codeMaxLines: 30 -series: Code +categories: Blog tags: - hugo - meta diff --git a/content/posts/script-to-update-image-embed-links-in-markdown-files/index.md b/content/posts/script-to-update-image-embed-links-in-markdown-files/index.md index 2c759cc..d347abb 100644 --- a/content/posts/script-to-update-image-embed-links-in-markdown-files/index.md +++ b/content/posts/script-to-update-image-embed-links-in-markdown-files/index.md @@ -1,5 +1,5 @@ --- -series: Code +categories: Blog date: "2021-07-19T16:03:30Z" usePageBundles: true tags: diff --git a/content/posts/secure-networking-made-simple-with-tailscale/index.md b/content/posts/secure-networking-made-simple-with-tailscale/index.md index 1d22617..5ea3455 100644 --- a/content/posts/secure-networking-made-simple-with-tailscale/index.md +++ b/content/posts/secure-networking-made-simple-with-tailscale/index.md @@ -14,7 +14,7 @@ featureImageAlt: 'Tailscale Logo' # Alternative text for featured image. thumbnail: "Tailscale-AppIcon.png" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: Projects +categories: Self-Hosting tags: - vpn - wireguard diff --git a/content/posts/setting-up-linux-on-a-new-lenovo-chromebook-duet-bonus-arm64-complications/index.md b/content/posts/setting-up-linux-on-a-new-lenovo-chromebook-duet-bonus-arm64-complications/index.md index 7c62d7a..4b8dc2d 100644 --- a/content/posts/setting-up-linux-on-a-new-lenovo-chromebook-duet-bonus-arm64-complications/index.md +++ b/content/posts/setting-up-linux-on-a-new-lenovo-chromebook-duet-bonus-arm64-complications/index.md @@ -1,5 +1,5 @@ --- -series: Projects +categories: ChromeOS date: "2020-10-27T08:34:30Z" lastmod: "2021-05-20" thumbnail: XtmaR9Z0J.png diff --git a/content/posts/showdown-lenovo-chromebook-duet-vs-google-pixel-slate/index.md b/content/posts/showdown-lenovo-chromebook-duet-vs-google-pixel-slate/index.md index ebefe97..735ac28 100644 --- a/content/posts/showdown-lenovo-chromebook-duet-vs-google-pixel-slate/index.md +++ b/content/posts/showdown-lenovo-chromebook-duet-vs-google-pixel-slate/index.md @@ -4,6 +4,7 @@ thumbnail: P-x5qEg_9.jpeg usePageBundles: true tags: - chromeos +categories: ChromeOS title: 'Showdown: Lenovo Chromebook Duet vs. Google Pixel Slate' --- @@ -14,9 +15,9 @@ Okay, okay, this isn't actually going to be a comparison review between the two ### Background Up until last week, I'd been using the Slate as my primary personal computing device for the previous 20 months or so, mainly in laptop mode (as opposed to tablet mode). I do a lot of casual web browsing, and I spend a significant portion of my free time helping other users on Google's product support forums as a part of the [Google Product Experts program](https://productexperts.withgoogle.com/what-it-is). I also work a lot with the [Chrome OS Linux (Beta) environment](/setting-up-linux-on-a-new-lenovo-chromebook-duet-bonus-arm64-complications), but I avoid Android apps as much as I can. And I also used the Slate for a bit of Stadia gaming when I wasn't near a Chromecast. -So the laptop experience is generally more important to me than the tablet one. I need to be able to work with a large number of browser tabs, but I don't typically need to do any heavy processing directly on the computer. +So the laptop experience is generally more important to me than the tablet one. I need to be able to work with a large number of browser tabs, but I don't typically need to do any heavy processing directly on the computer. -I was pretty happy with the Slate, but its expensive keyboard stopped working recently and replacements aren't really available anywhere. Remember, laptop mode is key for my use case so the Pixel Slate became instantly unusable to me. +I was pretty happy with the Slate, but its expensive keyboard stopped working recently and replacements aren't really available anywhere. Remember, laptop mode is key for my use case so the Pixel Slate became instantly unusable to me. ### Size When you put these machines side by side, the first difference that jumps out is the size disparity. The 12.3" Pixel Slate is positively massive next to the 10.1" Lenovo Duet. @@ -24,14 +25,14 @@ When you put these machines side by side, the first difference that jumps out is The Duet is physically smaller so the display itself is of course smaller. I had a brief moment of panic when I first logged in and the setup wizard completely filled the screen. Dialing Chrome OS's display scaling down to 80% strikes a good balance for me between fonts being legible while still displaying enough content to be worthwhile. It can get a bit tight when you've got windows docked side-by-side but I'm getting by okay. -Of course, the smaller size of the Duet also makes it work better as a tablet in my mind. It's comfortable enough to hold with one hand while you interact with the other, whereas the Slate always felt a little too big for that to me. +Of course, the smaller size of the Duet also makes it work better as a tablet in my mind. It's comfortable enough to hold with one hand while you interact with the other, whereas the Slate always felt a little too big for that to me. ![One-handing the Duet](qne9SybLi.jpeg) ### Keyboard A far more impactful size difference is the keyboards though. The Duet keyboard gets a bit cramped, particularly over toward the right side (you know, those pesky braces and semicolons that are *never* needed when coding): ![The Duet's keyboard is MUCH smaller](CBziPHD8A.jpeg) -Getting used to typing on this significantly smaller keyboard has been the biggest adjustment so far. The pad on my pinky finger is wider than the last few keys at the right edge of the keyboard so I've struggled with accurately hitting the correct `[` or `]`, and also with smacking Return (and inevitably sending a malformed chat message) when trying to insert an apostrophe. I feel like I'm slowly getting the hang of it, but like I said, it's been an adjustment. +Getting used to typing on this significantly smaller keyboard has been the biggest adjustment so far. The pad on my pinky finger is wider than the last few keys at the right edge of the keyboard so I've struggled with accurately hitting the correct `[` or `]`, and also with smacking Return (and inevitably sending a malformed chat message) when trying to insert an apostrophe. I feel like I'm slowly getting the hang of it, but like I said, it's been an adjustment. ### Cover ![Cover up!](yiCW6XZbF.jpeg) @@ -39,7 +40,7 @@ The Pixel Slate's keyboard + folio cover is a single (floppy) piece. The keyboar ![Duet's fabric cover](9_Ze3zyBk.jpeg) -The Duet's rear cover has a fabric finish kind of similar to the cases Google offers for their phones, and it provides a great texture for holding the tablet. It sticks to the back of the Duet through the magic of magnets, and the lower half of it folds out to create a really sturdy kickstand. And it's completely separate from the keyboard which is great for when you're using the Duet as a tablet (either handheld or propped up for watching a movie or gaming with Stadia). +The Duet's rear cover has a fabric finish kind of similar to the cases Google offers for their phones, and it provides a great texture for holding the tablet. It sticks to the back of the Duet through the magic of magnets, and the lower half of it folds out to create a really sturdy kickstand. And it's completely separate from the keyboard which is great for when you're using the Duet as a tablet (either handheld or propped up for watching a movie or gaming with Stadia). ![Duet kickstand](nWRu2TB8i.jpeg) @@ -48,9 +49,9 @@ And this little kickstand can go *low*, much lower than the Slate. This makes it ![The Duet handily wins this limbo competition](BAf7knBk5.jpeg) ### Performance -The Duet does struggle a bit here. It's basically got a [smartphone processor](https://www.notebookcheck.net/Mediatek-Helio-P60T-Processor-Benchmarks-and-Specs.470711.0.html) and half the RAM of the Slate. Switching between windows and tabs sometimes takes an extra moment or two to catch up (particularly if said tab has been silently suspended in the background). Similarly, working with Linux apps is just a bit slower than you'd like it to be. Still, I've spent a bit more than a week now with the Duet as my go-to computer and it's never really been slow enough to bother me. +The Duet does struggle a bit here. It's basically got a [smartphone processor](https://www.notebookcheck.net/Mediatek-Helio-P60T-Processor-Benchmarks-and-Specs.470711.0.html) and half the RAM of the Slate. Switching between windows and tabs sometimes takes an extra moment or two to catch up (particularly if said tab has been silently suspended in the background). Similarly, working with Linux apps is just a bit slower than you'd like it to be. Still, I've spent a bit more than a week now with the Duet as my go-to computer and it's never really been slow enough to bother me. -That arm64 processor does make finding compatible Linux packages a little more difficult than it's been on amd64 architectures but a [little bit of digging](/setting-up-linux-on-a-new-lenovo-chromebook-duet-bonus-arm64-complications) will get past that limitation in most cases. +That arm64 processor does make finding compatible Linux packages a little more difficult than it's been on amd64 architectures but a [little bit of digging](/setting-up-linux-on-a-new-lenovo-chromebook-duet-bonus-arm64-complications) will get past that limitation in most cases. The upside of that smartphone processor is that the battery life is *insane*. After about seven hours of light usage today I'm sitting at 63% - with an estimated nine hours remaining. This thing keeps going and going, even while Stadia-ing for hours. Being able to play Far Cry 5 without being tethered to a wall is so nice. diff --git a/content/posts/snikket-private-xmpp-chat-on-oracle-cloud-free-tier/index.md b/content/posts/snikket-private-xmpp-chat-on-oracle-cloud-free-tier/index.md index 6051bca..7311d63 100644 --- a/content/posts/snikket-private-xmpp-chat-on-oracle-cloud-free-tier/index.md +++ b/content/posts/snikket-private-xmpp-chat-on-oracle-cloud-free-tier/index.md @@ -14,7 +14,7 @@ usePageBundles: true thumbnail: "snikket.png" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: Projects +categories: Self-Hosting tags: - linux - cloud diff --git a/content/posts/spotlight-on-torchlight/index.md b/content/posts/spotlight-on-torchlight/index.md index 6faf1e4..7d85fed 100644 --- a/content/posts/spotlight-on-torchlight/index.md +++ b/content/posts/spotlight-on-torchlight/index.md @@ -6,7 +6,7 @@ description: "Syntax highlighting powered by the Torchlight.dev API makes it eas featured: false toc: true comments: true -series: Projects # Projects, Code +categories: Blog tags: - javascript - hugo diff --git a/content/posts/systemctl-edit-delay-service-startup/index.md b/content/posts/systemctl-edit-delay-service-startup/index.md index d4df138..a4b8b87 100644 --- a/content/posts/systemctl-edit-delay-service-startup/index.md +++ b/content/posts/systemctl-edit-delay-service-startup/index.md @@ -6,7 +6,7 @@ description: "Quick notes on using `systemctl edit` to override a systemd servic featured: false toc: false comments: true -series: Tips # Projects, Code +categories: Tips # Projects, Code tags: - crostini - linux diff --git a/content/posts/tailscale-golink-private-shortlinks-tailnet/index.md b/content/posts/tailscale-golink-private-shortlinks-tailnet/index.md index 32eae50..5c2fba1 100644 --- a/content/posts/tailscale-golink-private-shortlinks-tailnet/index.md +++ b/content/posts/tailscale-golink-private-shortlinks-tailnet/index.md @@ -14,7 +14,7 @@ usePageBundles: true thumbnail: "golinks.png" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: Projects # Projects, Code, vRA8, K8s on vSphere +categories: Self-Hosting # Projects, Code, vRA8, K8s on vSphere tags: - docker - vpn diff --git a/content/posts/tailscale-on-vmware-photon/index.md b/content/posts/tailscale-on-vmware-photon/index.md index 86ff567..4ed4011 100644 --- a/content/posts/tailscale-on-vmware-photon/index.md +++ b/content/posts/tailscale-on-vmware-photon/index.md @@ -14,7 +14,7 @@ usePageBundles: true thumbnail: "Tailscale-AppIcon.png" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: Tips # Projects, Code, vRA8, K8s on vSphere +categories: Tips # Projects, Code, vRA8, K8s on vSphere tags: - vmware - linux diff --git a/content/posts/tailscale-serve-docker-compose-sidecar/index.md b/content/posts/tailscale-serve-docker-compose-sidecar/index.md index e06e37b..498bd04 100644 --- a/content/posts/tailscale-serve-docker-compose-sidecar/index.md +++ b/content/posts/tailscale-serve-docker-compose-sidecar/index.md @@ -6,7 +6,7 @@ description: "Using Docker Compose to deploy containerized applications and make featured: false toc: true comments: true -series: Projects +categories: Self-Hosting tags: - containers - docker diff --git a/content/posts/tailscale-ssh-serve-funnel/index.md b/content/posts/tailscale-ssh-serve-funnel/index.md index ab73d8b..2bd7d0b 100644 --- a/content/posts/tailscale-ssh-serve-funnel/index.md +++ b/content/posts/tailscale-ssh-serve-funnel/index.md @@ -6,7 +6,7 @@ description: "Exploring some of my favorite Tailscale addon features: SSH, Serve featured: false toc: true comments: true -series: Tips # Projects, Code +categories: Tips # Projects, Code tags: - homelab - networking diff --git a/content/posts/tanzu-community-edition-k8s-homelab/index.md b/content/posts/tanzu-community-edition-k8s-homelab/index.md index f6d26f4..ab740d3 100644 --- a/content/posts/tanzu-community-edition-k8s-homelab/index.md +++ b/content/posts/tanzu-community-edition-k8s-homelab/index.md @@ -14,7 +14,7 @@ usePageBundles: true thumbnail: "tanzu_community_edition.png" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: K8s on vSphere +categories: VMware tags: - vmware - linux diff --git a/content/posts/upgrading-standalone-vsphere-host-with-esxcli/index.md b/content/posts/upgrading-standalone-vsphere-host-with-esxcli/index.md index 7d89bc1..e2bcc91 100644 --- a/content/posts/upgrading-standalone-vsphere-host-with-esxcli/index.md +++ b/content/posts/upgrading-standalone-vsphere-host-with-esxcli/index.md @@ -14,7 +14,7 @@ featureImage: "esxi8.png" # Sets featured image on blog post. # thumbnail: "thumbnail.png" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: Tips # Projects, Code, vRA8 +categories: VMware # Projects, Code, vRA8 tags: - vmware - homelab diff --git a/content/posts/using-powershell-and-a-scheduled-task-to-apply-windows-updates/index.md b/content/posts/using-powershell-and-a-scheduled-task-to-apply-windows-updates/index.md index b2e5244..fe37d42 100644 --- a/content/posts/using-powershell-and-a-scheduled-task-to-apply-windows-updates/index.md +++ b/content/posts/using-powershell-and-a-scheduled-task-to-apply-windows-updates/index.md @@ -1,5 +1,5 @@ --- -series: Code +categories: Code date: "2021-04-29T08:34:30Z" usePageBundles: true tags: @@ -9,7 +9,7 @@ title: Using PowerShell and a Scheduled Task to apply Windows Updates toc: false --- -In the same vein as [my script to automagically resize a Linux LVM volume to use up free space on a disk](/automatic-unattended-expansion-of-linux-root-lvm-volume-to-fill-disk), I wanted a way to automatically apply Windows updates for servers deployed by [my vRealize Automation environment](/series/vra8). I'm only really concerned with Windows Server 2019, which includes the [built-in Windows Update Provider PowerShell module](https://4sysops.com/archives/scan-download-and-install-windows-updates-with-powershell/). So this could be as simple as `Install-WUUpdates -Updates (Start-WUScan)` to scan for and install any available updates. +In the same vein as [my script to automagically resize a Linux LVM volume to use up free space on a disk](/automatic-unattended-expansion-of-linux-root-lvm-volume-to-fill-disk), I wanted a way to automatically apply Windows updates for servers deployed by [my vRealize Automation environment](/categories/vmware). I'm only really concerned with Windows Server 2019, which includes the [built-in Windows Update Provider PowerShell module](https://4sysops.com/archives/scan-download-and-install-windows-updates-with-powershell/). So this could be as simple as `Install-WUUpdates -Updates (Start-WUScan)` to scan for and install any available updates. Unfortunately, I found that this approach can take a long time to run and often exceeded the timeout limits imposed upon my ABX script, causing the PowerShell session to end and terminating the update process. I really needed a way to do this without requiring a persistent session. diff --git a/content/posts/using-vs-code-to-explore-giant-log-bundles/index.md b/content/posts/using-vs-code-to-explore-giant-log-bundles/index.md index 2c7d3c9..a0209de 100644 --- a/content/posts/using-vs-code-to-explore-giant-log-bundles/index.md +++ b/content/posts/using-vs-code-to-explore-giant-log-bundles/index.md @@ -1,5 +1,5 @@ --- -series: Tips +categories: Tips date: "2021-02-18T08:34:30Z" thumbnail: PPZu_UOGO.png usePageBundles: true diff --git a/content/posts/using-vsphere-diagnostic-tool-fling/index.md b/content/posts/using-vsphere-diagnostic-tool-fling/index.md index e981d2c..2051cbe 100644 --- a/content/posts/using-vsphere-diagnostic-tool-fling/index.md +++ b/content/posts/using-vsphere-diagnostic-tool-fling/index.md @@ -14,7 +14,7 @@ featureImage: "vdt.png" # Sets featured image on blog post. thumbnail: "pulse2.png" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -series: Tips # Projects, Code, vRA8 +categories: VMware # Projects, Code, vRA8 tags: - vmware - vsphere diff --git a/content/posts/virtually-potato-migrated-to-github-pages/index.md b/content/posts/virtually-potato-migrated-to-github-pages/index.md index adedfa9..8822080 100644 --- a/content/posts/virtually-potato-migrated-to-github-pages/index.md +++ b/content/posts/virtually-potato-migrated-to-github-pages/index.md @@ -2,6 +2,7 @@ date: "2021-07-20T22:20:00Z" thumbnail: 20210720-jekyll.png usePageBundles: true +categories: Blog tags: - linux - meta @@ -71,4 +72,4 @@ And there it is! ### `git push` time Alright that's enough rambling for now. I'm very happy with this new setup, particularly with the automatically-generated Table of Contents to help folks navigate some of my longer posts. (I can't believe I was having to piece those together manually in this blog's previous iteration!) -I'll continue to make some additional tweaks in the coming weeks but for now I'll `git push` this post and get back to documenting my never-ending [vRA project](/series/vra8). \ No newline at end of file +I'll continue to make some additional tweaks in the coming weeks but for now I'll `git push` this post and get back to documenting my never-ending [vRA project](/categories/vmware). \ No newline at end of file diff --git a/content/posts/virtuallypotato-runtimeterror/index.md b/content/posts/virtuallypotato-runtimeterror/index.md index 27046d5..1fa94c9 100644 --- a/content/posts/virtuallypotato-runtimeterror/index.md +++ b/content/posts/virtuallypotato-runtimeterror/index.md @@ -7,6 +7,7 @@ draft: false description: "This blog has migrated from virtuallypotato.com to runtimeterror.dev." toc: false comments: true +categories: Blog tags: - meta --- @@ -19,7 +20,7 @@ ln -s virtuallypotato.com runtimeterror.dev If you've noticed that things look a bit different around here, you might *also* have noticed that my posts about VMware products had become less and less frequent over the past year or so. That wasn't intentional, but a side-effect of some shifting priorities with a new position at work. I'm no longer on the team responsible for our VMware environment and am now more focused on cloud-native technologies and open-source DevOps solutions. The new role keeps me pretty busy, and I'm using what free time I have to learn more about and experiment with the technologies I use at work. -That (unfortunately) means that I won't be posting much (if at all) about VMware-related things (including the [vRA8 series of posts](/series/vra8/))[^vra8] going forward. Instead, expect to see more posts about things like [containers](/tags/containers/), [infrastructure-as-code](/tags/iac/), [self-hosting](/tags/selfhosting/), and [miscellaneous tech projects](/series/projects/) that I play with. +That (unfortunately) means that I won't be posting much (if at all) about VMware-related things (including the [vRA8 series of posts](/categories/vmware/))[^vra8] going forward. Instead, expect to see more posts about things like [containers](/tags/containers/), [infrastructure-as-code](/tags/iac/), [self-hosting](/tags/selfhosting/), and [miscellaneous tech projects](/categories/self-hosting/) that I play with. I decided to migrate, rebrand, and re-theme my blog to reflect this change in focus. virtuallypotato used a [theme heavily inspired by VMware design language](https://github.com/chipzoller/hugo-clarity), and I don't think it's a great fit for the current (and future) content anymore. That theme is also very feature-rich which provides a lot of capability out of the box but makes it a bit tricky to modify (and maintain) my personal tweaks. The new runtimeterror[^pun] site uses a [more minimal theme](https://github.com/joeroe/risotto) which takes cues from terminals and markdown formatting. It's also simpler and thus easier for me to tweak. I've done a lot of that already and anticipating doing a bit more in the coming weeks, but I wanted to go ahead and make this thing "live" for now. diff --git a/content/posts/vmware-home-lab-on-intel-nuc-9/index.md b/content/posts/vmware-home-lab-on-intel-nuc-9/index.md index 410cc54..bc6f20a 100644 --- a/content/posts/vmware-home-lab-on-intel-nuc-9/index.md +++ b/content/posts/vmware-home-lab-on-intel-nuc-9/index.md @@ -1,5 +1,5 @@ --- -series: vRA8 +categories: VMware date: "2021-02-05T08:34:30Z" thumbnail: SIDah-Lag.png usePageBundles: true diff --git a/content/posts/vra8-automatic-deployment-naming-another-take/index.md b/content/posts/vra8-automatic-deployment-naming-another-take/index.md index 071f50e..48ce81e 100644 --- a/content/posts/vra8-automatic-deployment-naming-another-take/index.md +++ b/content/posts/vra8-automatic-deployment-naming-another-take/index.md @@ -1,5 +1,5 @@ --- -series: vRA8 +categories: VMware date: "2021-05-20T08:34:30Z" thumbnail: wl-WPQpEl.png usePageBundles: true diff --git a/content/posts/vra8-custom-provisioning-part-four/index.md b/content/posts/vra8-custom-provisioning-part-four/index.md index dc93d30..01711e7 100644 --- a/content/posts/vra8-custom-provisioning-part-four/index.md +++ b/content/posts/vra8-custom-provisioning-part-four/index.md @@ -1,5 +1,5 @@ --- -series: vRA8 +categories: VMware date: "2021-05-18T08:34:30Z" lastmod: "2021-05-20" thumbnail: hFPeakMxn.png diff --git a/content/posts/vra8-custom-provisioning-part-one/index.md b/content/posts/vra8-custom-provisioning-part-one/index.md index a8a1699..34c3f6d 100644 --- a/content/posts/vra8-custom-provisioning-part-one/index.md +++ b/content/posts/vra8-custom-provisioning-part-one/index.md @@ -1,5 +1,5 @@ --- -series: vRA8 +categories: VMware date: "2021-03-29T08:34:30Z" thumbnail: VZaK4btzl.png usePageBundles: true diff --git a/content/posts/vra8-custom-provisioning-part-three/index.md b/content/posts/vra8-custom-provisioning-part-three/index.md index f4b0de6..e9bfd8c 100644 --- a/content/posts/vra8-custom-provisioning-part-three/index.md +++ b/content/posts/vra8-custom-provisioning-part-three/index.md @@ -1,5 +1,5 @@ --- -series: vRA8 +categories: VMware date: "2021-04-19T08:34:30Z" thumbnail: K6vcxpDj8.png usePageBundles: true diff --git a/content/posts/vra8-custom-provisioning-part-two/index.md b/content/posts/vra8-custom-provisioning-part-two/index.md index 7bc25c4..b7d0e69 100644 --- a/content/posts/vra8-custom-provisioning-part-two/index.md +++ b/content/posts/vra8-custom-provisioning-part-two/index.md @@ -1,5 +1,5 @@ --- -series: vRA8 +categories: VMware date: "2021-04-02T08:34:30Z" lastmod: "2022-03-23" thumbnail: HXrAMJrH.png diff --git a/layouts/partials/archive.html b/layouts/partials/archive.html index 3cbf057..2569aeb 100644 --- a/layouts/partials/archive.html +++ b/layouts/partials/archive.html @@ -11,27 +11,38 @@ {{ .Content }} -{{- if ne .Title "Tags"}} -{{- range (.Paginate $pages).Pages }} -{{- $postDate := .Date.Format "2006-01-02" }} -{{- $updateDate := .Lastmod.Format "2006-01-02" }} -

      -
      -

      {{ .Title | markdownify }}

      - -
      - -
      - {{ .Summary }} -
      -
      -
      -{{ end }} -{{- template "_internal/pagination.html" . }} +{{- if eq .Kind "taxonomy" }} + {{- if eq .Title "Tags" }} + {{- range $key, $value := .Site.Taxonomies }} + {{- $slicedTags := ($value.ByCount) }} + {{- range $slicedTags }} + {{- if eq $key "tags"}} + [{{ .Name }}{{ .Count }}] + {{- end }} + {{- end }} + {{- end }} + {{- else }} + {{- range .Pages }} + {{ .Title | markdownify }}
      + {{ end }} + {{- end }} {{- else }} -{{- range .Pages.ByTitle }} - [{{ .Title | markdownify }}] -{{- end }} + {{- range (.Paginate $pages).Pages }} + {{- $postDate := .Date.Format "2006-01-02" }} + {{- $updateDate := .Lastmod.Format "2006-01-02" }} +
      +
      +

      {{ .Title | markdownify }}

      + +
      + +
      + {{ .Summary }} +
      +
      +
      + {{- end }} + {{- template "_internal/pagination.html" . }} {{- end }} \ No newline at end of file diff --git a/layouts/partials/aside.html b/layouts/partials/aside.html index 0326171..89483b4 100644 --- a/layouts/partials/aside.html +++ b/layouts/partials/aside.html @@ -27,10 +27,10 @@ {{- end }} {{ end }} -{{ if isset .Params "series" }} -{{$related := where .Site.RegularPages ".Params.series" "eq" .Params.series }} +{{ if isset .Params "categories" }} +{{$related := where .Site.RegularPages ".Params.categories" "eq" .Params.categories }} {{- $relatedLimit := default 8 .Site.Params.numberOfRelatedPosts }} -

      More {{ .Params.series }}

      +

      More {{ .Params.categories }}

      diff --git a/torchlight.config.js b/torchlight.config.js index 202e334..abdbd00 100644 --- a/torchlight.config.js +++ b/torchlight.config.js @@ -59,7 +59,7 @@ module.exports = { excludePatterns: [ '/node_modules/', '/vendor/', - '/series/', + '/categories/', '/tags/' ] } From d9d1d905ea59a3aa7d0b0c1e4ae107b825ec36e5 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Thu, 18 Jan 2024 20:42:49 -0600 Subject: [PATCH 35/69] remove taxos from nav --- config/_default/menu.toml | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/config/_default/menu.toml b/config/_default/menu.toml index a9e3300..1016a4c 100644 --- a/config/_default/menu.toml +++ b/config/_default/menu.toml @@ -11,22 +11,16 @@ weight = 1 [[main]] - identifier = "categories" - name = "categories" - url = "/categories/" + identifier = "uses" + name = "uses" + url = "/uses" weight = 2 -[[main]] - identifier = "tags" - name = "tags" - url = "/tags/" - weight = 3 - [[main]] identifier = "about" name = "about" url = "/about/" - weight = 4 + weight = 3 [[main]] identifier = "virtuallypotato" From 794aacb928ed77533c6fe914123bc32322af0c9f Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Thu, 18 Jan 2024 20:43:00 -0600 Subject: [PATCH 36/69] style tags archive list --- layouts/partials/archive.html | 4 +++- static/css/custom.css | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/layouts/partials/archive.html b/layouts/partials/archive.html index 2569aeb..0bd5bfb 100644 --- a/layouts/partials/archive.html +++ b/layouts/partials/archive.html @@ -13,14 +13,16 @@ {{- if eq .Kind "taxonomy" }} {{- if eq .Title "Tags" }} +
      {{- range $key, $value := .Site.Taxonomies }} {{- $slicedTags := ($value.ByCount) }} {{- range $slicedTags }} {{- if eq $key "tags"}} - [{{ .Name }}{{ .Count }}] +
      {{ .Name }}{{ .Count }}
      {{- end }} {{- end }} {{- end }} +
      {{- else }} {{- range .Pages }} {{ .Title | markdownify }}
      diff --git a/static/css/custom.css b/static/css/custom.css index 86e0365..622a273 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -253,4 +253,20 @@ form button { border: none; background-color: var(--off-bg); color: var(--link); +} + +/* tags list styling */ +.tagsArchive { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); + grid-gap: 0.5rem; + /* justify-content: center; */ + margin: 0.5rem 0; + +} + +.tagsArchive sup { + font-size: 0.75rem; + margin-left: 0.2rem; + margin-right: 0.5rem; } \ No newline at end of file From 9bc58f84628165974c5a579e4d7ed8fa495db92c Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Thu, 18 Jan 2024 21:53:04 -0600 Subject: [PATCH 37/69] shift some taxos --- .../index.md | 2 +- .../index.md | 2 +- content/posts/hello-hugo/index.md | 2 +- .../powercli-list-linux-vms-and-datacenter-locations/index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../posts/script-to-convert-posts-to-hugo-page-bundles/index.md | 2 +- .../index.md | 2 +- content/posts/spotlight-on-torchlight/index.md | 2 +- .../posts/virtually-potato-migrated-to-github-pages/index.md | 2 +- content/posts/virtuallypotato-runtimeterror/index.md | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/content/posts/auto-connect-to-protonvpn-on-untrusted-wifi-with-tasker/index.md b/content/posts/auto-connect-to-protonvpn-on-untrusted-wifi-with-tasker/index.md index ca68133..4dbd640 100644 --- a/content/posts/auto-connect-to-protonvpn-on-untrusted-wifi-with-tasker/index.md +++ b/content/posts/auto-connect-to-protonvpn-on-untrusted-wifi-with-tasker/index.md @@ -1,5 +1,5 @@ --- -categories: Automation +categories: Code date: "2020-11-24T08:34:30Z" lastmod: "2021-03-12" thumbnail: Ki7jo65t3.png diff --git a/content/posts/automating-camera-notifications-home-assistant-ntfy/index.md b/content/posts/automating-camera-notifications-home-assistant-ntfy/index.md index 2c3f129..0e7073f 100644 --- a/content/posts/automating-camera-notifications-home-assistant-ntfy/index.md +++ b/content/posts/automating-camera-notifications-home-assistant-ntfy/index.md @@ -8,7 +8,7 @@ alias: automating-security-camera-notifications-with-home-assistant-and-ntfy toc: true comments: true thumbnail: thumbnail.png -categories: Automation +categories: Self-Hosting tags: - api - automation diff --git a/content/posts/hello-hugo/index.md b/content/posts/hello-hugo/index.md index 2b0c107..7468624 100644 --- a/content/posts/hello-hugo/index.md +++ b/content/posts/hello-hugo/index.md @@ -16,7 +16,7 @@ shareImage: "/hugo-logo-wide.png" # shareImage: "/images/path/share.png" # Designate a separate image for social media sharing. codeMaxLines: 10 # Override global value for how many lines within a code block before auto-collapsing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -categories: Blog +categories: Backstage tags: - meta - hugo diff --git a/content/posts/powercli-list-linux-vms-and-datacenter-locations/index.md b/content/posts/powercli-list-linux-vms-and-datacenter-locations/index.md index 5c2ddaf..1d7b22e 100644 --- a/content/posts/powercli-list-linux-vms-and-datacenter-locations/index.md +++ b/content/posts/powercli-list-linux-vms-and-datacenter-locations/index.md @@ -14,7 +14,7 @@ usePageBundles: true thumbnail: "PowerCLI.png" # Sets thumbnail image appearing inside card on homepage. # shareImage: "share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. -categories: VMware +categories: Code tags: - vmware - powercli diff --git a/content/posts/recreating-hashnode-series-categories-in-jekyll-on-github-pages/index.md b/content/posts/recreating-hashnode-series-categories-in-jekyll-on-github-pages/index.md index d5e9a08..d393e19 100644 --- a/content/posts/recreating-hashnode-series-categories-in-jekyll-on-github-pages/index.md +++ b/content/posts/recreating-hashnode-series-categories-in-jekyll-on-github-pages/index.md @@ -1,5 +1,5 @@ --- -categories: Blog +categories: Backstage date: "2021-07-24T16:46:00Z" thumbnail: 20210724-series-navigation.png usePageBundles: true diff --git a/content/posts/safeguard-your-androids-battery-with-tasker-home-assistant/index.md b/content/posts/safeguard-your-androids-battery-with-tasker-home-assistant/index.md index 0dddadb..f319500 100644 --- a/content/posts/safeguard-your-androids-battery-with-tasker-home-assistant/index.md +++ b/content/posts/safeguard-your-androids-battery-with-tasker-home-assistant/index.md @@ -1,5 +1,5 @@ --- -categories: Automation +categories: Code date: "2020-11-14T08:34:30Z" thumbnail: aeIOr8w6k.png usePageBundles: true diff --git a/content/posts/script-to-convert-posts-to-hugo-page-bundles/index.md b/content/posts/script-to-convert-posts-to-hugo-page-bundles/index.md index 25158c0..1673d13 100644 --- a/content/posts/script-to-convert-posts-to-hugo-page-bundles/index.md +++ b/content/posts/script-to-convert-posts-to-hugo-page-bundles/index.md @@ -15,7 +15,7 @@ thumbnail: "thumbnail.png" # Sets thumbnail image appearing inside card on homep # shareImage: "/images/path/share.png" # Designate a separate image for social media sharing. codeLineNumbers: false # Override global value for showing of line numbers within code block. codeMaxLines: 30 -categories: Blog +categories: Backstage tags: - hugo - meta diff --git a/content/posts/script-to-update-image-embed-links-in-markdown-files/index.md b/content/posts/script-to-update-image-embed-links-in-markdown-files/index.md index d347abb..251fcd0 100644 --- a/content/posts/script-to-update-image-embed-links-in-markdown-files/index.md +++ b/content/posts/script-to-update-image-embed-links-in-markdown-files/index.md @@ -1,5 +1,5 @@ --- -categories: Blog +categories: Backstage date: "2021-07-19T16:03:30Z" usePageBundles: true tags: diff --git a/content/posts/spotlight-on-torchlight/index.md b/content/posts/spotlight-on-torchlight/index.md index 7d85fed..f42c4e1 100644 --- a/content/posts/spotlight-on-torchlight/index.md +++ b/content/posts/spotlight-on-torchlight/index.md @@ -6,7 +6,7 @@ description: "Syntax highlighting powered by the Torchlight.dev API makes it eas featured: false toc: true comments: true -categories: Blog +categories: Backstage tags: - javascript - hugo diff --git a/content/posts/virtually-potato-migrated-to-github-pages/index.md b/content/posts/virtually-potato-migrated-to-github-pages/index.md index 8822080..d22b476 100644 --- a/content/posts/virtually-potato-migrated-to-github-pages/index.md +++ b/content/posts/virtually-potato-migrated-to-github-pages/index.md @@ -2,7 +2,7 @@ date: "2021-07-20T22:20:00Z" thumbnail: 20210720-jekyll.png usePageBundles: true -categories: Blog +categories: Backstage tags: - linux - meta diff --git a/content/posts/virtuallypotato-runtimeterror/index.md b/content/posts/virtuallypotato-runtimeterror/index.md index 1fa94c9..2babfd2 100644 --- a/content/posts/virtuallypotato-runtimeterror/index.md +++ b/content/posts/virtuallypotato-runtimeterror/index.md @@ -7,7 +7,7 @@ draft: false description: "This blog has migrated from virtuallypotato.com to runtimeterror.dev." toc: false comments: true -categories: Blog +categories: Backstage tags: - meta --- From 6223e351087e6d831ef06e54c49c0ed71a609255 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Thu, 18 Jan 2024 21:53:48 -0600 Subject: [PATCH 38/69] add descriptions to categories --- content/categories/backstage/_index.md | 5 +++++ content/categories/chromeos/_index.md | 5 +++++ content/categories/code/_index.md | 5 +++++ content/categories/self-hosting/_index.md | 5 +++++ content/categories/tips/_index.md | 5 +++++ content/categories/vmware/_index.md | 4 ++++ 6 files changed, 29 insertions(+) create mode 100644 content/categories/backstage/_index.md create mode 100644 content/categories/chromeos/_index.md create mode 100644 content/categories/code/_index.md create mode 100644 content/categories/self-hosting/_index.md create mode 100644 content/categories/tips/_index.md create mode 100644 content/categories/vmware/_index.md diff --git a/content/categories/backstage/_index.md b/content/categories/backstage/_index.md new file mode 100644 index 0000000..3ba2df5 --- /dev/null +++ b/content/categories/backstage/_index.md @@ -0,0 +1,5 @@ +--- +title: Backstage +description: > + A peek behind the scenes at what it takes to run this site. +--- \ No newline at end of file diff --git a/content/categories/chromeos/_index.md b/content/categories/chromeos/_index.md new file mode 100644 index 0000000..69d9943 --- /dev/null +++ b/content/categories/chromeos/_index.md @@ -0,0 +1,5 @@ +--- +title: "ChromeOS" +description: > + My Chromebook is a lot more than just a browser. +--- \ No newline at end of file diff --git a/content/categories/code/_index.md b/content/categories/code/_index.md new file mode 100644 index 0000000..cefa911 --- /dev/null +++ b/content/categories/code/_index.md @@ -0,0 +1,5 @@ +--- +title: Code +description: > + I did a programming and I wanted you to see. +--- \ No newline at end of file diff --git a/content/categories/self-hosting/_index.md b/content/categories/self-hosting/_index.md new file mode 100644 index 0000000..8964bc4 --- /dev/null +++ b/content/categories/self-hosting/_index.md @@ -0,0 +1,5 @@ +--- +title: Self-Hosting +description: > + Never met an app I didn't want to deploy. +--- \ No newline at end of file diff --git a/content/categories/tips/_index.md b/content/categories/tips/_index.md new file mode 100644 index 0000000..f09acf1 --- /dev/null +++ b/content/categories/tips/_index.md @@ -0,0 +1,5 @@ +--- +title: Tips +description: > + I learned something the hard way so that you wouldn't have to. +--- \ No newline at end of file diff --git a/content/categories/vmware/_index.md b/content/categories/vmware/_index.md new file mode 100644 index 0000000..88779b0 --- /dev/null +++ b/content/categories/vmware/_index.md @@ -0,0 +1,4 @@ +--- +title: "VMware" +description: "vSphere, vCenter, vRealize, vTanzu, vBroadcom..." +--- \ No newline at end of file From ab377feb19ce5c1bceda10a2abac501101f2c1e8 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Thu, 18 Jan 2024 22:07:51 -0600 Subject: [PATCH 39/69] style date entry --- static/css/custom.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/static/css/custom.css b/static/css/custom.css index 622a273..fdcc072 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -269,4 +269,9 @@ form button { font-size: 0.75rem; margin-left: 0.2rem; margin-right: 0.5rem; +} + +.date { + font-size: 0.8rem; + color: var(--off-fg); } \ No newline at end of file From 4be35aebe89211fe64471a2aa04329a54f318635 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Thu, 18 Jan 2024 22:08:45 -0600 Subject: [PATCH 40/69] additional formatting of archives partial --- layouts/partials/archive.html | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/layouts/partials/archive.html b/layouts/partials/archive.html index 0bd5bfb..02d0ca1 100644 --- a/layouts/partials/archive.html +++ b/layouts/partials/archive.html @@ -6,8 +6,9 @@ {{ if .IsHome }}

      {{ site.Params.indexTitle | markdownify }}

      {{ else }} -

      {{ .Title | markdownify }}{{ if eq .Kind "term" }}  

      {{ end }} -{{ end }} +

      {{ .Title | markdownify }}{{ if eq .Kind "term" }}  

      + {{ with .Description }}{{ . }}
      {{ else }}
      {{ end }} +{{ end }}{{ end }} {{ .Content }} @@ -24,8 +25,21 @@ {{- end }} {{- else }} - {{- range .Pages }} - {{ .Title | markdownify }}
      + {{- range .Pages.ByDate.Reverse }} + {{- $postDate := .Date.Format "2006-01-02" }} + {{- $updateDate := .Lastmod.Format "2006-01-02" }} +
      +
      +

      {{ .Title | markdownify }}

      + +
      +
      + {{ .Description }} +
      +
      +
      {{ end }} {{- end }} {{- else }} @@ -39,11 +53,10 @@ ["{{- $postDate }}"{{- if ne $postDate $updateDate }}, "{{ $updateDate }}"{{ end }}]

      -
      {{ .Summary }}
      -
      +
      {{- end }} {{- template "_internal/pagination.html" . }} From 1c076124d3dcf6871b084b2008b32202f91c6efe Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Thu, 18 Jan 2024 22:14:16 -0600 Subject: [PATCH 41/69] update archetype for taxo changes --- archetypes/default.md | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/archetypes/default.md b/archetypes/default.md index f5d8663..f57f054 100644 --- a/archetypes/default.md +++ b/archetypes/default.md @@ -7,52 +7,32 @@ description: "This is a new post about..." featured: false toc: true comments: true -series: Tips # Projects, Code +categories: Tips # Backstage, ChromeOS, Code, Self-Hosting, VMware tags: - - 3dprinting - - activedirectory - android - - api - - automation - - availability - caddy - - certs - - chat - - chrome - chromeos - - cloud - - cluster - - containers - crostini - docker - gcp - homeassistant - - homelab - hugo - - iac - javascript - kubernetes - linux - - logs - meta - - networking - - openssl - packer - powercli - powershell - python - regex - - rest - salt - - security - selfhosting - - serverless - shell - tailscale - tasker - terraform - vmware - - vpn - windows - wireguard - wsl From 18a970c7ed4534a18d639580ed625524927c9f6f Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Thu, 18 Jan 2024 22:19:50 -0600 Subject: [PATCH 42/69] start uses page --- content/uses.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 content/uses.md diff --git a/content/uses.md b/content/uses.md new file mode 100644 index 0000000..7920000 --- /dev/null +++ b/content/uses.md @@ -0,0 +1,16 @@ +--- +title: "Stuff I Use" +date: "2024-01-19T04:15:31Z" +# lastmod: {{ .Date | time.Format "2006-01-02" }} +description: "The hardware, software, and services which keep me going." +toc: true +comments: true +timeless: true +--- +Here's what this page is and why I'm doing it. + +### Hardware + +### Software + +### Services From eeab259eeb6ab75b5e4c9de357ff7657e397eac8 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Fri, 19 Jan 2024 09:28:22 -0600 Subject: [PATCH 43/69] uses is now a draft --- config/_default/menu.toml | 22 +++++++++++----------- content/uses.md | 5 ++++- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/config/_default/menu.toml b/config/_default/menu.toml index 1016a4c..a4b6fee 100644 --- a/config/_default/menu.toml +++ b/config/_default/menu.toml @@ -5,22 +5,22 @@ # weight = 10 [[main]] - identifier = "posts" - name = "posts" - url = "/" + identifier = "projects" + name = "projects" + url = "/series/projects/" weight = 1 [[main]] - identifier = "uses" - name = "uses" - url = "/uses" - weight = 2 + identifier = "tips" + name = "tips" + url = "/series/tips/" + weight = 1 [[main]] - identifier = "about" - name = "about" - url = "/about/" - weight = 3 + identifier = "code" + name = "code" + url = "/series/code/" + weight = 1 [[main]] identifier = "virtuallypotato" diff --git a/content/uses.md b/content/uses.md index 7920000..3afe333 100644 --- a/content/uses.md +++ b/content/uses.md @@ -4,12 +4,15 @@ date: "2024-01-19T04:15:31Z" # lastmod: {{ .Date | time.Format "2006-01-02" }} description: "The hardware, software, and services which keep me going." toc: true +draft: true comments: true timeless: true --- -Here's what this page is and why I'm doing it. +Here's the stuff I use and how I use it. ### Hardware +- **[Framework Laptop Chromebook Edition](https://frame.work/products/laptop-chromebook-12-gen-intel)** (i5-1240P | 32GB RAM | 1TB NVMe). This is my primary personal computing device. Yep, it's an overpowered Chromebook, and I make full use of the [Linux Development Environment](https://www.chromium.org/chromium-os/developer-library/guides/containers/containers-and-vms/) to Do Things. I love it. +- ### Software From 982d81d6395ff2b61a3308489a0a30426d6cbb30 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Fri, 19 Jan 2024 09:58:11 -0600 Subject: [PATCH 44/69] update nav for taxo changes --- config/_default/menu.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/config/_default/menu.toml b/config/_default/menu.toml index a4b6fee..01fd711 100644 --- a/config/_default/menu.toml +++ b/config/_default/menu.toml @@ -5,21 +5,21 @@ # weight = 10 [[main]] - identifier = "projects" - name = "projects" - url = "/series/projects/" + identifier = "self-hosting" + name = "self-hosting" + url = "/categories/self-hosting/" weight = 1 [[main]] identifier = "tips" name = "tips" - url = "/series/tips/" + url = "/categories/tips/" weight = 1 [[main]] identifier = "code" name = "code" - url = "/series/code/" + url = "/categories/code/" weight = 1 [[main]] From 0d37ca979e4b0018b5d85e2e93abb740664b059f Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Fri, 19 Jan 2024 14:28:36 -0600 Subject: [PATCH 45/69] new post: enable-fips-fix-aria-lifecycle --- .../enable-fips-fix-aria-lifecycle/index.md | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 content/posts/enable-fips-fix-aria-lifecycle/index.md diff --git a/content/posts/enable-fips-fix-aria-lifecycle/index.md b/content/posts/enable-fips-fix-aria-lifecycle/index.md new file mode 100644 index 0000000..0adcec9 --- /dev/null +++ b/content/posts/enable-fips-fix-aria-lifecycle/index.md @@ -0,0 +1,46 @@ +--- +title: "Enabling FIPS Compliance Fixes Aria Lifecycle 8.14" +date: 2024-01-19 +# lastmod: 2024-01-19 +description: "Never in my life have I seen enabling FIPS *fix* a problem - until now." +featured: false +comments: true +categories: VMware +tags: + - vmware +--- +This week, VMware posted [VMSA-2024-0001](https://www.vmware.com/security/advisories/VMSA-2024-0001.html) which details a critical (9.9/10) vulnerability in vRealize *Aria* Automation. While working to get our environment patched, I ran into an interesting error on our Aria Lifecycle appliance: + +```log +Error Code: LCMVRAVACONFIG590024 +VMware Aria Automation hostname is not valid or unable to run the product specific commands via SSH on the host. Check if VMware Aria Automation is up and running. +VMware Aria Automation hostname is not valid or unable to run the product specific commands via SSH on the host. Check if VMware Aria Automation is up and running. +com.vmware.vrealize.lcm.drivers.vra80.exception.VraVaProductNotFoundException: Either provided hostname: is not a valid VMware Aria Automation hostname or unable to run the product specific commands via SSH on the host. + at com.vmware.vrealize.lcm.drivers.vra80.helpers.VraPreludeInstallHelper.getVraFullVersion(VraPreludeInstallHelper.java:970) + at com.vmware.vrealize.lcm.drivers.vra80.helpers.VraPreludeInstallHelper.checkVraApplianceAndVersion(VraPreludeInstallHelper.java:978) + at com.vmware.vrealize.lcm.drivers.vra80.helpers.VraPreludeInstallHelper.getVraProductDetails(VraPreludeInstallHelper.java:754) + at com.vmware.vrealize.lcm.plugin.core.vra80.task.VraVaImportEnvironmentTask.execute(VraVaImportEnvironmentTask.java:145) + at com.vmware.vrealize.lcm.platform.automata.service.Task.retry(Task.java:158) + at com.vmware.vrealize.lcm.automata.core.TaskThread.run(TaskThread.java:60) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) + at java.base/java.lang.Thread.run(Unknown Source) +``` + +Digging further into the appliance logs revealed some more details: +```log +Session.connect: java.security.spec.InvalidKeySpecException: key spec not recognized +``` + +That seems like a much more insightful error than "the hostname is not valid, dummy." + +Anyhoo, searching for the error took me to a VMware KB on the subject: +- [VMware Aria Suite Lifecycle 8.14 Patch 1 Day 2 operations fail for VMware Aria Automation with error code LCMVRAVACONFIG590024 (96243)](https://kb.vmware.com/s/article/96243) + +> After applying VMware Aria Suite Lifecycle 8.14 Patch 1, you may encounter deployment and day-2 operation failures, attributed to the elimination of weak algorithms in Suite Lifecycle. To prevent such issues, it is recommended to either turn on FIPS in VMware Aria Suite Lifecycle or implement the specified workarounds on other VMware Aria Products, as outlined in the article Steps for Removing SHA1 weak Algorithms/Ciphers from all VMware Aria Products. + +That's right. According to the KB, the solution for the untrusted encryption algorithms is to *enable* FIPS compliance. I was skeptical: I've never seen FIPS enforcement fix problems, it always causes them. + +But I gave it a shot, and *holy crap it actually worked!* Enabling FIPS compliance on the Aria Lifecycle appliance got things going again. + +I feel like I've seen everything now. \ No newline at end of file From e9172bbdd1dcbe6dbcc68de4b4f65b759fb3e728 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Fri, 19 Jan 2024 14:38:35 -0600 Subject: [PATCH 46/69] style blockquotes --- static/css/custom.css | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/static/css/custom.css b/static/css/custom.css index fdcc072..7174a34 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -274,4 +274,11 @@ form button { .date { font-size: 0.8rem; color: var(--off-fg); +} + +/* blockquote styling */ +blockquote { + font-style: italic; + border-left: 0.25rem solid var(--logo); + padding-left: 0.25rem; } \ No newline at end of file From 477d91b5192bdf77507a83e2571d85d6f125cd2e Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Fri, 19 Jan 2024 16:13:12 -0600 Subject: [PATCH 47/69] add tinylytics --- layouts/partials/head.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/layouts/partials/head.html b/layouts/partials/head.html index bcfc68b..963f37a 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -37,6 +37,8 @@ {{ if .Site.Params.analytics }} + + {{ end }} From f6ff51eeeaeb86be562eb959eef85a1683997440 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Fri, 19 Jan 2024 17:14:18 -0600 Subject: [PATCH 48/69] add kudos --- config/_default/params.toml | 2 +- layouts/_default/single.html | 1 + layouts/partials/head.html | 2 +- static/css/custom.css | 21 +++++++++++++++++++++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/config/_default/params.toml b/config/_default/params.toml index a329dfa..9a36df1 100644 --- a/config/_default/params.toml +++ b/config/_default/params.toml @@ -18,7 +18,7 @@ giscusInputPosition = "bottom" giscusLang = "en" giscusLoading = "lazy" giscusMapping = "og:title" -giscusReactions = "1" +giscusReactions = "0" giscusRepo = "jbowdre/site-comments" giscusRepoId = "R_kgDOKKEGDw" giscusStrict = "0" diff --git a/layouts/_default/single.html b/layouts/_default/single.html index a0af61c..0e31ec7 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -16,6 +16,7 @@
      {{ .Content }}
      + Kudoses: {{- $showComments := true }} {{- if eq .Site.Params.comments false }} {{- $showComments = false }} diff --git a/layouts/partials/head.html b/layouts/partials/head.html index 963f37a..a27a7e6 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -38,7 +38,7 @@ - + {{ end }} diff --git a/static/css/custom.css b/static/css/custom.css index 7174a34..1d2055f 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -281,4 +281,25 @@ blockquote { font-style: italic; border-left: 0.25rem solid var(--logo); padding-left: 0.25rem; +} + +/* tinylytics kudos styling*/ +.post_kudos { + display: flex; +} + +button.tinylytics_kudos { + border: 0; + background-color: transparent; + cursor: pointer; + display: flex; + color: var(--off-fg); + font-size: 1.2rem; + padding: 0; + transition: all .2s ease-in-out; +} + +button.tinylytics_kudos:hover { + transform: scale(1.1); + text-shadow: var(--off-fg) 0 0 1px; } \ No newline at end of file From 985bdbeb329ffdfbcef8641cf172896e6eac9cac Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Fri, 19 Jan 2024 17:26:27 -0600 Subject: [PATCH 49/69] remove cabin --- config/_default/params.toml | 4 ++-- layouts/partials/head.html | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/config/_default/params.toml b/config/_default/params.toml index 9a36df1..f8e274a 100644 --- a/config/_default/params.toml +++ b/config/_default/params.toml @@ -183,8 +183,8 @@ title = "torchlight" url = "https://torchlight.dev" [[powerLinks]] -title = "cabin" -url = "https://withcabin.com/privacy/runtimeterror.dev" +title = "tinylytics" +url = "https://tinylytics.app/home" [[verifyLinks]] title = "omg.lol" diff --git a/layouts/partials/head.html b/layouts/partials/head.html index a27a7e6..c9a6e8c 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -35,8 +35,6 @@ {{ if .Site.Params.analytics }} - - {{ end }} From 1d4c7a5878cb615c8fa78274f6131dfe28683bcf Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Fri, 19 Jan 2024 19:59:11 -0600 Subject: [PATCH 50/69] don't show kudos when analytics disabled --- layouts/_default/single.html | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/layouts/_default/single.html b/layouts/_default/single.html index 0e31ec7..adecbc5 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -16,7 +16,10 @@
      {{ .Content }}
      - Kudoses: + {{- if .Site.Params.analytics }} +
      + kudoses: + {{- end }} {{- $showComments := true }} {{- if eq .Site.Params.comments false }} {{- $showComments = false }} From e648a4e34cb300f7302a8f05e85056259b57489e Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Fri, 19 Jan 2024 20:06:30 -0600 Subject: [PATCH 51/69] fix analytics logic --- layouts/_default/single.html | 2 +- layouts/partials/head.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/layouts/_default/single.html b/layouts/_default/single.html index adecbc5..2da1608 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -16,7 +16,7 @@
      {{ .Content }}
      - {{- if .Site.Params.analytics }} + {{- if eq .Site.Params.analytics true }}
      kudoses: {{- end }} diff --git a/layouts/partials/head.html b/layouts/partials/head.html index c9a6e8c..2ee5e9a 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -34,7 +34,7 @@ -{{ if .Site.Params.analytics }} +{{ if eq .Site.Params.analytics trues }} {{ end }} From 8123c20993ba6f4b463c0a886eedf74b47250d53 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Fri, 19 Jan 2024 20:09:04 -0600 Subject: [PATCH 52/69] =?UTF-8?q?kudos=20=3D=20=F0=9F=91=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layouts/partials/head.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/partials/head.html b/layouts/partials/head.html index 2ee5e9a..3e68643 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -36,7 +36,7 @@ {{ if eq .Site.Params.analytics trues }} - + {{ end }} From 8a7087a824d2b62dd42834b2cd213254fa089f41 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Fri, 19 Jan 2024 20:14:26 -0600 Subject: [PATCH 53/69] fix my fix for analytics logic --- layouts/partials/head.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/partials/head.html b/layouts/partials/head.html index 3e68643..d4c2938 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -34,7 +34,7 @@ -{{ if eq .Site.Params.analytics trues }} +{{ if eq .Site.Params.analytics true }} {{ end }} From d5626f3b132dacb9af71c984a32aaf91733d2030 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sat, 20 Jan 2024 09:13:09 -0600 Subject: [PATCH 54/69] kudos tweaks --- layouts/_default/single.html | 2 +- layouts/partials/head.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/layouts/_default/single.html b/layouts/_default/single.html index 2da1608..5a9ba72 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -18,7 +18,7 @@ {{- if eq .Site.Params.analytics true }}
      - kudoses: + Enjoyed this post? {{- end }} {{- $showComments := true }} {{- if eq .Site.Params.comments false }} diff --git a/layouts/partials/head.html b/layouts/partials/head.html index d4c2938..9a2436a 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -36,7 +36,7 @@ {{ if eq .Site.Params.analytics true }} - + {{ end }} From bf34653697ba48cc1671f8518b96fc2b945c93c0 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sat, 20 Jan 2024 09:15:36 -0600 Subject: [PATCH 55/69] move kudos into comments logic --- layouts/_default/single.html | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/layouts/_default/single.html b/layouts/_default/single.html index 5a9ba72..01cae71 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -16,10 +16,7 @@
      {{ .Content }}
      - {{- if eq .Site.Params.analytics true }} -
      - Enjoyed this post? - {{- end }} + {{- $showComments := true }} {{- if eq .Site.Params.comments false }} {{- $showComments = false }} @@ -27,6 +24,10 @@ {{- $showComments = false }} {{- end }} {{- if ne $showComments false }} +
      + {{- if eq .Site.Params.analytics true }} + Enjoyed this post? + {{- end }} {{- partial "comments" . }} {{- end }}
      From e9f57f803302e2fb8d869c5c9aaaae308607d4d5 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sat, 20 Jan 2024 09:17:13 -0600 Subject: [PATCH 56/69] another kudos tweak --- layouts/_default/single.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/_default/single.html b/layouts/_default/single.html index 01cae71..b089ca0 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -26,7 +26,7 @@ {{- if ne $showComments false }}
      {{- if eq .Site.Params.analytics true }} - Enjoyed this post? + Enjoyed this post?  {{- end }} {{- partial "comments" . }} {{- end }} From 31f90b64462f6ed01c4161f1af56bc9788153da7 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sat, 20 Jan 2024 16:21:09 -0600 Subject: [PATCH 57/69] move dates/tags from sidebar to post frontmatter --- layouts/_default/single.html | 19 ++++++++++++++++++- layouts/partials/aside.html | 32 ++++++-------------------------- static/css/custom.css | 31 +++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 27 deletions(-) diff --git a/layouts/_default/single.html b/layouts/_default/single.html index b089ca0..c4e22aa 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -1,7 +1,24 @@ {{ define "main" }} {{- $ageDays := div (sub now.Unix .Date.Unix) 86400 -}}
      -

      {{ .Title | markdownify }}

      +
      +
      + + + {{- if .Params.date }} + {{- $postDate := .Date.Format "2006-01-02" }} + {{- $updateDate := .Lastmod.Format "2006-01-02" }} + + {{- if ne $postDate $updateDate }} + + {{ end }} + {{ end }} + {{- with .Params.tags }}{{- $tagCount := len . }} + + {{- end }} +
      title:{{ .Title | markdownify }}
      posted:{{ $postDate }}
      updated:{{ $updateDate }}
      tags:{{- if gt $tagCount 5 }}
      See all {{ $tagCount }} tags...{{- end }}["all" {{- range . }}{{- $tag := urlize . }}{{ if $tag }}, {{ end }}"{{ . }}"{{- end }}]{{- if gt $tagCount 5 }}
      {{- end }}
      +
      +
      {{- with .Param "lastmod" -}} {{- $ageDays = div (sub now.Unix .Unix) 86400 -}} diff --git a/layouts/partials/aside.html b/layouts/partials/aside.html index 89483b4..28a9d08 100644 --- a/layouts/partials/aside.html +++ b/layouts/partials/aside.html @@ -1,30 +1,10 @@ -{{- $postDate := .Date.Format "2006-01-02" }} -{{- $updateDate := .Lastmod.Format "2006-01-02" }} -{{ if or (.Params.description) (.Params.date) }} - {{ if .Params.description }}

      {{ .Params.description }}

      {{ end }} -

      - {{ if .Params.date }}{{- if ne $postDate $updateDate }}{{ end }}
      posted:{{ $postDate }}
      updated:{{ $updateDate }}
      {{ end }} -

      +{{ if .Params.description }}

      {{ .Params.description }}


      {{ end }} +{{ if and (gt .WordCount 400 ) (gt (len .TableOfContents) 180) }} +

      +

      On this page

      + {{ .TableOfContents }}
      - {{ if and (gt .WordCount 400 ) (gt (len .TableOfContents) 180) }} -

      -

      On this page

      - {{ .TableOfContents }} -
      -

      - {{ end }} - {{- with .Params.tags -}} -

      -

      Tags

      - [all] - {{- range . }} - {{- $tag := urlize . -}} - [{{ . }}] - {{- end }} -

      -
      -

      - {{- end }} +

      {{ end }} {{ if isset .Params "categories" }} diff --git a/static/css/custom.css b/static/css/custom.css index 1d2055f..b37b41f 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -302,4 +302,35 @@ button.tinylytics_kudos { button.tinylytics_kudos:hover { transform: scale(1.1); text-shadow: var(--off-fg) 0 0 1px; +} + +/* post front matter styling*/ +.frontmatter hr { + margin-bottom: 0rem; + margin-top: 0rem; +} + +.frontmatter h1 { + margin-top: 0rem; +} + +.frontmatter .label { + color: var(--off-fg); + font-size: 0.8rem; +} + +.frontmatter .title { + color: var(--fg); + font-weight: 600; + font-size: 1.1rem; +} + +.frontmatter table { + overflow-wrap: break-word; + margin-bottom: 0rem; +} + +.frontmatter_tags { + font-size: 0.8rem; + color: var(--off-fg); } \ No newline at end of file From 698762cc86f5e76a70758c80372fba40cf651274 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sat, 20 Jan 2024 21:38:40 -0600 Subject: [PATCH 58/69] first swing at deploying to neocities --- .github/workflows/deploy-to-neocities.yml | 54 +++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 .github/workflows/deploy-to-neocities.yml diff --git a/.github/workflows/deploy-to-neocities.yml b/.github/workflows/deploy-to-neocities.yml new file mode 100644 index 0000000..07574b3 --- /dev/null +++ b/.github/workflows/deploy-to-neocities.yml @@ -0,0 +1,54 @@ +name: Deploy to neocities + +# only run on changes to main +on: + push: + branches: + - main + +concurrency: # prevent concurrent deploys doing strange things + group: deploy-to-neocities + cancel-in-progress: true + +# Default to bash +defaults: + run: + shell: bash + +jobs: + deploy: + runs-on: ubuntu-latest + env: + HUGO_VERSION: "0.121.1" + steps: + - name: Install Hugo CLI + run: | + wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \ + && sudo dpkg -i ${{ runner.temp }}/hugo.deb + - name: Install Dart Sass + run: sudo snap install dart-sass + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + - name: Install Node.js dependencies + run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true" + - name: Build with Hugo + env: + # For maximum backward compatibility with Hugo modules + HUGO_ENVIRONMENT: production + HUGO_ENV: production + run: | + hugo \ + --minify \ + --baseURL "https://codesplice.neocities.org/" + - name: Highlight with Torchlight + run: | + npm i @torchlight-api/torchlight-api + npx torchlight + - name: Deploy to neocities + uses: bcomnes/deploy-to-neocities@v1 + with: + api_token: ${{ secrets.NEOCITIES_API_TOKEN }} + cleanup: true + dist_dir: public \ No newline at end of file From a374e1fa7e33f9f2d8760ec6ec04b5e4f79b1c2d Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sat, 20 Jan 2024 21:40:52 -0600 Subject: [PATCH 59/69] fix torchlight command --- .github/workflows/deploy-to-neocities.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-to-neocities.yml b/.github/workflows/deploy-to-neocities.yml index 07574b3..f332077 100644 --- a/.github/workflows/deploy-to-neocities.yml +++ b/.github/workflows/deploy-to-neocities.yml @@ -44,7 +44,7 @@ jobs: --baseURL "https://codesplice.neocities.org/" - name: Highlight with Torchlight run: | - npm i @torchlight-api/torchlight-api + npm i @torchlight-api/torchlight-cli npx torchlight - name: Deploy to neocities uses: bcomnes/deploy-to-neocities@v1 From b920a8aa3d76627454eed1cf72f4e77071a4eab3 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sat, 20 Jan 2024 22:01:44 -0600 Subject: [PATCH 60/69] don't remove orphans (yet?) --- .github/workflows/deploy-to-neocities.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-to-neocities.yml b/.github/workflows/deploy-to-neocities.yml index f332077..a781d07 100644 --- a/.github/workflows/deploy-to-neocities.yml +++ b/.github/workflows/deploy-to-neocities.yml @@ -50,5 +50,5 @@ jobs: uses: bcomnes/deploy-to-neocities@v1 with: api_token: ${{ secrets.NEOCITIES_API_TOKEN }} - cleanup: true + cleanup: false dist_dir: public \ No newline at end of file From 6117c6b342f18279ec5503384992733336ecaaa9 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sat, 20 Jan 2024 22:09:39 -0600 Subject: [PATCH 61/69] change neocities site name --- .github/workflows/deploy-to-neocities.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-to-neocities.yml b/.github/workflows/deploy-to-neocities.yml index a781d07..2927bc1 100644 --- a/.github/workflows/deploy-to-neocities.yml +++ b/.github/workflows/deploy-to-neocities.yml @@ -41,7 +41,7 @@ jobs: run: | hugo \ --minify \ - --baseURL "https://codesplice.neocities.org/" + --baseURL "https://runtimeterror.neocities.org/" - name: Highlight with Torchlight run: | npm i @torchlight-api/torchlight-cli From 00e001032f7710f2ca97531b0723f7d7eb044059 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sat, 20 Jan 2024 22:40:41 -0600 Subject: [PATCH 62/69] add alias for 404 --- content/404.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/404.md b/content/404.md index 6eff99f..c30b7c9 100644 --- a/content/404.md +++ b/content/404.md @@ -1,5 +1,6 @@ +++ title = "404'd!" +aliases = ["not_found"] noindex = true timeless = true comments = true From 1fe3bbcf919d9f2b2b8bb2be98914fca2e6fe887 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sat, 20 Jan 2024 22:41:25 -0600 Subject: [PATCH 63/69] switch neocities domain --- .github/workflows/deploy-to-neocities.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-to-neocities.yml b/.github/workflows/deploy-to-neocities.yml index 2927bc1..a03385c 100644 --- a/.github/workflows/deploy-to-neocities.yml +++ b/.github/workflows/deploy-to-neocities.yml @@ -41,7 +41,7 @@ jobs: run: | hugo \ --minify \ - --baseURL "https://runtimeterror.neocities.org/" + --baseURL "https://runtimeterror.dev/" - name: Highlight with Torchlight run: | npm i @torchlight-api/torchlight-cli From 5c1a6e15c90009f0d9a9b3dcc5647deaff128aa2 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sat, 20 Jan 2024 22:49:11 -0600 Subject: [PATCH 64/69] update powered_by footer --- config/_default/params.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/_default/params.toml b/config/_default/params.toml index f8e274a..c20f40a 100644 --- a/config/_default/params.toml +++ b/config/_default/params.toml @@ -171,8 +171,8 @@ title = "hugo" url = "https://gohugo.io" [[powerLinks]] -title = "netlify" -url = "https://www.netlify.com" +title = "neocities" +url = "https://neocities.org/about" [[powerLinks]] title = "risotto" From d2323ec63355681af40bca8c7dbbf11393e2b425 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sat, 20 Jan 2024 23:12:35 -0600 Subject: [PATCH 65/69] run deploy on self-hosted runner --- .github/workflows/deploy-to-neocities.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-to-neocities.yml b/.github/workflows/deploy-to-neocities.yml index a03385c..35192de 100644 --- a/.github/workflows/deploy-to-neocities.yml +++ b/.github/workflows/deploy-to-neocities.yml @@ -17,7 +17,7 @@ defaults: jobs: deploy: - runs-on: ubuntu-latest + runs-on: self-hosted env: HUGO_VERSION: "0.121.1" steps: From fd088ebaa079432d504e47bd042ed2ffe7c5ff50 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sat, 20 Jan 2024 23:15:10 -0600 Subject: [PATCH 66/69] Revert "run deploy on self-hosted runner" This reverts commit d2323ec63355681af40bca8c7dbbf11393e2b425. --- .github/workflows/deploy-to-neocities.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-to-neocities.yml b/.github/workflows/deploy-to-neocities.yml index 35192de..a03385c 100644 --- a/.github/workflows/deploy-to-neocities.yml +++ b/.github/workflows/deploy-to-neocities.yml @@ -17,7 +17,7 @@ defaults: jobs: deploy: - runs-on: self-hosted + runs-on: ubuntu-latest env: HUGO_VERSION: "0.121.1" steps: From e692775a60477e1673a41b1a39402622860dee95 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sun, 21 Jan 2024 07:47:11 -0600 Subject: [PATCH 67/69] remove daily netlify build --- .github/workflows/daily_build.yml | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 .github/workflows/daily_build.yml diff --git a/.github/workflows/daily_build.yml b/.github/workflows/daily_build.yml deleted file mode 100644 index f8d70f7..0000000 --- a/.github/workflows/daily_build.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: Daily build - -on: - schedule: - - cron: "0 13 * * *" - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Trigger build webhook on Netlify - run: curl -s -X POST "https://api.netlify.com/build_hooks/${TOKEN}" - env: - TOKEN: ${{ secrets.NETLIFY_CRON_BUILD_HOOK }} From 331cf3fa1fc4bc1fc7ea0b301eb524e460bdc233 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sun, 21 Jan 2024 07:57:38 -0600 Subject: [PATCH 68/69] retry torchlight step if it gets hung --- .github/workflows/deploy-to-neocities.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy-to-neocities.yml b/.github/workflows/deploy-to-neocities.yml index a03385c..1ec1fb4 100644 --- a/.github/workflows/deploy-to-neocities.yml +++ b/.github/workflows/deploy-to-neocities.yml @@ -27,6 +27,8 @@ jobs: && sudo dpkg -i ${{ runner.temp }}/hugo.deb - name: Install Dart Sass run: sudo snap install dart-sass + - name: Install Torchlight CLI + run: npm i @torchlight-api/torchlight-cli - name: Checkout uses: actions/checkout@v4 with: @@ -43,9 +45,12 @@ jobs: --minify \ --baseURL "https://runtimeterror.dev/" - name: Highlight with Torchlight - run: | - npm i @torchlight-api/torchlight-cli - npx torchlight + uses: nick-fields/retry@v2 + with: + timeout_seconds: 120 + max_attempts: 3 + retry_wait_seconds: 15 + command: npx torchlight - name: Deploy to neocities uses: bcomnes/deploy-to-neocities@v1 with: From fbb0ad085a65758c1230542eaf950e12ee83c2f5 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sun, 21 Jan 2024 07:59:53 -0600 Subject: [PATCH 69/69] Revert "retry torchlight step if it gets hung" This reverts commit 331cf3fa1fc4bc1fc7ea0b301eb524e460bdc233. --- .github/workflows/deploy-to-neocities.yml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/workflows/deploy-to-neocities.yml b/.github/workflows/deploy-to-neocities.yml index 1ec1fb4..a03385c 100644 --- a/.github/workflows/deploy-to-neocities.yml +++ b/.github/workflows/deploy-to-neocities.yml @@ -27,8 +27,6 @@ jobs: && sudo dpkg -i ${{ runner.temp }}/hugo.deb - name: Install Dart Sass run: sudo snap install dart-sass - - name: Install Torchlight CLI - run: npm i @torchlight-api/torchlight-cli - name: Checkout uses: actions/checkout@v4 with: @@ -45,12 +43,9 @@ jobs: --minify \ --baseURL "https://runtimeterror.dev/" - name: Highlight with Torchlight - uses: nick-fields/retry@v2 - with: - timeout_seconds: 120 - max_attempts: 3 - retry_wait_seconds: 15 - command: npx torchlight + run: | + npm i @torchlight-api/torchlight-cli + npx torchlight - name: Deploy to neocities uses: bcomnes/deploy-to-neocities@v1 with:
  3. ' + item.title + '
  4. wYxavmon@wdT#b&4?pmY976PCh()X8@S3tU@`JRiU{6cd z+S!Z#yiih-lI|w;F-OdCaB)RNu$69G0Ym@g1=ZUo6JTAJ zT3BdrQL?$Qky2LnL*-`gL%`jWJR87&AQ4J^k#c%;AHZq)M14xV`{6H2(5UGd0!uVT zt(%A9J@zuBP0eAGOZt(Oo^H&Qw~<9HndOj(2xE^BV|476mZyy-rEZ<|Vy1}ytjDY5 z&R7t3I-+CwyB=)B(z_kMx8%8C`&RK>(rU^ zKlZ(W#g_oIr(&k|8>6M*8Mgscu2x|FGQiyD21kOWFQ}TdDBfN!c62^^VGDlL&D5NW zUO;1vgnw-1xeS}a5#T<9qzU)l^VeswpG(B4mMK$ z37=EbKq$MwlC^x9*YaJ&XlZ1Z4F%#ZCa{>1Yy{)DP?(&OkDtkE2id{^{NkQ8g)sQ* z``{1EI9MrA!ca(*#r^`pzh9jrG1z=M?I=8E&oLlk8)><}%hEan1ob|eCEfLu>17A; zZeU-6V5ZYL%&YH!4LUQ3z$61vUSwg(pNi172;Qa`cP`%w(Af8pP#(rET;vTsqx24k zc;@7gGyA1u$t~3F=$1?4yA{)pf;Xb|0zKQXD38>a;AtrB?^Yyx9q@vQ&eU)kknPJF z1%a7r1SYt2#=tHm;r6J6dyu>flnP18&1U9=fZc}f971wzM0S&|9(E9~acCD`AMSGz z78NxB7j$;S{=7F+wXs_S$cp*%e2EN_0R&WM{#ayuRG>9U_e>r0?BNJi%h6)8uok}C zGV5iL=|TSjH90+Gg0EygXpcpS73(rEMB{x(_lnBt-MlnCFZLl!X{N%cnUUOfyE6K8 z71!G&f617B`@V>{RLc&&v>77KkT{0=ftvTdhN^XQvQj>(o+4C^_J|VbQOMgY45?06 z&`D^4d6iA{CnikArT$z*>;;)u>WCQF*5z04%kFP2Fvvx+%b0sRA$B5_*Y5A+DT&h< z-xx;SeSB1ya=2>H?#Hz4wi1scw|*gCj+P6>NzR6YJRk1QipYc>#19orzZDL0yHa8D zL98iDj8cILE|!GW{x$iz-l`d^=H=alvc@ix)qxRX&mYe85v;rmXXh9QkW}D(dMv4g#f96Ccsm(BKx0$)c-P#70GBEpP z6x5+-(&fmzQ*T{*vmkxu#q>Sw6Pfel#8q{6H0Ja%+q(-GK{4K z(|E$|)$#xK{?r^o)dr2N?&7g7y!og*bzuaJ?@vjIeie78lpW4zc)#6czWw?W<4t@1 z%!ZG|SpRbtE~e~hwi~|3HOR&_e6NM<&}b&)Yy=DcmJmzD)s2G0=NAi8Z3{7j&Ri-` zuQmPt!Iv-=c3ZBQN1*KMf~ao$iHMM(`4ooZc8yf_UoY@!Cdn`Xz2Z*w$+3GE0kcOB zzFmIhh9BVyxGsq{;9U~ToVtTUb#+M5bDGt|{pSm^fC2O%w&tAXUXplVf1scSuUE+7 z#^icz_LrD}t05ZiP|p0^wFN_$kGdI!JP_5inZ#Grg>JZVGg~)(kJ&GbZxucFDi3YC z#8xW+@5c<#G8L!qbGJ6&*)9&`+juCG+Vr>yZTG4YX8SCdU|(?E3T1_(O^+Pycqa7G zE{i_>YAY&9uCX!q(Sj09>*5lAVJhiqDSdVcvO_M$#yrj6r8$?sv(6SgZuc#MU3`RY z_;@9~)n!q<8ee4h!>`KC4#F8~_g~z=scM=TP^Frf=Xsy2)V2q1OqfO6R;@z=D{EyB!%g)W?}vt1x(B6XUbUro^PGbLG6__ zz3h$}>B;f7{1{$o-HHF`=%LQZ&jbl(mAr*d>$wGm*1tZ4_RqK>BI|;k0*y1Ej-sS=tFgs5FC7DOxviZQGu^j9O#rdA6_%Y1!$sWolA; zZb`5%Mm-pj-f)j&@zt)Ep~W|lGY*#w8J0Zltrm!3VREj!jCli%4pUHInU>nq>HjpAXwP#Vdp_Z~G~ zh|u9Co?v=fve=9#Px3yRx*gn7(M2}Y-F9Y*Oj`Y(1slP8m{K>&O9zA&dbvK&(!QrL za^BlWd+vfDDF3zBUGw#k0xcgPP(5jq@3bo_jpyh@Fe2=|+iLVb%wVUl+{Q*p`X z3+llMeh@uVgReV+B<*yuAmL;^nE~a7H|&V-%U8sEuTTDvt6>(zlA0^&`oQQy0ZKLJ z$w}PBRmJI2lFf+=;$Ve z^%-4^U1SKN;8O%wwWlG(9!J{)Nd|5ObQ5Iov=X*%p*bX(?QJcQl3bAuxq5@Y%nHpl zw;r5{9m>(%mVE%O^;L*zBwe~IES1lEBUX}k^(lJv^^Ddh%jkIq#kyfAIK)L!^+QBw zZHG!Mn4w|_;#UK!@w@6@KX#ArS00EQ{32FSlRCHHM}kmd6& zi1@(WV=ht#Ta+Wautu@5;*G8fnDwO5 z#pPwYFR&U|;_gZyvwvX)WcKf5dNcR@GN-HY^BnI(*;k)v3(QklYrEcfI-+FPE?G%C zXJN%c#*!(XYn^M4F_F*6Nk)As6~~GNa*NW-ix-Y&eu4^O1SqoeaX*wrW9H9sr)f}; zz2!p3g%cL5OUyAMF_Y(@F7L(W2i0a0s-JJ0($102C!PDLqd=2L4!W!(-X}+djmtgh z!Ic{=Y;V*;3&GzJuCZ^_qzY^c`g5;EyZMTFCEkiH6j|}*tKNK_L*c2ss1)zZkVao? z)}8XEVCZSb4pF5Zs8!fQHT&w&fE5^93A0e-1imwvg&Z6K^VYs=wXTzIn5T1!I`9M< zK%$y}o9@w>iU3ul4a&Q8P3V|4)6;3b^X1x^+=_~r@T1?U*~4Zfa0!{<%x8Qm7F~7 zZ7K4qj{++qF*RNa{Udg|j~g9L7l0&J(V|jp%)K+>pcF0OkYL7El_w&{FW-j6@zRBYu3*ukvhJh3`4VlBiR7nMKcB!SpDmfTuhL-P*&LHVrNx0w4 zxzVl<-2HR#OFE!46W|-iF z7tncIqq~H$R_1*WmFiXCn+^(a2dne$=xFhvYDnTZie6>P`1F9)10q03|Ma3&7yLNm z!77bFsTix&#Jnp6V{wh8d3f(|r$MMOa1#eVQ1NQ*9@L~Mz$v3^L|9?QK!1(~C$=C+ zS!KE(ewRbz`D1sd+t{;EcT9Gvj~Oh6@}3KNV7t z!)x>J&Lqnaee%hOZ>6Mgc*)43M$#-9Ck59zrJ~d+ItHji_xPPQr_w1Q1ea0UEXOK zj&h<62|-Ifu5f@*-dOdfZ2QvK@4V?1SLu=2oW0e8!o8RQz42*HOvS_VyNxf903-7lEVtNjYWS>sGjragG-z_&gjL2`tX2z(i zt!-XNEVDR`7hEB3o*>F<4Jor%v4yPD(TajNlOI#j94i*i`+cBC#);1(!dhn)9>+G- zl^B5efutc1Qr&NjaFG{jffjMmR5hO;k|Y zwwO4~p!gFYv_~TQ7b&b2-^xW~Q|B&vU(}y$!<<4~?j z_G+M=j!OBXz?`xVxoUa-=LJXZ-Vb|_@zyMP6jKov2B#tHk{*SSRxV(F19_W|;OULs zlq~t8qw9m*t3{Q>IyN0GZkMIp(rMTfWv(rF3KV^UwHIQ~m?NdtM;i);wUs#`?_Q0d zpqIMsa^ae`PcrcWjmw0uatyiE+oScV##Y#$BueYLo@6~*L3i+i3nOIhPV%o024F{U zv_qIbPmjI7>p&lKeD|`Inw%i`V!=M=5i>~CRkXRRfx7||`3fk$-wtI`xrEt?AWdm( zQ+&_iAyO@`J$X_(PrFS6u{<&+y^7spCF{LmePGN07UlA(BZBPBK5Uzc8<9a-XA}7O z`*A7tA`fAMAz)rb@4ar6v=RVoGUEP)Q1jvVCdpApJiXWHKiunha$AYFdNrue9ZGt< zaf+*z`9tNm<4fmRT$k?* zuKmj85lJV54T{A>*!Kw9{jDO^@f_bKh;+ip#H6)5RgOV&V_rz~Crx*|Ac)?|zaAhI ztF^&$)eDZAw9tP&{0mZw@l36gO1W$Dl)* z+q$_=@_pE1${siqOqEcpy3;3xMzdSZ|f zM_GH`h%SA0-Y@ob5(Z%d0!V4EqnvQm|@;w^eT*K;pPpm5R8Q@rL{fqU!VBPEvVZK^3<3+n|A zH|uPj;s*qdN<=HyzK#^~ zFN(PQ@^D)oQ9agh1XY2zGiA+qB$Q6RBp1jnTz9$?L?X9|^TG?u$F;|pwd)R_bw(y( zGBDm}L%n!yYV4RK6}QIS)!vF3q`kG+*Sh=iX8)5*6Z2W>750*#yUK7eF<5yNvTzdd zeNLTE%fs4nq9#zWMj>JjAMQL$(XVnNJRq95>XxcPjRv+nHcw>6#uBr)BrN7;^9{my zoGDG%d^z>++w7(jT{C|en~qG3JUzKs40dBuHy1lqkGjRA`o)I<7BphNle;=nSm|s*bS1;G3c0ZI zkm14uXGQ}p7?v&n=n?Tv@~4h`I(CX!ur5uBS+05WYpUh3eCxq!zeTxYOlG;d#3M$N zx$lqqp5SQlxY)47>^##d2pOoNo-j28oY2m&SiZO&z+F$2L>7P|O6CK3RNI#YM?7J# zs)2^12Ue@z(R6HMxCQq_$W#Lr{`o$fQ>bkQu9(nhe>+(8%&8iWJ~J77=rg*GV7AJ0O**K5iQ_BUPrz{}Ve}(9!(c^F8%_D|pb|pPg+Cd!JN-Ce$9RW1+~u zEWD1Juo|m$ZFt^?NF>|K+&_ak0EI?b^|@Rgc=+#$Q@go7+^ceIa!!i5ST}aq2g92K z=Rlh+)`8p*Khl%eFL?$PhNYc)KE3TT!f9UGr9t3AaeSL_B_{y~QEYyoZIkHD+V$pBIzVFno4+A0IWnv3JKudwzjmAHPlm(i;xvT$?o?a9JHa zbGL@`n+~w0Dq7nmQiUipfXjtn*%_2qEUX`ESMy$b?GppMdJy+L+Z%_$jLGho_CV~_ zg8`boDkC2A=>E<3ah97JT+Q#@l?Yi%c{8oo)(;6LOx+!S6ncHQI1XI?iiBf=ZsTt} zJ~F5tn_-mJ5AXvJnHD$@559-!c-2~937Xkf;ZzgHIdrt7`L?`dDV1rqz}IG>E($ni z&v$4xjI8F*)UAosH!rFXM(TXY`Dyl6|AWR zI`Sig6UYM7yK~G!O+8Y1I-e|A1Sg?3%!fzjQuV5|I2fI}yPquLR9Em-(GBK0Ig6hQ zSeuQnhH;%tUn9ubPR<+NM;5VPtI}gCZU-S|P%uD1HfqGBcD@bWD&7N>7C{0dK{oGA zQ1zb~`D>D5msYv`*UE3m3jN*@}$avA>OqsM>hCAEQA6q(IHUL0!v`yKLIrVrcPlgBd_ zbouvV55S=3$sWan9ArjOb8dRoJE^za&HT&xh!{TEg#c%x9t|#;Jp)m>nITe@0;lr% zjObs>PPeF)JI3;IjY>xzY~b^EZAd3f_|4nTT3Cx}%bGOAlZgKGD?-m}?V#%lcD8lg zM31YeO`qge^GWA=mHJ_0nOP|qH*0I1^llffx4#P078J^jm@z`*6u6os|0onM$)%^i zgNdzEI836i2{TW#BQNv6;aSXQr;8V^mEZ``mVe%smn+%QX(&0Npe1cRQEc7gKMSu2 z^bHFnAh@DlqtksnBVEj^Zmr9Vq=wWQuTVv-4#aNTBry_PLZJq9;{;Aee?eM#QTna?0WUANpM^{fFRdOUW&7+TMgMR#>x1&a{iZx2M=9C~_9i@6S)0m0!F(drGN(4)eh`(h90%#!a zGu3{cghWO^oq;jGwV+|#cW67Oq^wY7>)BMA5>snhX9BSvXT%@xb4*b@Y&>(hM+t1H zA3N`NC1g9LJqtHBLE!Aw+b*J!? z1%m*Gb3}^*qe`_)o*KK}!$ZB}ljYH~mF<1UC+ope{Ath5hiYY%U7^T`3AsUHN4l6c9{?=FI4x(>0JNA}i7S{4g$YB&JJbcnb zQ};@_8a_6ErD-9hzK~u}-pP%X1G`hmKlVL=I{*1}57_*^ee>kqpMwfrUjSBSUq@K+ znPqW4A;nykfnCnVot1D=QBT#2T=BoX)8*p$A9--RK>zz$xQJQx>b$G9>)Tshe`O2d z;xe&ZyYZxD*9+gKYnquDE4G-KNXI{wnEpodSzO6ZsM`5e?2nz8&6+_S&P>&>U*RXd zp}!7@;Qh- zTvC6|Gy2-I&EhxzZ7IlC47Ls+f1ib)&HW!==PLSEn5zG$OVYxT_}9mV3_RfI_(Dw% z!Gj2XR{MW^9cgG@;r`|Pr%Nij=!e04mAL)-zwJ0-0VRsK$&3+xw)n=sf1MEIBpD@X z`TomE`qxW(LPdgp5RcFl3*=h=+-7VQpgo23$imk#Gydl({QI|bgz$Bm#fz~1!zHx~ zUi(j{CIY@rPs_i5ox2cjkc&NyoQ?nGlHNPsN1puuc4}auPdY8)5j{bvn5?W{IG2Gw zjLc^bg@uLn@W?pXnH6J0Kxx|lWesB8m*BN8^T~2>^3XxFxVKkLU@504)(&jNOP(3#l4K%o1>))Yz(GA za-O${DnvsNm4)qt4cRQUOnR!@PT{cFEYDd!O~gEM-HhCgU8_(W>D{8i34++iC3U7V z!2sET1mw@I!4Vh`a@8Jt0Trbtoz#dYBfD*!9CY1V*vM%uDU_eBJkOk0-)I#$O9OXFw?Zvc% z8t0qBd@u#TV21JYsWsT$-QBUIG~`2wN)n-lhYMZpUaP_JBsNjS5EJ1t$bLlu)1wtM zs)+3lUhm}GPkeefMRO7Y$~}r(JRil2;eIte!xx#y7VvU)WGB2hf(|efC)isi)p@_S zWP1`m@4KIY2l9mhIW^@>=ohFh1y>iiT{-~q5`vv?!mFD=1CU%-h*_x4sJ zegobmm~YVofl&w@4J`f~art**AW(*wHgp(N)cBdT=3+=0gt|dLHv|4$*O#-{91*8Q zfcDGn^V|5ks@xDiF00{B3Qb226$>EpG6P0A2up?WXi$g%NgA~jSo@1>Q0A=!cD#nA zWs|h0L9`*j-H%OCo?C%^RQrL1^aE9~Q>Q#7q-v~?4Qly=hG})5o7N-z;6rSXSG!~( z1;%8~+k^0XBVavU8n*p)tMc31x5ktAvqmQC{jE5YFCiaBON#}o;&F(nZTyuB|J#R2 z(b|kv+Sik6@FyyOo>=Pr#JhHmB79h}Fj)~E7=N=0=2Bp5!!ybz&h-y20O#ib|Lx1R zqu0s-0m~cVijSF>(FNPA5NNWvCNyL~)d`+*ScwUz9f;EiU6GGORZ`O8Q@Nx{kq(}F7cq=>=irM}>c-nd$OOM@d zRh+qN66YAXyd3N1Ig<%Dn_Dl&u4|(1SzL09q1AAyjdMea`;Ym>Xt?8Y(Kn1^F__}} z9w54opu^BO#F2+)O07lv#Lt&KX(w0O2HA7fo;xN4(teO6Ro*$A&|&kJi{fm-nSk~) z3~ZM969ZqK%goF?yR3NwG{afUKwwdQYVfmjK1}Z=^}!2x5F|;ySs-KH^5sv%Dc~>O zpAIl?pDd6{Z2Hmz9v>NNX%Iue8DDfe+KF4iyag-eU41t~gD?hE%TWxnqxtD@Ue$L7 z9v@v&=lj$jA$bc4IKC6-ieWWkoQA$@z3M4g@a;u?zk>Z1 zl1CWH?1(omrs7H`rtsQJvHNgyw88vou%T&R&H!+Y8F(xW1E!DO5HZFY%7GWfBM-e~ z$-r0(OKtGBGy>inZ&VW~bIgF``RlStrlCMo>UV(Ia_&+tj{_V+w%mUxfSg$|3~W^W zEXeE#@qneNk^)ZL9aFHBj$RQ=OdnHzKV^f9%~K0M_`K5$C_~PQGMGFMmf0ou z@sObBmb*$1zdSz+Six!r6;Ps9(OQGrbCSOCekFj_^I6vmL-=5ZYY~agaQQ6bL!3`L zfFnUWhA{`0orT^fUM%2APAGFjKao|dFvW8CQ@hJ{6P5D_9T?dbE1wjxb$dE&kX~ObQ33=IwpkoTd zeSkj(hJw$+?nc>5)H2m-ReO{Z4^;w|Q|P)m8+O$9@tYiG$8>X8+|+l4Az%okf@v93 zscrk*?Qm}UVX(S(Zbvxwt8F)DwJ_`E{4^S2ym;yC+#6PFUE2c8bN5^|?i=J$X zc1V8z^Zq=9NcLSNRaSy3Wu+bld%+U9$w-^<8m8UMmw0IO0ayPjliYfi@HOCZY`5Ir zhMwUAg&v1*A}$=YgT-cHP}7Vx$pv>D!&D;BJekySbxcnm^z==QI}(=8A}{%ktRo;L z&43Btt*k&}?>JMwV-T{OhI;n#ZwHyt`+jT1G|!pjNR|TE>Bx|Z3M*Ni$oO(gE~_~>-dxa(`dVh z0~b23d^@X_tNj4HrA@Yc04ZvLG9eebYSr zB`*+QKe+`(VNnXZ$|`-hVOCLy2t6{THtG{g8b}hULU=l51pm4(ske!K%C!Znz2HZ;=EHY_@EE_j9rK+mRC@ef$=I{16eAo&Y zpWWd3nLK>)$_;VJfXk26kNz)o+I^}G;F;nele|bG=wFFcATp9QXdVhSRvO9e!9DW=LU)q7yPsV$Tu)p zuFo5v6ikjY^2;A=!5iHQCNY83`4s%{LJs}oB|X7IxVo(BIhP$V$j3}y-$O?+Mu=k9 zw1P*$4#|-CuCoWnLnn*JQ~&-g9yZTFR)-!gU8IKr zAMVh{^?m{dPv(X3DfwwD)(eh*b)6_6*OPRXU_zW2uPK3e0^5lG%1dVKN}`GRY}I|d z2(z9r?kzG2zG29QCXQD>Q|D*Z6uT8f$KOcu92iL38rD2=X8V)b%dqx~9N;aIJk`s^ zgJLkW+8^2g{iG$zTldoy<1*Op^L#_xIuPm74Y=Eyo_7p;1^nO)5x^Ppeb+GmjJEcT zwfJeQG%WqIwk;8CCM8KsgqVtd(|a09rP9StY2}J)wTElhg+v8|b#m~n2QAwlE+c<( z*RJXWL{6bAE#ee+Qe`8Mw>63R)_dyf1Pk#Xt^9VOCmj**G6t%A7j_g3;`3;`+uy-MHdj;n^JaLT z-ZFW19B|zXI@4Q2Y>m_U+R6FUO7E`M?R}}8g?o6Q`U(TBkP#$)Sy4Y6Y1{V2or zeT{t2El)Q+d#fQ_TY9-skR(QQTva9KD7t{1JYE)m7yVpM@V1tRHGoc^kbUaALilY^ zTm$M!Tc6jOEjB@uC$ttL3C~it;MHeo6S|7P9VgMI!x|ZtpRlB&%JMY}?xIc^hNWd& zcZeKV{;uY(OG4f`Tpyp8zoD3I*$$-?a=8!6m{%QU+nTqlzr$ZP2_wI?NNF()%%ob{ zzhZGhp&fvcZrYVp2(E0|o_I*JjBq<@MSq^hN54+@9zrkEU1Fi3*FU4KetZ}!YUW)N|f4*}k9x`aO zA2g0~P4kAPg?Lmmx;;?%CL;>lHwDn1s}Z+%s9|Zz{kM>S3w+~ad|S(?Z%cN|KwXZ6 zB#*Ots{J)ORu+WBviGqdYP|t*+AULO>og|zTj(Fcu#LEco?M7h>=?KqasIFj%C2(X86AN#Wa%1AMF0e1 zFVI2&4ip_#5?X(bOdA`v|D0y*dlO&^w&wU$f>)sy4g+glO@r3cF#9n8g#Dx=?m;Io%*w7w(n`Vq zd!IqZN8unJr|lV*wGIE6OhWc3iWFMFLiv=49rbz(%= zOtQwuppG+!$DxvV z_w*G029z?Xz(G!;kmyDq2ZAQ{4+iH=-#GxUsR=j_Ebt8cD9j)QcT`ypftdk2LJn_d z?1jQN7%6;(TzU1N@a;;v0jwFJE zQvWEXgvk3sFQAcEvB)|l)e*zjxfd;Q55w0M$!CV~FaDr{Ve}CC)8UQ-Rl4SKaJl7R zVIfG2O}T~L9VX?6Z$dme!F`1T((~YE+MQ=-8iH@zO+E)fWV9`x$Av$zF>V>-hZ8%* zm7C@M2cIsEZJsP5Mp+~i1TG?#m^VUkaz74m2j-i+1Ra+0X(YfO>_CefJTxBg)PAO= z849?-B?UaIQQ=pSd*kFGO@Blh7FjjP z;Y{GQdOrd}oc4#icG*jRzZ-nmYUO4S68+|XpX?9RqyV2nvV?@r$EOB~kHX#!Rm`>A zX-NdW8Cd#wwm{p&>5AZCT86EUFrXIvNa-z01BYuOms=nM9|%Pd08(rUuPle7PL3G)ll`U&HcDS_XksE zl7PA~sJc2OpF6r394jxs;$Yh8A@^K8hRTYYH38J@5O7ek$cCqQtSpEnu1Cc46rG{1rEJZ`uL%Xwo;w3FXx){{VGf;Ef ztZ0R}m;x`;f4H59mEjd$OU+&p3twuvp==GVWbK|L#E&Ac=GZNH0}*3KP+&C+?Orem z-GdS@msjc-VRHuS0v=+ZKy!}@$qN`*GNj+ROt$36!#-IIaI!#eF2lkDq1ORIZGzGV zGvF4=r)J!vtw73SSW#&K@@lfPwzvpLdYXZ&CRDFo$Tl30MgJ|#0}vfc z{L#|O>$8fCSjTl2JjIr3ODPXH| z_R&ll9ny6;02N)Q$D1N7^BS zcTEg%MoMq9*`TIO&{+@osFyAaxqL)CEhY7ILH}gk_lzW83N9wL5EAkSGwn(ZL9xWm zzSQ=d3rlTR^pA3fbU?9NOjS@{r&8sj$onMOx~oh8zoN-)+jG!ce@y&o8l|ddmkghB zI>@Z&LnhG2H=r4b*1wCsqhivhw_1bXqA3FPz0bsWg+4}oJu%pVO*kE^OT-hAi?)LOR|58*b?B>8jR z$SPsk|3{Br@hvx@KoUP0F2WuW0@T#m;0V*^g_D_be60xVZ~T}y8W+D8iS}L zw?q9@R8))*crx1s&g^V&XRN@@**SYUbScDt+UsDM4^aB&T@%}+qZ0m?uJpYpDX|&X zhdS99upPuFa0AMyEB{-p2F_(%-vv)3?vc00R%aW4v$uf9?nhlf^smf%zRySMScf7I;ug{3pPbImvIeC>E2)O=qpL}x7S`2! zPm;C6k^~%PU&oJ_4za3bAWr4H9O=-yd$7ZCnQAUt5X1}$yi|fa%|20&kq#2(>iO4% zVI}K^?L_Unw0*={6;x4&cZZPpm*4*e)dLE#nlCR>nI8&qR6?hUaAS%qUOqDR>4+%9GGN zyo!9hm@ig`g<4v=@`4!71@f!V^z)KCNOl1WRs1VWPntXKeEjVSDKYk3oAK%!UWYE( zatJhnPA++gmyt+|;j4Puyf14ehnL4{U%SBT5us9#MxvucZu=V*#IJdtj0y?#uOQI# z&uaY{{N7~2(m!vDny6Sr;;s4_WIGiJd!MXF-%mNZp-S^A7Y2*c`;NB9px`a3U`p29 z$?x*CL7hINkO9_w6RzQ9_uf3ZR<`qJX?hYFrm%1n+@C1=Ky2kgbgj9 z_3erQq=1aOciI#Rg^N%q*tXq-Y%?4Eh)Jq88#5^H%N{(#RA^Gw2`b2ftha7EujtMV zH-PN0-wIuFVmqt_utBMc;yuNwmJ!nD$!9e*&CVj~vi70RQF{cj%Mivu)lk*k5{}mk zHcLmpI@tF<0Nj7Wto!Oz-Tc|${rY;y?N%NNl8M!M6enOP1)k@idXGr&k)!aui6bb!w-adIjLimQ&rXfS;4b@@7}nvgHLbg;Ex zILx>Ry~!N(CL#%9JuAc$?_`xs_arpO#LXW@vNRbJfeqq7%a#0r;zAJ(Z-k$l!8nh2wP_(B;T zyt_!KUs|}i3Qk+)q!GB{#B29_k`1rvmVHDF%LmDruUJ8^(VeGv+hkiF_;}3vck-l= zN(AcFn#-<0-kyQr?Y#L(eMiu3D+BmWbhAe@InK+U!&bvySJty9=7O<^E#!2J~#-Q23m8 zF?=6FpM&l0r4$5*>R&k*_6oEd917qKe2q-k*0(oLZ&+(o`;(;>b8pvIY}AyuFrKaf zX@8Yff4%`1G=y(wTBBN_#C~USG+PIi96r)Cx2cX)!R}5>2*rP~E&lu|!~))-a>;}d z99X>{i1`zG{@XvANQ0Ok^PajIv|wH_zsmd5ApVoGK}&#)5U$dIQ}q93>-=A~&OZ;% z|Cel?IUL?53=B$Y8Sy)6J^wG6JO6c{kv}~bM-DY{JKq0)5A~IYm`70#Dc*Nr6L0`} z^Yt(WQP`DCg>qH}+94Jo6Z{%3RpPZ7V@HC*-sW5@O#X`=AmdlWB|b|dpA&{tVUYG) z01;wB{F)H14@41~s5Ri6a3XXfP#G}T@+RZZR=XuXR$>vAqg5mc&M8bV3cIJIDO&@`&(zceav-~dJa$i#cEo?Hn&mU9Of6v=GJ{u$sT48zYmk3OqOZgmCJ*&fmO_HF%mIk`@xan-%y*jfDCEl+m&-pShG?4Isn@ zv}3Z+nFQnwkP1L;o{D$@DKBkKH!}d2B?>O1Q>)#uM`UlB*hC(%#p3dSzna4V*Z|c; zrCLKZPzW51uoEFbyR`bWYrH&JRMP@T*fsA%J<5uhtijCcws&XVLT9Z%SM?7qS8W&t zn9MAISpAA_jZrhvTt0jj#Ws(Ma^l?=)6lKiA9o*+ap{kgkFSh=Hip!NfY&D5%LRsw zkG)`%!^dX_kd{hOsl2Taj7CyP>!)Jf*oEh8xB3`7ty(^r`6Sn5biC(j71TxMw~#h; z5CX~+S030LzK0F;_D>efOWP5-kojhJ&)K)}&7sk2-}~ppwPyq#eZhv2Loo5D^Ax=D z$G=N!WVE%l#hE=lU12}c9@f+Rj&+4fV9wYIUj*dJgbh z+xz`?AoFoFV;;KxXi}u@?u7A0TJz0LAqE%@gaWE~`R76uUB!(D2ACq?LxCm$WKs3N zVEQVw3Ul7eCQ+j$(9%{_f|NmrIYrEG053+dhqG z`B4E~ZS(S#i9OsOXT{Iis^{x-5Hl-=gMf$%*uJvB7{^{cAE|%##=G8Is~o~8T!7+| zMQzf-q^@J%gQRhK$ssbSghUD|sUZ@ruU1D-xV!nDfrLv|5q|LTjp(ke7)7dakawXj zh|#M+g#zP2k^<`wLCnXeKr97g4#oja7cssMgjo&&9ci_)Wec&gff=6_r=z)}ceyvP z+XVE}*-RXH0;}JX%EA04q=+mok35OaN6Z$g7WP?KhQ{(&0WN?XZ8}iaD!?=9`r~&= ztMy9@if*hAoD`zoNDa|yEp6+31F0if_%E_``&K4kc2D-^0HF&3${|~;=)js}RIbIxPA-iZ41GOi%D)gd(+pd$>rrXgrFt-E=auyix|@3V&gW^?E15Vg<5AS zRuw-xEf*d-c(!XQ<+XUcpMn_xbHxqj&tW-v<+J3lh5sb-z^p8V?L`o!z@!MPvp9xt z3Y4vyAw^jKJVWu|h8bJH)sY$Z-C!S8^WIcpJbGYf|0ds&lk(1w=8-e!FViXsZ>vRm z=ha9%{rb^mn%rROIobIKntv@t3uFUkIe-)8VTCw+Id_`}VZN!u`0p1xk6Y(C&NABJ zH7TwPozlD_1HIX_e4Ypn9bPzp*QJ9gJ4bFwyKQwzIb7WxKRGh!8i>2e=NTw_iWc7A zUBrv!@x`;Y>>sa5VEC3{PhPOyqPPR&sop2#6UF9zErU4B4m|_uTRd593Q^HZT&1By z&^^wwFL{AIYvEDS=29 z#}3^R>K3-%T21E_{wb@mY-A0l&R)$)zG|~+>C%gdr{UE=11j~DL=&11m7&?NJG%=Y zr0?PwCT!reIJLPEjlq`qG^JUV_rjB=P{m@ubAd3DL;9;GNm{tmJB3}Ruy2&sJ;P}Q zpfKruKDc7J9f48szLSq;3Gn*BEjKGJ7P~lS0ppF|Z17zY)U_ zbPOV10JQym8PMOg*;iHHjo5pBZS>#?Ov_aAbj#VdAz`Ah7>>HHI;;`G&jf?5|3XhHLIr6_{0MO(DcMfKP}=Yu}*< zZ$3W5SYBWqGqPWSxB?|`_#Wr*@+BVe|Ec_y_t{{+EcVm zAuC+18%+4OC7MX{0fiu{(s+KLW;-)rc`|A}i$&|C;8;Dyn=#bcQ_P!Hz*uJj?p*$e?biz`Dbk^)!Ge2p`)(UN1G)_RmPi7WqV2^D zTE0az@xxC!7)}5lHb-squlwLm8GZfH)5Gn2@AkVXH7LoUN^W(zKLk^;+I&zjZ9|Z1 z*Y+}~P3^&j%sL7v(DTDx8V*fW+YYS?Vz?y!NNLt*-VY(^Q(!1_HC>~;DIrRLu3W~>SiFWkZ!vHhX{ESuM^^G`#3DV+m;Ikc_8-5PSxCO z<>Z$+dY}8BzX3F24bX`Hr@d%G(xMkAPFKy@R{05KpqYz2uOoytvUvL zS4FL%SQV@Z_^K!bC{Z9{)Bp+=gb0i|gQ{VoY=VET`L zFK3^SKsj=R0x+uQHkJxQ7M;8!~Cu3ClCU!)Af^?4{9!$QSDN%TYzQ0q~1Zr=sa zM+m1_5fx4~K{TVRL^R?0*Yv<9qnVRn zXE&QU1L}Q(S_AMPA6V`D^7}xGvNpjqTbO--Ez^9e(sXPuct%s7sZeuLI*e4Q)ORZ6H1w z9n-N-aQnE~u~321Wq*2O^TW!WrRmieBvI%L@E8N_8U9UD?SL})5%l3p0W_QzOh$;9 zaLENC0fLM`j8uhW{H>)ye)=gbt7hxVb}GXVwGm4);&IPm1+fA7M>fCEkw~dO9pa@B z@rGE6w^bWakvU;umFQkmVy@ROb2wNxU-HYZDu)M%1jKDqW}_85*SeYROO+hv(-VJaR^dz#qyx&3$i(L^;(bA>;)(lQHwqF>~9J%+kHLh z*C?!U_*7cM7XH ztND@{73Vr2fETMPsqI-(syi7M$U4QvLP8&viA8hLR4$+B-$rXO4YG&}Sts z)l6wAqk+z})fN5MB~Pl{<)M1kB6ZZX$353>9@gIgW~Xy~gAB;}o{Ov3oxWXH6&H!p zP_gml2;n)E*MFuq0)jR}pbnFkU8R#+237L?y2Okax0(gh#quXr>*suXPJLp*f%p{3 z{L2RrWa30KJfH<)=q?g4e%HBE`46@~fLmbO&Q?`Wj(vJuMjT-8$WSl0N@e|+$bm!0 zua`I-L_r^}zSgHu>uX2M5%Z*#$X19XbvMN7_kyTb>dWwnstMPDLzeQFi@*pFcAXk* zbI7SdP^tZ4)s1R5E9U^U!xk>c`}%<^5u4^^Zfh(ryYS)$HpK&j-WLOSUXfJX@yP6m zI*ijCrLZn5fSK^qW-GWhV_f_;7_bX%j9PmHyT(cD!1pw}g2Slx`-i>Nc=_f^ladon z|H)Nzg))6bQ0L#%!ZUAY;sR(edR_Q~Zk38!aBY-qyLM4pF9 zgN+kQD;_nI@V^}MTZ3c#1iXd3hi6u#YIpBP?$0h4FFtW~i8rN&wis=oWlVypk-?Dk zckfM&Qw#d#jNt7K#+k4d`!rNM${Xq{K}j3s7G1H~RWOa-7#f;K+df$p5)zV*(i#Wz zZc_+B6_dqq2{pMjMvH3tV0vR3J0E3JSl$edyypc#&#ev*5=uRhVg-1Ug%fxNsBKJ`ktLUp2Y>36K-PE{6m*6{eCySUHU9+)7rtM~d7PXDN9*HeF{oUR>+a{G`7 cxmnS4QoS9^esyZ|+(f}EgvaM90~c-m7w0S;)&Kwi literal 0 HcmV?d00001 diff --git a/content/posts/securing-web-servers-cloudflare-tunnel/speedtest-funnel.png b/content/posts/securing-web-servers-cloudflare-tunnel/speedtest-funnel.png new file mode 100644 index 0000000000000000000000000000000000000000..302d4211ea8e53f88e03ce0e2159002e98f0b13f GIT binary patch literal 98678 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 literal 0 HcmV?d00001 diff --git a/content/posts/securing-web-servers-cloudflare-tunnel/speedtest-tailnet.png b/content/posts/securing-web-servers-cloudflare-tunnel/speedtest-tailnet.png new file mode 100644 index 0000000000000000000000000000000000000000..f787013ce88a40b0aedf10e2f193cf855f4ec322 GIT binary patch literal 101190 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∈ivAeBthKV4H2PbJH|Y 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 literal 0 HcmV?d00001 diff --git a/content/posts/securing-web-servers-cloudflare-tunnel/tunnel-configuration.png b/content/posts/securing-web-servers-cloudflare-tunnel/tunnel-configuration.png new file mode 100644 index 0000000000000000000000000000000000000000..c91aba4ad53decbe2d18b79759a31963e0ca4d2c GIT binary patch literal 125730 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