<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Scribble</title><link>https://scribble.washo3.com/en/</link><description>Recent content on Scribble</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Thu, 20 Aug 2026 11:36:40 +0900</lastBuildDate><atom:link href="https://scribble.washo3.com/en/index.xml" rel="self" type="application/rss+xml"/><item><title>Fix Hugo Preview Build Failures and English 404s on Cloudflare Pages</title><link>https://scribble.washo3.com/en/cf-scribble-preview-hugo-en/</link><pubDate>Thu, 20 Aug 2026 11:06:20 +0900</pubDate><guid>https://scribble.washo3.com/en/cf-scribble-preview-hugo-en/</guid><description>&lt;p&gt;After I published the English version under &lt;code&gt;/en/&lt;/code&gt; in &lt;a href="https://scribble.washo3.com/en/hugo-multilingual-en-hreflang/"&gt;Publishing an English Version of a Hugo Blog at a Separate /en/ URL&lt;/a&gt;

, I tried to send non-main branches to Cloudflare Pages Preview and hit two problems in a row.&lt;br&gt;
main (production) was succeeding without issue, so at first I had no idea where the cause was.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The Preview build fails with &lt;code&gt;permalink ill-formed&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;After deploy, clicking &amp;ldquo;English&amp;rdquo; in the menu returns 404&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The root of both was that Cloudflare Pages manages environment variables separately for &lt;strong&gt;Production&lt;/strong&gt; and &lt;strong&gt;Preview&lt;/strong&gt;. I worked through them one at a time.&lt;/p&gt;</description></item><item><title>Publishing an English Version of a Hugo Blog at a Separate /en/ URL</title><link>https://scribble.washo3.com/en/hugo-multilingual-en-hreflang/</link><pubDate>Thu, 20 Aug 2026 10:24:31 +0900</pubDate><guid>https://scribble.washo3.com/en/hugo-multilingual-en-hreflang/</guid><description>&lt;p&gt;I had come to want my Japanese-language tech blog to be readable from the English-speaking world too.&lt;br&gt;
An easy way to do this is to run Google&amp;rsquo;s translation widget on the page and switch to an English display at the same URL. On another site that had been enough.&lt;/p&gt;
&lt;p&gt;This time, though, the goal was not &amp;ldquo;convenience for visitors already here&amp;rdquo; but discovery and indexing from English queries. I judged that a widget could not satisfy that.&lt;/p&gt;</description></item><item><title>Running DBX, a Lightweight Multi-DB Client, on Docker Behind Traefik at /dbx</title><link>https://scribble.washo3.com/en/dbx-docker-traefik/</link><pubDate>Wed, 19 Aug 2026 12:38:40 +0900</pubDate><guid>https://scribble.washo3.com/en/dbx-docker-traefik/</guid><description>&lt;p&gt;DBeaver, which lets me edit PostgreSQL data in bulk through a GUI while writing almost no SQL, had been invaluable. It is Java based, though, so it is fairly heavy to start up, and I had come to want something a bit lighter for looking at several databases together.&lt;br&gt;
That was when I found DBX. It is free, supports many databases, and is said to run lightly. I decided to try building it into my Traefik-fronted Docker environment.&lt;/p&gt;</description></item><item><title>Pi-hole Web UI Unreachable After a Failed TLS Certificate Auto-Renewal</title><link>https://scribble.washo3.com/en/pihole-webui-tls-cert-failure/</link><pubDate>Fri, 07 Aug 2026 09:20:13 +0900</pubDate><guid>https://scribble.washo3.com/en/pihole-webui-tls-cert-failure/</guid><description>&lt;p&gt;I noticed that the Web UI of the Pi-hole I run at home (&lt;code&gt;http://127.0.0.1:8053/admin&lt;/code&gt;) had become completely unreachable.&lt;br&gt;
All I got back was &lt;code&gt;Connection reset by peer&lt;/code&gt;, and neither the browser nor curl could see anything.&lt;br&gt;
DNS resolution (port 53) was still working fine, so there was no real damage.&lt;br&gt;
As far as &lt;code&gt;docker ps&lt;/code&gt; went the container was shown as &lt;code&gt;healthy&lt;/code&gt;, so I had not been worried, but when I looked into it I found that the problem itself went back six days, to 2026-08-01.&lt;/p&gt;</description></item><item><title>Deduplicating zsh Command History Automatically Once a Day</title><link>https://scribble.washo3.com/en/zsh-history-dedup-daily-cleanup/</link><pubDate>Thu, 30 Jul 2026 10:44:55 +0900</pubDate><guid>https://scribble.washo3.com/en/zsh-history-dedup-daily-cleanup/</guid><description>&lt;p&gt;With daily terminal work, the same commands pile up in &lt;code&gt;~/.zsh_history&lt;/code&gt; over and over.&lt;br&gt;
History searches with peco / Ctrl-R end up full of noise, and the file tends to grow.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;zshrc&lt;/code&gt; I use every day is part of a &lt;code&gt;dotfiles&lt;/code&gt; repository where I keep all my dot files together under Git.&lt;br&gt;
This time I decided to touch that &lt;code&gt;zshrc&lt;/code&gt; and add settings that cut down the duplicates.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="deciding-the-requirements-first"&gt;Deciding the requirements first&lt;/h2&gt;
&lt;p&gt;Before doing any work, I settled on the following specification.&lt;/p&gt;</description></item><item><title>Migrating beautifulhugo from Legacy to Current: Dark Mode, Search and TOC</title><link>https://scribble.washo3.com/en/beautifulhugo-current-migration/</link><pubDate>Wed, 29 Jul 2026 11:14:57 +0900</pubDate><guid>https://scribble.washo3.com/en/beautifulhugo-current-migration/</guid><description>&lt;p&gt;When I looked into the beautifulhugo repository, I noticed that the current master (referred to as the current version below), which is separate from the legacy version I have been using, bundles dark mode, search and a table of contents (TOC) all together.&lt;br&gt;
I had actually tried once before, in a commit called &amp;ldquo;Update Beautifulhugo&amp;rdquo;, to bump only the pin in go.mod, but 34 minutes later I reverted it. The commit log does not record what happened, but at that time I swapped only the pin without thinking about things like the breaking changes from Bootstrap 3 to 5, so the display probably broke and I rolled it back immediately.&lt;br&gt;
This time, as a rematch, I decided to redo the migration from the legacy version to the current version in separate stages.&lt;/p&gt;</description></item><item><title>Qiita-Style Heading Anchors and note.com Line Spacing in a Hugo Blog</title><link>https://scribble.washo3.com/en/qiita-note-style/</link><pubDate>Tue, 28 Jul 2026 14:59:17 +0900</pubDate><guid>https://scribble.washo3.com/en/qiita-note-style/</guid><description>&lt;p&gt;The anchor link with an anchor icon (&lt;code&gt;fa-anchor&lt;/code&gt;) that was permanently displayed at the end of the headings (h2 and so on) on this blog had started to feel a bit uncool to me.&lt;br&gt;
Referring to the heading design of &lt;a href="https://qiita.com/" target="_blank" rel="noopener"&gt;Qiita&lt;/a&gt;

 (in Japanese), I decided to rethink how it is displayed, including the effect on SEO. While I was at it, I also adjusted the line height and margins of the body text to match the article style of &lt;a href="https://note.com/" target="_blank" rel="noopener"&gt;note&lt;/a&gt;

 (in Japanese).&lt;br&gt;
This is a record of the work, in which I left almost all of the code changes to generative AI instead of doing them by hand, and checked the local appearance with Playwright MCP as I went.&lt;/p&gt;</description></item><item><title>Running phpIPAM on Docker to Automate LAN IP Address Management</title><link>https://scribble.washo3.com/en/phpipam-docker-setup/</link><pubDate>Tue, 28 Jul 2026 11:18:30 +0900</pubDate><guid>https://scribble.washo3.com/en/phpipam-docker-setup/</guid><description>&lt;p&gt;The IP address ledger I had been keeping in GoogleSpreadSheet was no longer keeping up as the number of devices grew.&lt;br&gt;
The IP addresses actually in use and what the sheet said drifted apart more and more, and I was reaching the limit of taking stock by hand, so I decided to start phpIPAM with Docker and move IP management there.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="starting-it-with-docker"&gt;Starting it with Docker&lt;/h2&gt;
&lt;p&gt;I settled on the following &lt;code&gt;docker-compose.yml&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>OrbStack Won't Start: Fixing 'vmgr is already running (socket)'</title><link>https://scribble.washo3.com/en/orbstack-vmgr-already-running-socket/</link><pubDate>Tue, 28 Jul 2026 05:33:44 +0900</pubDate><guid>https://scribble.washo3.com/en/orbstack-vmgr-already-running-socket/</guid><description>&lt;p&gt;I publish various services from my home server with Docker, so when OrbStack (Docker) does not work properly it seriously disrupts my daily work and my use of those services.&lt;br&gt;
This time, when I tried to start OrbStack on macOS, not only did the Docker containers fail to come up, the app itself did not launch at all and quit immediately, which made me quite nervous.&lt;br&gt;
Here I record how I investigated the cause and recovered.&lt;/p&gt;</description></item><item><title>Deleting Scattered node_modules in Bulk with npkill</title><link>https://scribble.washo3.com/en/npkill-node-modules-cleanup/</link><pubDate>Fri, 24 Jul 2026 10:59:24 +0900</pubDate><guid>https://scribble.washo3.com/en/npkill-node-modules-cleanup/</guid><description>&lt;p&gt;When you work with npm / yarn / pnpm a lot, &lt;code&gt;node_modules&lt;/code&gt; directories get created one after another, and before you know it they are eating into your disk space.&lt;br&gt;
Repositories I tried out, verification projects I left lying around, old clones… hunting down the scattered &lt;code&gt;node_modules&lt;/code&gt; one by one and running &lt;code&gt;rm -rf&lt;/code&gt; is tedious, so I am noting down that a command called &lt;code&gt;npkill&lt;/code&gt; makes tidying up easy.&lt;/p&gt;</description></item><item><title>How to Deal with Homebrew 6.0 Asking y/N on Upgrade</title><link>https://scribble.washo3.com/en/homebrew-6-upgrade-prompt/</link><pubDate>Mon, 15 Jun 2026 00:00:00 +0900</pubDate><guid>https://scribble.washo3.com/en/homebrew-6-upgrade-prompt/</guid><description>&lt;p&gt;From Homebrew 6.0 onwards, running &lt;code&gt;brew upgrade&lt;/code&gt; or &lt;code&gt;brew install&lt;/code&gt; asks you to confirm whether to continue.&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;==&amp;gt; This action will upgrade X formulae.
Proceed? [y/N]&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Until now it went ahead automatically, so I imagine many people were caught off guard. In this article I summarize the ways to deal with it depending on the situation.&lt;/p&gt;
&lt;h2 id="dealing-with-it-on-the-spot"&gt;Dealing with it on the spot&lt;/h2&gt;
&lt;p&gt;If you do not need to change any settings in particular, all you do is type &lt;code&gt;y&lt;/code&gt; and press Enter when the prompt appears.&lt;/p&gt;</description></item><item><title>Removing Containers and Volumes for Just One Docker Compose Project</title><link>https://scribble.washo3.com/en/docker-clean/</link><pubDate>Mon, 27 Apr 2026 15:14:20 +0900</pubDate><guid>https://scribble.washo3.com/en/docker-clean/</guid><description>&lt;figure&gt;
 &lt;a href="https://i.imgur.com/zOAxpAU.webp" target="_blank" rel="noopener"&gt;
 &lt;picture&gt;
 &lt;source
 type="image/webp"
 sizes="(max-width: 320px) 320px, (max-width: 640px) 640px, 640px"
 srcset="
 https://i.imgur.com/zOAxpAUh.webp 1024w,
 https://i.imgur.com/zOAxpAUl.webp 640w,
 https://i.imgur.com/zOAxpAUm.webp 320w
 "
 /&gt;
 &lt;img
 src="https://i.imgur.com/zOAxpAU.webp"
 loading="lazy"
 decoding="async"
 style="min-height: 480px"
 onload="this.style.minHeight = 'auto'"
 
 alt=""
 
 /&gt;
 &lt;/picture&gt;
 &lt;/a&gt;
 
&lt;/figure&gt;

&lt;p&gt;There are plenty of occasions where you clone a repository on GitHub and bring up a Docker environment temporarily to try it out.&lt;br&gt;
Deleting the containers and volumes that are no longer needed after testing one by one, however, is a chore.&lt;/p&gt;
&lt;p&gt;Commands such as &lt;code&gt;docker system prune&lt;/code&gt; are convenient, but using them also deletes containers and volumes that are not running and have nothing to do with the test, which has bitten me several times.&lt;br&gt;
So I wrote a script that can safely remove the Docker environment of one specific project in a single shot.&lt;/p&gt;</description></item><item><title>Generating llms.txt and llms-full.txt in Hugo with Output Formats</title><link>https://scribble.washo3.com/en/hugo-llms-txt/</link><pubDate>Sat, 07 Feb 2026 14:00:00 +0900</pubDate><guid>https://scribble.washo3.com/en/hugo-llms-txt/</guid><description>&lt;p&gt;I added &lt;a href="https://llmstxt.org/" target="_blank" rel="noopener"&gt;llms.txt&lt;/a&gt;

, a specification that lets LLMs retrieve the information on a website efficiently, to this Hugo blog.&lt;/p&gt;
&lt;h2 id="environment"&gt;Environment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Hugo v0.155.2
&lt;ul&gt;
&lt;li&gt;Theme: &lt;a href="https://themes.gohugo.io/beautifulhugo/" target="_blank" rel="noopener"&gt;Beautifulhugo&lt;/a&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cloudflare Pages&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-llmstxt-is"&gt;What llms.txt is&lt;/h2&gt;
&lt;p&gt;A Markdown-format text file placed at the root of a website, proposed at &lt;a href="https://llmstxt.org/" target="_blank" rel="noopener"&gt;llmstxt.org&lt;/a&gt;

. Like &lt;code&gt;robots.txt&lt;/code&gt; or &lt;code&gt;sitemap.xml&lt;/code&gt;, it provides an overview of the site and its main links in a form that is easy for an LLM to read.&lt;/p&gt;
&lt;p&gt;There are two main kinds of file:&lt;/p&gt;</description></item><item><title>Powerlevel10k to Starship: Migration Steps and Customization</title><link>https://scribble.washo3.com/en/powerlevel2starship/</link><pubDate>Fri, 30 Jan 2026 16:01:38 +0900</pubDate><guid>https://scribble.washo3.com/en/powerlevel2starship/</guid><description>&lt;h2 id="a-migration-guide-from-powerlevel10k-to-starship-2025-edition"&gt;A Migration Guide from Powerlevel10k to Starship (2025 Edition)&lt;/h2&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;I migrated from Powerlevel10k, which I had used for years, to Starship.&lt;br&gt;
In this article I summarize the differences between the two, recent developments, the migration procedure, and how to customize it.&lt;/p&gt;
&lt;h2 id="powerlevel10k-vs-starship"&gt;Powerlevel10k vs Starship&lt;/h2&gt;
&lt;h3 id="powerlevel10k"&gt;Powerlevel10k&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Features:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A prompt theme &lt;strong&gt;for Zsh only&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extremely fast startup time&lt;/strong&gt; (under 10ms)&lt;/li&gt;
&lt;li&gt;Beginner-friendly setup through a &lt;strong&gt;configuration wizard&lt;/strong&gt; (&lt;code&gt;p10k configure&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;More than 10 built-in themes&lt;/li&gt;
&lt;li&gt;Advanced customization is possible&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Drawbacks:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Handy Ways to Use Miniflux: Bookmarklet and Mobile App Integration</title><link>https://scribble.washo3.com/en/miniflux-client/</link><pubDate>Thu, 22 Jan 2026 12:47:24 +0900</pubDate><guid>https://scribble.washo3.com/en/miniflux-client/</guid><description>&lt;p&gt;In a previous post I covered building &amp;ldquo;Miniflux&amp;rdquo;, an RSS reader you can run yourself.&lt;br&gt;
Its appeal is that it is simple and fast, but there are ways to make the day-to-day work of &amp;ldquo;registering feeds&amp;rdquo; and &amp;ldquo;reading on mobile&amp;rdquo; even more convenient.&lt;/p&gt;
&lt;p&gt;This time I explain the combination that is still the strongest as of 2026: registering feeds at blazing speed from a PC browser with the bookmarklet, and setting up synced reading in &amp;ldquo;NetNewsWire&amp;rdquo;, the popular iPhone app.&lt;/p&gt;</description></item><item><title>Self-Hosting Miniflux with Docker Compose and Traefik</title><link>https://scribble.washo3.com/en/miniflux-docker/</link><pubDate>Thu, 22 Jan 2026 12:16:40 +0900</pubDate><guid>https://scribble.washo3.com/en/miniflux-docker/</guid><description>&lt;p&gt;Up to now I had been self-hosting RSS with FreshRSS, but since Miniflux is lightweight and can integrate with all sorts of external services, I migrated to it.&lt;/p&gt;
&lt;p&gt;I am building it with Docker again this time, and I am writing it up on the following assumptions.&lt;/p&gt;
&lt;h2 id="environment"&gt;Environment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;My own domain (already registered with Cloudflare)&lt;/li&gt;
&lt;li&gt;Network: &lt;code&gt;traefik-network&lt;/code&gt; (external)&lt;/li&gt;
&lt;li&gt;CertResolver: &lt;code&gt;cloudflare&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;entryPoints: &lt;code&gt;web&lt;/code&gt; (80), &lt;code&gt;websecure&lt;/code&gt; (443)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="docker-composeyml"&gt;docker-compose.yml&lt;/h2&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;services&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;miniflux&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;miniflux/miniflux:latest&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;container_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;miniflux&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;always&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;depends_on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;db&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;condition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;service_healthy&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;DATABASE_URL=postgres://miniflux:${DB_PASSWORD}@db/miniflux?sslmode=disable&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;RUN_MIGRATIONS=1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;CREATE_ADMIN=1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;ADMIN_USERNAME=${ADMIN_USERNAME}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;ADMIN_PASSWORD=${ADMIN_PASSWORD}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;BASE_URL=https://${MINIFLUX_DOMAIN}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;labels&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;traefik.enable=true&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;traefik.docker.network=traefik-network&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;traefik.http.routers.miniflux.rule=Host(`${MINIFLUX_DOMAIN}`)&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;traefik.http.routers.miniflux.entrypoints=websecure&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;traefik.http.routers.miniflux.tls=true&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;traefik.http.routers.miniflux.tls.certresolver=cloudflare&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;traefik.http.services.miniflux.loadbalancer.server.port=8080&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;networks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;traefik-network&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;miniflux-internal&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;healthcheck&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;test&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;CMD&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/usr/bin/miniflux&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;-healthcheck&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;auto&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;interval&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;10s&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;start_period&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;30s&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;db&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;postgres:17&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;container_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;miniflux-db&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;always&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;POSTGRES_USER=miniflux&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;POSTGRES_PASSWORD=${DB_PASSWORD}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;POSTGRES_DB=miniflux&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;miniflux-db:/var/lib/postgresql/data&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;healthcheck&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;test&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;CMD&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;pg_isready&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;-U&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;miniflux&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;interval&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;10s&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;start_period&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;30s&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;networks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;miniflux-internal&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;networks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;traefik-network&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;external&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;miniflux-internal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;driver&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;bridge&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;miniflux-db:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="env"&gt;.env&lt;/h3&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-env" data-lang="env"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;DB_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your_secure_db_password
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ADMIN_USERNAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;admin
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ADMIN_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your_secure_admin_password
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;MINIFLUX_DOMAIN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;rss.your-domain.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="starting-it-up"&gt;Starting it up&lt;/h2&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose up -d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="building-miniflux-safely-with-traefik--docker-compose"&gt;Building Miniflux safely with Traefik + Docker Compose&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt;: the official documentation uses Postgres 18, but it is still beta, so I use 17&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Network isolation&lt;/strong&gt;: the DB is connected only to &lt;code&gt;miniflux-internal&lt;/code&gt;, so it cannot be reached from outside&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traefik integration&lt;/strong&gt;: the miniflux container is connected to &lt;code&gt;traefik-network&lt;/code&gt;, and the routing is configured with labels&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ports&lt;/strong&gt;: miniflux starts on 8080 by default, so there is no need to publish a port to the host (Traefik handles it)&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Securing the Vaultwarden ADMIN_TOKEN with an Argon2 Hash in Docker</title><link>https://scribble.washo3.com/en/vaultwarden-admin/</link><pubDate>Mon, 19 Jan 2026 10:10:26 +0900</pubDate><guid>https://scribble.washo3.com/en/vaultwarden-admin/</guid><description>&lt;h2 id="making-the-vaultwarden-admin_token-secure-with-an-argon2-hash"&gt;Making the Vaultwarden ADMIN_TOKEN secure with an Argon2 hash&lt;/h2&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;When you open the Vaultwarden admin page, the following warning is sometimes displayed.&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;You are using a plain text `ADMIN_TOKEN` which is insecure.
Please generate a secure Argon2 PHC string by using `vaultwarden hash` or `argon2`.&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Since Vaultwarden 1.28.0, hashing &lt;code&gt;ADMIN_TOKEN&lt;/code&gt; with Argon2 is recommended. In this article I explain how to configure &lt;code&gt;ADMIN_TOKEN&lt;/code&gt; securely in a Docker Compose environment.&lt;/p&gt;</description></item><item><title>Why Is This Port Open? Answering It in One Command with witr</title><link>https://scribble.washo3.com/en/why-is-this-running-witr-port-investigation/</link><pubDate>Tue, 13 Jan 2026 16:07:45 +0900</pubDate><guid>https://scribble.washo3.com/en/why-is-this-running-witr-port-investigation/</guid><description>&lt;h2 id="introduction-the-late-night-what-was-this-port-again-problem"&gt;Introduction: the late-night &amp;ldquo;what was this port again?&amp;rdquo; problem&lt;/h2&gt;
&lt;p&gt;When you run servers, you repeatedly end up in the situation where you see an alert in the middle of the night, SSH into the machine, and think &amp;ldquo;what is listening on this port again?&amp;rdquo;&lt;br&gt;
Until now I combined netstat / ss / lsof / nmap / systemctl / docker ps and worked out the identity and the origin of the process by hand.&lt;br&gt;
Recently I started using a CLI tool called &lt;strong&gt;witr (Why is this running)&lt;/strong&gt;, and because it explains in a single command even why a process exists, my investigation flow has changed considerably.&lt;/p&gt;</description></item><item><title>Why sudo Loses Your PATH on Linux and How to Keep It</title><link>https://scribble.washo3.com/en/preserve_user_path_with_sudo_on_linux/</link><pubDate>Tue, 13 Jan 2026 14:50:05 +0900</pubDate><guid>https://scribble.washo3.com/en/preserve_user_path_with_sudo_on_linux/</guid><description>&lt;p&gt;When you use the &lt;code&gt;sudo&lt;/code&gt; command on Linux, the PATH you configured as a normal user is not applied and you can end up with &amp;ldquo;command not found&amp;rdquo;.&lt;br&gt;
This happens especially often when you try to run a command inside Linuxbrew (Homebrew) with sudo and the command cannot be found.&lt;br&gt;
This article explains how to carry your PATH environment variable over into sudo.&lt;/p&gt;
&lt;h2 id="why-path-changes-under-sudo"&gt;Why PATH changes under sudo&lt;/h2&gt;
&lt;p&gt;For security reasons, &lt;code&gt;sudo&lt;/code&gt; resets environment variables by default.&lt;/p&gt;</description></item><item><title>Making Hugo Post List Summaries Plain Text with plainify</title><link>https://scribble.washo3.com/en/2026-summary-plainify/</link><pubDate>Tue, 06 Jan 2026 13:23:48 +0900</pubDate><guid>https://scribble.washo3.com/en/2026-summary-plainify/</guid><description>&lt;p&gt;The summary display in the article list on the top page was being shown with the HTML notation still left in it, which felt wrong, so I fixed it ↓&lt;/p&gt;
&lt;figure&gt;
 &lt;a href="https://i.imgur.com/gSJgM0p.webp" target="_blank" rel="noopener"&gt;
 &lt;picture&gt;
 &lt;source
 type="image/webp"
 sizes="(max-width: 320px) 320px, (max-width: 640px) 640px, 640px"
 srcset="
 https://i.imgur.com/gSJgM0ph.webp 1024w,
 https://i.imgur.com/gSJgM0pl.webp 640w,
 https://i.imgur.com/gSJgM0pm.webp 320w
 "
 /&gt;
 &lt;img
 src="https://i.imgur.com/gSJgM0p.webp"
 loading="lazy"
 decoding="async"
 style="min-height: 480px"
 onload="this.style.minHeight = 'auto'"
 
 alt=""
 
 /&gt;
 &lt;/picture&gt;
 &lt;/a&gt;
 
&lt;/figure&gt;

&lt;p&gt;Stripping the HTML also looks better for SEO, so I made the following change&lt;/p&gt;
&lt;p&gt;layouts/partials/post_preview.html&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;article&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;post-preview&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;{{ .Permalink }}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;h2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;post-title&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&amp;lt;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;subtitle&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;h3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;post-subtitle&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;subtitle&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;img&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;{{ .Params.image }}&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;alt&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;{{ .Title }}&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;img-title&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;video&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;video&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;loop&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;autoplay&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;muted&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;playsinline&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;img-title&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;source&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;{{ .Params.video }}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;video&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;post-meta&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;partial&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;post_meta.html&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;post-entry&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(.&lt;/span&gt;&lt;span class="nx"&gt;Truncated&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(.&lt;/span&gt;&lt;span class="nx"&gt;Params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Summary&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;plainify&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;{{ .Permalink }}&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;post-read-more&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;[{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;i18n&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;readMore&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}]&amp;lt;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Content&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;tags&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;blog-tags&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;range&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;tags&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;{{&amp;#34;&lt;/span&gt;&lt;span class="nx"&gt;tags&lt;/span&gt;&lt;span class="s"&gt;&amp;#34; | absLangURL}}/{{ . | urlize }}/&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&amp;lt;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nx"&gt;nbsp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;article&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Moving to init.lua on Neovim 0.11 and the E5422 Config Conflict</title><link>https://scribble.washo3.com/en/2025-neovim-lua-migrate/</link><pubDate>Fri, 12 Dec 2025 16:13:09 +0900</pubDate><guid>https://scribble.washo3.com/en/2025-neovim-lua-migrate/</guid><description>&lt;p&gt;I migrated the NeoVim configuration I set up in &lt;a href="https://scribble.washo3.com/en/zsh-neovim-2022/"&gt;Reviewing my Zsh and NeoVim configuration&lt;/a&gt;

 over to Lua.&lt;/p&gt;
&lt;h2 id="tldr"&gt;TL;DR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Neovim 0.11.5 &lt;strong&gt;assumes Lua&lt;/strong&gt;, so moving from &lt;code&gt;init.vim + vim-plug&lt;/code&gt; toward &lt;strong&gt;&lt;code&gt;init.lua + lazy.nvim&lt;/code&gt;&lt;/strong&gt; gives you a big return.&lt;/li&gt;
&lt;li&gt;For completion, &lt;strong&gt;&lt;code&gt;blink.cmp&lt;/code&gt;&lt;/strong&gt; is a strong choice these days.&lt;/li&gt;
&lt;li&gt;The 0.11 trap: &lt;strong&gt;&lt;code&gt;init.lua&lt;/code&gt; and &lt;code&gt;init.vim&lt;/code&gt; cannot live side by side&lt;/strong&gt; (&lt;code&gt;E5422: Conflicting configs&lt;/code&gt;). A staged migration takes some ingenuity.&lt;/li&gt;
&lt;li&gt;While I was at it: &lt;strong&gt;NERDTree→oil.nvim&lt;/strong&gt;, hand-written brackets→&lt;strong&gt;nvim-autopairs&lt;/strong&gt;, IME→Lua autocmd, cursor shape→&lt;code&gt;guicursor&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;p&gt;In the Neovim 0.11 generation, the ecosystem of LSP, diagnostics and the surrounding plugins moves ahead &lt;strong&gt;on the premise of Lua&lt;/strong&gt;. If you keep maintaining a Vimscript-centred setup,&lt;/p&gt;</description></item><item><title>Four .zshrc Mistakes That Quietly Break Zsh, and How to Fix Them</title><link>https://scribble.washo3.com/en/2025-zshrc-fix/</link><pubDate>Fri, 12 Dec 2025 16:01:20 +0900</pubDate><guid>https://scribble.washo3.com/en/2025-zshrc-fix/</guid><description>&lt;p&gt;I had been happily using the zshrc I set up in &lt;a href="https://scribble.washo3.com/en/zsh-neovim-2022/"&gt;Reviewing my Zsh and NeoVim configuration&lt;/a&gt;

 as a base, but I went over the configuration again with the help of generative AI (ChatGPT-5.2).&lt;/p&gt;
&lt;h2 id="what-i-improved"&gt;What I improved&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Made the broken predicate functions correct (stopped using return $(&amp;hellip;))&lt;/li&gt;
&lt;li&gt;Left the locale alone (LC_ALL in particular is easy to get wrong)&lt;/li&gt;
&lt;li&gt;Made completion work from the very first shell (avoided the landmine of zinit lazy loading combined with the compinit order)&lt;/li&gt;
&lt;li&gt;Isolated the heavy listings into ll/la so that everyday ls does not get slow&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="background-with-zshrc-convenience-and-destruction-are-a-hair-apart"&gt;Background: with .zshrc, convenience and destruction are a hair apart&lt;/h2&gt;
&lt;p&gt;When it comes to improving a zshrc, there are more landmines of the &amp;ldquo;writing it the wrong way quietly breaks things&amp;rdquo; kind than there is work on appearance or adding aliases. These were the four places I got stuck this time:&lt;/p&gt;</description></item><item><title>Stop Frequent AlmaLinux Reboots by Disabling the NMI Watchdog</title><link>https://scribble.washo3.com/en/almalinux-reboot-issue/</link><pubDate>Thu, 11 Dec 2025 15:45:51 +0900</pubDate><guid>https://scribble.washo3.com/en/almalinux-reboot-issue/</guid><description>&lt;p&gt;To begin with, I decided to look at the logs from just before the previous boot, so that I could tell whether this was really a reboot coming from the OS or a problem around the hardware power supply.&lt;br&gt;
On AlmaLinux (RHEL based), running &lt;code&gt;journalctl -b -1&lt;/code&gt; shows the logs of the one previous boot all together, so I used that command as a starting point and went over the kernel messages and the systemd logs.&lt;/p&gt;</description></item><item><title>Migrating a Documentation Site from Nextra 2 to Nextra 4</title><link>https://scribble.washo3.com/en/2025-nextra2to4migrate/</link><pubDate>Mon, 08 Dec 2025 15:58:08 +0900</pubDate><guid>https://scribble.washo3.com/en/2025-nextra2to4migrate/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Nextra 4 was released and I tried to move a site built with Nextra 2 over to Nextra 4, but there were so many changes that the upgrade did not go well.&lt;br&gt;
So instead of updating the Nextra 2 project, I created a Nextra 4 project and decided to migrate the Nextra 2 project into the Nextra 4 project.&lt;/p&gt;
&lt;p&gt;In this article I go through the changes required when migrating from Nextra 2 to Nextra 4.&lt;/p&gt;</description></item><item><title>Why Hugo Shows the Wrong Last Modified Date on Cloudflare Pages</title><link>https://scribble.washo3.com/en/2025-12-04-hugo-lastmodify-cloudflare/</link><pubDate>Thu, 04 Dec 2025 01:42:20 +0000</pubDate><guid>https://scribble.washo3.com/en/2025-12-04-hugo-lastmodify-cloudflare/</guid><description>&lt;p&gt;On a blog site built with Hugo, I was stuck for a while on a problem where the &amp;ldquo;Last modified&amp;rdquo; date of each post was not displayed correctly.&lt;br&gt;
Every post ended up with the same date, and the actual update date of each post was not reflected.&lt;br&gt;
In this article I explain the cause of the problem and how to solve it.&lt;/p&gt;
&lt;p&gt;My environment uses Github and Cloudflare Pages.&lt;/p&gt;
&lt;h2 id="symptoms"&gt;Symptoms&lt;/h2&gt;
&lt;p&gt;The &amp;ldquo;Last modified&amp;rdquo; date shown in the post metadata was the same date on every post.&lt;br&gt;
For example, it was displayed like this:&lt;/p&gt;</description></item><item><title>How to Reload .bashrc and .zshrc Without Logging Out</title><link>https://scribble.washo3.com/en/2025-12-03-howto-reloading-shell/</link><pubDate>Wed, 03 Dec 2025 23:57:07 +0000</pubDate><guid>https://scribble.washo3.com/en/2025-12-03-howto-reloading-shell/</guid><description>&lt;p&gt;After editing a shell configuration file (&lt;code&gt;.bashrc&lt;/code&gt;, &lt;code&gt;.zshrc&lt;/code&gt; and so on) on Linux or macOS, how should you apply the changes?&lt;br&gt;
Many people probably think of logging out once and logging back in, but in fact there are quite a few more efficient ways.&lt;br&gt;
This article explains the various commands for reloading a shell configuration, what characterises each of them, and how to choose between them.&lt;/p&gt;
&lt;h2 id="1-the-source-command---the-most-basic-method"&gt;&lt;strong&gt;1. The source command - the most basic method&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;source&lt;/code&gt; command is the most common way to run a shell script or a configuration file in the current shell environment.&lt;br&gt;
With this command you can load the contents of the specified file into the current shell session without starting a new shell.&lt;/p&gt;</description></item><item><title>Updating Hugo and My Beautifulhugo Theme After a Year Away</title><link>https://scribble.washo3.com/en/2025-renew/</link><pubDate>Wed, 03 Dec 2025 14:20:57 +0900</pubDate><guid>https://scribble.washo3.com/en/2025-renew/</guid><description>&lt;p&gt;Somehow this is my first post in a long time, and before I knew it more than a year had passed without an update. (^_^;)&lt;/p&gt;
&lt;p&gt;Lately I have been doing vibe coding with generative AI, so I had no time to write articles.&lt;/p&gt;
&lt;p&gt;As for the Hugo behind this blog, if I do not keep it updated then changes in its features start causing problems, so I updated it.&lt;br&gt;
While I was updating Hugo, I also changed the look of the Beautifulhugo theme.&lt;br&gt;
For the changes as well, making use of generative AI these days keeps the coding moving along easily.&lt;/p&gt;</description></item><item><title>Migrating the Beautifulhugo Theme from a Git Submodule to Hugo Modules</title><link>https://scribble.washo3.com/en/2024-08-10-hugo-submodule-to-module/</link><pubDate>Sat, 10 Aug 2024 12:18:12 +0000</pubDate><guid>https://scribble.washo3.com/en/2024-08-10-hugo-submodule-to-module/</guid><description>&lt;p&gt;Up to now I had been using Hugo&amp;rsquo;s Beautifulhugo theme on this site as a submodule, but I switched it over to the hugo modules format.&lt;/p&gt;
&lt;h2 id="environment"&gt;Environment&lt;/h2&gt;
&lt;p&gt;I work by cloning my own repository from Github.&lt;/p&gt;
&lt;p&gt;First, a look at the local environment&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;❯ go version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;go version go1.22.6 darwin/arm64
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;❯ hugo version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo v0.131.0+extended darwin/arm64 &lt;span class="nv"&gt;BuildDate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2024-08-02T09:03:48Z &lt;span class="nv"&gt;VendorInfo&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;brew&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The theme is beautifulhugo, installed as a submodule&lt;/p&gt;
&lt;h2 id="initialising-hugo-modules"&gt;Initialising hugo modules&lt;/h2&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ hugo mod init github.com/user/scribble
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;go: creating new go.mod: module github.com/user/scribble
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;go: to add module requirements and sums:&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Fetching the beautifulhugo theme&lt;/p&gt;</description></item><item><title>Moving a Hugo Site from Netlify to Cloudflare Pages</title><link>https://scribble.washo3.com/en/2024-08-10-netlify-to-cloudflare.md/</link><pubDate>Sat, 10 Aug 2024 06:49:04 +0000</pubDate><guid>https://scribble.washo3.com/en/2024-08-10-netlify-to-cloudflare.md/</guid><description>&lt;p&gt;I had already finished the move from Netlify to Cloudflare on my other blog, and since the summer holidays gave me some time, I did the migration on this site too.&lt;br&gt;
It was almost the same work as the migration on the other blog, so I was able to move over fairly easily.&lt;/p&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="NetlifyからCloudflare Pagesへ引っ越しました - Way2Go" src="https://hatenablog-parts.com/embed?url=https://way2go.washo3.com/netlify2cloudflare/" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;h2 id="github"&gt;Github&lt;/h2&gt;
&lt;p&gt;To link it with Cloudflare, set the repository in question to allow the integration.&lt;/p&gt;</description></item><item><title>Suddenly Denied on macOS! Fixing a Samba Access Error</title><link>https://scribble.washo3.com/en/sonoma-samba-issue/</link><pubDate>Wed, 22 May 2024 11:02:21 +0900</pubDate><guid>https://scribble.washo3.com/en/sonoma-samba-issue/</guid><description>&lt;p&gt;When I tried to connect from macOS to a QNAP&amp;rsquo;s Samba share for the first time in a while, for some reason I was denied and could not log in even though I was entering the correct password.&lt;/p&gt;
&lt;p&gt;For reference, the macOS here is the latest Sonoma environment.&lt;/p&gt;
&lt;h2 id="investigation"&gt;Investigation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Logging in from Windows works fine&lt;/li&gt;
&lt;li&gt;Logging in over afp works fine&lt;/li&gt;
&lt;li&gt;Logging in from older macOS (High Sierra or Mojave) works fine too&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="how-to-fix-it"&gt;How to fix it&lt;/h2&gt;
&lt;p&gt;Either method is fine as long as it solves the problem&lt;/p&gt;</description></item><item><title>Enabling NVIDIA GPU Support in Docker with nvidia-container-toolkit</title><link>https://scribble.washo3.com/en/docker-gpu/</link><pubDate>Tue, 14 May 2024 10:42:58 +0900</pubDate><guid>https://scribble.washo3.com/en/docker-gpu/</guid><description>&lt;h2 id="tldr"&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;To answer the request to use a GPU (nvidia) inside a Docker container, Docker has to be configured for GPU support.&lt;/p&gt;
&lt;p&gt;Normally a Docker container cannot access the host&amp;rsquo;s GPU resources. That is because Docker does not pass the host&amp;rsquo;s GPU devices through to the container, and the reason behind it is that the GPU driver and the CUDA libraries are not properly shared between the host and the container.&lt;br&gt;
To get around this, the GPU resources have to be passed through to the container with a tool such as &lt;code&gt;nvidia-container-toolkit&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>A CLI Command That Only Updates Neovim Plugins</title><link>https://scribble.washo3.com/en/neovim-plugin-update-cli/</link><pubDate>Mon, 04 Mar 2024 10:55:14 +0900</pubDate><guid>https://scribble.washo3.com/en/neovim-plugin-update-cli/</guid><description>&lt;p&gt;I only just learned the command that updates plugins in a Neovim (Vim) setup that uses vim-plug.&lt;/p&gt;
&lt;p&gt;Until now I opened nvim, opened the &lt;code&gt;:&lt;/code&gt; command window, and typed &lt;code&gt;:PlugUpdate&lt;/code&gt;.&lt;br&gt;
That is fine for a single machine, but repeating the same steps on several hosts is tedious.&lt;br&gt;
It turns out you can run it from the command line as well.&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ nvim +PlugUpdate +qall&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;With this, you can drop it into a script or an Ansible playbook.&lt;/p&gt;</description></item><item><title>Getting an author Warning When Hugo Builds the Site</title><link>https://scribble.washo3.com/en/hugo-author-name/</link><pubDate>Mon, 29 Jan 2024 15:30:22 +0900</pubDate><guid>https://scribble.washo3.com/en/hugo-author-name/</guid><description>&lt;p&gt;The following error started appearing when building with hugo&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Start building sites …
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo v0.122.0-b9a03bd59d5f71a529acb3e33f995e0ef332b3aa+extended darwin/amd64 &lt;span class="nv"&gt;BuildDate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2024-01-26T15:54:24Z &lt;span class="nv"&gt;VendorInfo&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;brew
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WARN The author key in site configuration is deprecated. Use params.author.name instead.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Apparently the warning started being emitted from version 0.120&lt;/p&gt;
&lt;h2 id="fixing-configtoml"&gt;Fixing config.toml&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Before&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;params&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;author&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Hugo&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;After&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;params&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; author.name &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Hugo&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;If there is no author inside [params], add it&lt;/p&gt;</description></item><item><title>Getting UNIX-Style Focus Follows Mouse on a Mac with AutoRaise</title><link>https://scribble.washo3.com/en/mac-autoraise/</link><pubDate>Mon, 29 Jan 2024 08:52:42 +0900</pubDate><guid>https://scribble.washo3.com/en/mac-autoraise/</guid><description>&lt;p&gt;Ever since I started using a Mac, I kept wishing there were a feature like the one on Unix where simply moving the mouse cursor onto a window makes it active.&lt;/p&gt;
&lt;p&gt;It is late in the day, but I finally came across a piece of software with a Focus Follows Mouse feature (AutoRaise).&lt;/p&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="sbmpost/AutoRaise: AutoRaise (and focus) a window when hovering over it with the mouse" src="https://hatenablog-parts.com/embed?url=https://github.com/sbmpost/AutoRaise" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;h2 id="installing-autoraise"&gt;Installing AutoRaise&lt;/h2&gt;
&lt;p&gt;The installation instructions offer a disk image, a Zip file and manual compilation, but the disk image was not supported, so I go with manual compilation from Git.&lt;/p&gt;</description></item><item><title>How to Exclude Files and Folders from Resilio Sync with IgnoreList</title><link>https://scribble.washo3.com/en/resilio-sync-ignore/</link><pubDate>Fri, 26 Jan 2024 15:41:15 +0900</pubDate><guid>https://scribble.washo3.com/en/resilio-sync-ignore/</guid><description>&lt;p&gt;Until a few years ago I had sync configured across several PCs with Dropgox, but a change for the worse in Dropbox put a limit on the number of devices, so these days I use Resilio Sync to keep my PCs in sync.&lt;/p&gt;
&lt;p&gt;Lately I have been using node-based tools such as React and Git frequently, and if I keep those working directories inside a Resilio Sync folder, an enormous number of files get synced.&lt;br&gt;
In particular, I do not want the contents of node_modules produced by node builds, or the git management folder, to be synced, so - late in the day though it is - I began to wonder whether Resilio Sync has an exclusion setting.&lt;/p&gt;</description></item><item><title>Adding an HDD on Debian and Formatting It with xfs</title><link>https://scribble.washo3.com/en/debian-add-hdd/</link><pubDate>Thu, 20 Jul 2023 10:45:34 +0900</pubDate><guid>https://scribble.washo3.com/en/debian-add-hdd/</guid><description>&lt;p&gt;In Linux environments I often have occasion to add an HDD after the fact, so I am writing it down again.&lt;br&gt;
(About ten years ago I posted a similar article (&lt;a href="https://scribble.washo3.com/linux/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3fdisk%E3%81%A7hdd%E8%BF%BD%E5%8A%A0.html"&gt;adding an HDD with fdisk from the command line&lt;/a&gt;

 (in Japanese)))&lt;/p&gt;
&lt;h2 id="environment"&gt;Environment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The Linux used is Debian 12&lt;/li&gt;
&lt;li&gt;The format is xfs&lt;/li&gt;
&lt;li&gt;The HDD to be added is 4TB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I assume Linux (Debian) is already running and the HDD to be added is already installed&lt;/p&gt;</description></item><item><title>Fixing network.external.name is deprecated in Docker Compose</title><link>https://scribble.washo3.com/en/docker-net-external-name/</link><pubDate>Wed, 19 Jul 2023 15:01:32 +0900</pubDate><guid>https://scribble.washo3.com/en/docker-net-external-name/</guid><description>&lt;p&gt;When I rebuilt and started, for the first time in a while, a container that uses external in order to communicate between containers in different Docker environments, I ran into the error below&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;network default: network.external.name is deprecated. 
Please set network.name with external: true&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The docker-compose.yml I had been using until then worked with the following&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="l"&gt;…&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;networks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;default&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;external&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${NETWORK}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The compose version has gone up and the way it is written seems to have changed, and the format below is apparently the correct one&lt;/p&gt;</description></item><item><title>Upgrading Debian 11 bullseye to Debian 12 bookworm</title><link>https://scribble.washo3.com/en/debian11to12-upgrad/</link><pubDate>Tue, 18 Jul 2023 17:31:40 +0900</pubDate><guid>https://scribble.washo3.com/en/debian11to12-upgrad/</guid><description>&lt;p&gt;I have written about Debian upgrades several times, so this update is almost the same work as the previous &lt;a href="https://scribble.washo3.com/en/debian10to11-upgrade/"&gt;Upgrading Debian 10 to 11&lt;/a&gt;

.&lt;/p&gt;
&lt;p&gt;The only difference is a small change to sources.list when adding non-free.&lt;br&gt;
After &lt;code&gt;main&lt;/code&gt; in each repository stanza of /etc/apt/sources.list, add &lt;code&gt;non-free non-free-firmware&lt;/code&gt;.&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;#deb cdrom:[Debian GNU/Linux 12 _Bookworm_ - Official Snapshot amd64 LIVE/INSTALL Binary 20230610-08:51]/ bookworm main non-

deb http://ftp.riken.jp/Linux/debian/debian/ bookworm main non-free non-free-firmware
deb-src http://ftp.riken.jp/Linux/debian/debian/ bookworm main non-free non-free-firmware

deb http://security.debian.org/debian-security bookworm-security main non-free non-free-firmware
deb-src http://security.debian.org/debian-security bookworm-security main non-free non-free-firmware

# bookworm-updates, to get updates before a point release is made;
# see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports
deb http://ftp.riken.jp/Linux/debian/debian/ bookworm-updates main non-free non-free-firmware
deb-src http://ftp.riken.jp/Linux/debian/debian/ bookworm-updates main non-free non-free-firmware&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;As an aside, a direct jump from 10 to 12 failed in my case, so when upgrading from an older release it is safer to go in order (10→11→12).&lt;/p&gt;</description></item><item><title>Connecting to Samba Shared Folders from Windows 10 and 11</title><link>https://scribble.washo3.com/en/win-samba-trouble/</link><pubDate>Thu, 22 Jun 2023 14:30:21 +0900</pubDate><guid>https://scribble.washo3.com/en/win-samba-trouble/</guid><description>&lt;p&gt;At work I have been asked about not being able to connect to shared folders (Samba) since somewhere around Windows 10, and recently the questions from people who have updated to Windows 11 have increased as well.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s check the items below!&lt;/p&gt;
&lt;h2 id="enabling-the-smb10-client"&gt;Enabling the SMB1.0 client&lt;/h2&gt;
&lt;p&gt;On Windows 11 the &amp;ldquo;SMB1.0 client&amp;rdquo; is disabled in the default settings.&lt;/p&gt;
&lt;p&gt;The &amp;ldquo;SMB1.0 client&amp;rdquo; standard is old and vulnerabilities have been reported for it, so Microsoft disables the &amp;ldquo;SMB1.0 client&amp;rdquo; from a security point of view, and that accounts for most of the cases where the connection fails&lt;/p&gt;</description></item><item><title>Spinning Up a Samba Server for Testing with Docker</title><link>https://scribble.washo3.com/en/docker-samba/</link><pubDate>Tue, 09 May 2023 09:36:49 +0900</pubDate><guid>https://scribble.washo3.com/en/docker-samba/</guid><description>&lt;p&gt;At work there was a request to build a temporary Windows file sharing server on Linux and test against it.&lt;br&gt;
Since it was only temporary, I wanted to avoid dirtying the system by installing directly onto it, so I built it with Docker.&lt;/p&gt;
&lt;p&gt;That said, a Docker image already exists, so all I do is use it&lt;/p&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="ServerContainers/samba: samba - (ghcr.io/servercontainers/samba) (+ optional zeroconf, wsdd2 &amp; time machine) on alpine [x86 + arm]" src="https://hatenablog-parts.com/embed?url=https://github.com/ServerContainers/samba" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;p&gt;This repository looks comparatively recently updated and maintained&lt;/p&gt;</description></item><item><title>Connecting to Vagrant with the Plain SSH Command</title><link>https://scribble.washo3.com/en/ssh-vagrant/</link><pubDate>Fri, 28 Apr 2023 16:59:16 +0900</pubDate><guid>https://scribble.washo3.com/en/ssh-vagrant/</guid><description>&lt;p&gt;After the earlier &lt;a href="https://scribble.washo3.com/en/mojave-vagrant-issue/"&gt;Vagrant does not respond&lt;/a&gt;

, it would be a problem if the &lt;code&gt;vagrant ssh&lt;/code&gt; command became unusable, so — belatedly — I set up connecting over plain SSH.&lt;/p&gt;
&lt;p&gt;Connecting with plain ssh rather than using &lt;code&gt;vagrant ssh&lt;/code&gt; seems to be faster and more responsive&lt;/p&gt;
&lt;p&gt;In my own Vagranfile the connection is already bridged, and the default port is 2222&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;config.vm.network &amp;#34;public_network&amp;#34;, ip: &amp;#34;192.168.1.10&amp;#34;, bridge: &amp;#34;en0: Ethernet&amp;#34;&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;If you have not configured the network part, write it as follows&lt;/p&gt;</description></item><item><title>Fixing Vagrant When It Stops Responding on macOS Mojave</title><link>https://scribble.washo3.com/en/mojave-vagrant-issue/</link><pubDate>Fri, 28 Apr 2023 16:26:38 +0900</pubDate><guid>https://scribble.washo3.com/en/mojave-vagrant-issue/</guid><description>&lt;p&gt;I run vagrant on a Mac (Mojave), but recently I hit a situation where vagrant would not respond at all&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vagrant ssh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vagrant status
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vagrant info
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;No matter which command I type, there is no reaction whatsoever!?&lt;/p&gt;
&lt;p&gt;Thinking that vagrant might be broken, I ran &lt;code&gt;brew reinstall vagrant&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;After that the vagrant command came back, but this time I got the error below&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vagrant status
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Traceback &lt;span class="o"&gt;(&lt;/span&gt;most recent call last&lt;span class="o"&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	2: from /opt/vagrant/embedded/gems/2.3.4/gems/vagrant-2.3.4/bin/vagrant:111:in &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;main&amp;gt;&lt;span class="s1"&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;	1: from /opt/vagrant/embedded/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/opt/vagrant/embedded/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in &lt;span class="sb"&gt;`&lt;/span&gt;require&lt;span class="s1"&gt;&amp;#39;: cannot load such file -- vagrant (LoadError)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;	12: from /opt/vagrant/embedded/gems/2.3.4/gems/vagrant-2.3.4/bin/vagrant:111:in `&amp;lt;main&amp;gt;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	11: from /opt/vagrant/embedded/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:147:in &lt;span class="sb"&gt;`&lt;/span&gt;require&lt;span class="s1"&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;	10: from /opt/vagrant/embedded/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:158:in `rescue in require&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	 9: from /opt/vagrant/embedded/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:158:in &lt;span class="sb"&gt;`&lt;/span&gt;require&lt;span class="s1"&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;…
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;/opt/vagrant/embedded/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require&amp;#39;&lt;/span&gt;: cannot load such file -- google/protobuf_c &lt;span class="o"&gt;(&lt;/span&gt;LoadError&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;~/vagrant ❯ w&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;google/protobuf_c&lt;/code&gt;? Is this a ruby related error??&lt;/p&gt;</description></item><item><title>Fixing the Unresponsive Hamburger Menu in Hugo's Tranquilpeak Theme</title><link>https://scribble.washo3.com/en/tranquilpeak-hambergermenu-issue/</link><pubDate>Fri, 21 Apr 2023 09:39:50 +0900</pubDate><guid>https://scribble.washo3.com/en/tranquilpeak-hambergermenu-issue/</guid><description>&lt;p&gt;I suspect the symptom had been happening for a while, but I noticed that the hamburger menu displayed in responsive mode on the Hugo theme &amp;ldquo;Tranquilpeak&amp;rdquo; was not working, and I ended up spending almost a whole day tracking down and understanding the cause.&lt;/p&gt;
&lt;h2 id="the-symptom"&gt;The symptom&lt;/h2&gt;
&lt;p&gt;With this phenomenon, there was no problem as long as BaseURL was the top directory; it occurred when a subpath (subdirectory) was configured.&lt;br&gt;
Specifically,&lt;/p&gt;</description></item><item><title>Getting GA4 Working on Hugo with Beautifulhugo and Mainroad</title><link>https://scribble.washo3.com/en/hugo-analytics-ga4/</link><pubDate>Mon, 27 Mar 2023 10:46:37 +0900</pubDate><guid>https://scribble.washo3.com/en/hugo-analytics-ga4/</guid><description>&lt;h2 id="migrating-a-site-built-with-hugo-to-ga4"&gt;Migrating a site built with Hugo to GA4&lt;/h2&gt;
&lt;p&gt;In my environment I use the Beautifulhugo and Mainroad themes, so the customization here is limited to those&lt;br&gt;
Also, this assumes the GA4 code for Google Analytics has already been obtained, so I will skip the explanation of Google Analytics itself&lt;/p&gt;
&lt;h2 id="beautifulhugo"&gt;Beautifulhugo&lt;/h2&gt;
&lt;h3 id="copy-headhtml-into-the-root-folder-and-edit-it"&gt;Copy head.html into the root folder and edit it&lt;/h3&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-diff" data-lang="diff"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ pwd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/hugo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cp themes/beautifulhugo/layouts/partials/head.html layouts/partials/.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="headhtml-changed-lines-only"&gt;head.html (changed lines only)&lt;/h3&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-diff" data-lang="diff"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;- {{ template &amp;#34;_internal/google_analytics_async.html&amp;#34; . }}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ {{- partial &amp;#34;analytics&amp;#34; . -}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="create-layoutspartialsanalyticshtml-with-the-following-content"&gt;Create /layouts/partials/analytics.html with the following content&lt;/h3&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Site&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;IsServer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;with&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Site&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;GoogleAnalytics&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Global&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;site&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tag&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;gtag&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;js&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Google&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Analytics&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;async&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://www.googletagmanager.com/gtag/js?id={{ . }}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dataLayer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dataLayer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[];&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;function&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gtag&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;&lt;span class="nx"&gt;dataLayer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arguments&lt;/span&gt;&lt;span class="p"&gt;);}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gtag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="nx"&gt;js&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;gtag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="write-the-ga4-code-into-configtoml-changed-lines-only"&gt;Write the GA4 code into config.toml (changed lines only)&lt;/h3&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;googleAnalytics&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;G-XXXXXXXXXX&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="mainroad"&gt;Mainroad&lt;/h2&gt;
&lt;p&gt;In the mainroad theme at the time of writing, analytics is loaded in &lt;code&gt;layout/_default/baseof.html&lt;/code&gt;, and looking at the code below it seems as though GA4 is already supported&lt;/p&gt;</description></item><item><title>Building Zabbix 6 with Docker Compose</title><link>https://scribble.washo3.com/en/docker-zabbix6/</link><pubDate>Mon, 17 Oct 2022 15:29:51 +0900</pubDate><guid>https://scribble.washo3.com/en/docker-zabbix6/</guid><description>&lt;p&gt;The Zabbix server I keep running all the time was on the old version 4, and partly because of template-related issues it seems the data cannot be migrated to 6.x, so I built Zabbix 6.x from scratch with Docker.&lt;br&gt;
Maybe the data could be carried over by upgrading zabbix4 -&amp;gt; 5 &amp;ndash;&amp;gt; 6 one step at a time, but in my case I do not monitor that many servers, so building 6.x in one go and configuring the monitoring again seemed more efficient.&lt;/p&gt;</description></item><item><title>Installing Homebrew on Linux: Debian, Ubuntu, and RedHat</title><link>https://scribble.washo3.com/en/linux-homebrew/</link><pubDate>Mon, 17 Oct 2022 14:19:59 +0900</pubDate><guid>https://scribble.washo3.com/en/linux-homebrew/</guid><description>&lt;p&gt;Homebrew has become pretty much the standard on macOS, but these days you can install Homebrew on Linux too.&lt;br&gt;
On Debian and RedHat you can manage packages with apt or dnf (yum), but Homebrew makes it easier to install and update programs that are not in those packages and are not published as a repository.&lt;/p&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="Homebrew on Linux — Homebrew Documentation" src="https://hatenablog-parts.com/embed?url=https://docs.brew.sh/Homebrew-on-Linux" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;p&gt;For example, tools I use often such as Hugo, Docker&amp;rsquo;s docker-compose, and lazydocker have to be downloaded from the official site and swapped out every time there is an update, but this can now be simplified to something like &lt;code&gt;brew update hugo&lt;/code&gt;, just as on macOS.&lt;/p&gt;</description></item><item><title>Fixing Bloated Container Logs in /var/lib/docker/containers</title><link>https://scribble.washo3.com/en/docker-container-log/</link><pubDate>Mon, 17 Oct 2022 14:01:27 +0900</pubDate><guid>https://scribble.washo3.com/en/docker-container-log/</guid><description>&lt;p&gt;An LDAP server running on Docker had reached 100% disk usage, so I looked into it.&lt;br&gt;
This LDAP server is close to read-only, so the data should not grow that much, should it?&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# du -sh /var/lib/docker/* |sort -n&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1.2G	/var/lib/docker/overlay2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2.1M	/var/lib/docker/image
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4.0K	/var/lib/docker/runtimes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4.0K	/var/lib/docker/swarm
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4.0K	/var/lib/docker/tmp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4.0K	/var/lib/docker/trust
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4.4M	/var/lib/docker/volumes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;7.8G	/var/lib/docker/containers
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;20K	/var/lib/docker/builder
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;24K	/var/lib/docker/plugins
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;60K	/var/lib/docker/network
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;108K	/var/lib/docker/buildkit&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;/var/lib/docker/containers is clearly the one using a lot of space&lt;/p&gt;</description></item><item><title>When a Dell PowerEdge Refuses to Boot from a USB Drive</title><link>https://scribble.washo3.com/en/poweredge-cannot-usb-boot/</link><pubDate>Fri, 15 Jul 2022 10:54:18 +0900</pubDate><guid>https://scribble.washo3.com/en/poweredge-cannot-usb-boot/</guid><description>&lt;p&gt;I wanted to install Debian on a PowerEdge R410 that I no longer used, so I created a bootable USB disk, but even after setting USB as the highest boot priority in the BIOS it would not boot from the USB, and I spent several hours on it.&lt;/p&gt;
&lt;p&gt;When I looked for a solution on the internet, the article below was a perfect match&lt;/p&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="Dell PowerEdge 2950でのブータブルUSBフラッシュメモリの利用 - 発声練習" src="https://hatenablog-parts.com/embed?url=https://next49.hatenadiary.jp/entry/20191216/1576489822" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;h2 id="the-boot-solution"&gt;The boot solution&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;On the startup screen (while the Dell logo is showing), press &lt;code&gt;F2&lt;/code&gt; to open the BIOS setup screen.&lt;/li&gt;
&lt;li&gt;In the BIOS settings, change &lt;strong&gt;USB Flash Drive Emulation Type&lt;/strong&gt; from &lt;code&gt;AUTO&lt;/code&gt; to &lt;code&gt;Hard Disk&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Save the settings and leave the BIOS setup screen (it reboots)&lt;/li&gt;
&lt;li&gt;On the startup screen (while the Dell logo is showing), press &lt;code&gt;F11&lt;/code&gt; to open the boot media selection.&lt;/li&gt;
&lt;li&gt;In the boot media selection, the USB flash media appears under the &amp;ldquo;Hard Disk&amp;rdquo; entry, so choose to boot from the USB flash media.&lt;/li&gt;
&lt;li&gt;The installer boots from the USB without trouble.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="the-network-is-unusable"&gt;The network is unusable&lt;/h2&gt;
&lt;p&gt;The NIC is recognized, but it cannot connect to the network&lt;/p&gt;</description></item><item><title>Adding HTTP Security Headers to a Hugo Site on Netlify</title><link>https://scribble.washo3.com/en/hugo-security-headers/</link><pubDate>Mon, 04 Jul 2022 14:44:04 +0900</pubDate><guid>https://scribble.washo3.com/en/hugo-security-headers/</guid><description>&lt;p&gt;Three years are about to pass since this site moved to Hugo.&lt;/p&gt;
&lt;p&gt;I configured the HTTP security headers for the site, which had been left alone for a while.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;They are directives used by web applications to configure security measures in the web browser, and they are used to defend against things like cross-site scripting and clickjacking&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This article covers the configuration for the Hugo + Netlify environment that this site uses&lt;br&gt;
Also, I will leave out explanations of the configuration terminology&lt;/p&gt;</description></item><item><title>Moving /var/lib/docker to Another Partition with a Bind Mount</title><link>https://scribble.washo3.com/en/docker-dir-moved/</link><pubDate>Tue, 10 May 2022 13:36:13 +0900</pubDate><guid>https://scribble.washo3.com/en/docker-dir-moved/</guid><description>&lt;p&gt;The root partition (/) of the machine I run Docker on was getting tight, so I moved /var/lib/docker&lt;/p&gt;
&lt;p&gt;These days, when you install Linux without thinking about it, the automatic configuration often gives the root partition (/) something small such as 30GB.&lt;br&gt;
When you run Docker, /var/lib/docker grows and grows, so / ended up in a state close to full.&lt;br&gt;
So I moved it to /home, which is on a separate partition and has room to spare&lt;/p&gt;</description></item><item><title>Upgrading Growi from 4.5 to 5.0 on docker-compose</title><link>https://scribble.washo3.com/en/growi4.5to5.0/</link><pubDate>Tue, 10 May 2022 09:35:54 +0900</pubDate><guid>https://scribble.washo3.com/en/growi4.5to5.0/</guid><description>&lt;p&gt;I have written about upgrading Growi before, but this time it is a major upgrade from 4.x to 5.x.&lt;/p&gt;
&lt;p&gt;Assume that Growi is running on Docker with the configuration below&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;App&lt;/th&gt;
					&lt;th&gt;Version&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Growi&lt;/td&gt;
					&lt;td&gt;4.5.19&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;mongodb&lt;/td&gt;
					&lt;td&gt;4.4&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Note that if you are building it with docker for the first time, you can build it just as the official installation describes, so the work from here on is unnecessary&lt;/p&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="docker-compose | GROWI Docs" src="https://hatenablog-parts.com/embed?url=https://docs.growi.org/ja/admin-guide/getting-started/docker-compose.html#localhost-%E4%BB%A5%E5%A4%96%E3%81%8B%E3%82%89%E3%81%AE%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;h2 id="get-4x-up-to-the-latest-version-first"&gt;Get 4.x up to the latest version first&lt;/h2&gt;
&lt;p&gt;If you are running it on docker, I think it is better to update 4.x to the latest version as far as you can, based on the official upgrade information below.&lt;/p&gt;</description></item><item><title>Cannot Create Files or Directories in the Home Directory on Debian</title><link>https://scribble.washo3.com/en/myid-home-cannot-file/</link><pubDate>Wed, 30 Mar 2022 14:51:38 +0900</pubDate><guid>https://scribble.washo3.com/en/myid-home-cannot-file/</guid><description>&lt;p&gt;After logging in to a certain Linux (Debian) machine, I ran into a symptom where I could not create files or directories.&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;$ mkdir test
mkdir: ディレクトリ `test&amp;#39; を作成できません: 許可がありません
$ touch test
touch: &amp;#39;test&amp;#39; に touch できません: 許可がありません&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;I tried various things&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Logging in works normally&lt;/li&gt;
&lt;li&gt;Checked the UID and GID with the id command&lt;/li&gt;
&lt;li&gt;Checked the attributes of the home directory and its contents&lt;/li&gt;
&lt;li&gt;Tried changing the shell&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;None of them showed a problem, and when I looked at the error log, there was an error like the one below&lt;/p&gt;</description></item><item><title>No Matching Host Key Type Found After Upgrading to OpenSSH 8.8</title><link>https://scribble.washo3.com/en/openssh88-disable-rsa/</link><pubDate>Wed, 30 Mar 2022 14:19:56 +0900</pubDate><guid>https://scribble.washo3.com/en/openssh88-disable-rsa/</guid><description>&lt;p&gt;I updated openssh with Homebrew on my Mac, and after the version went up I could no longer connect, with the error below.&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;ERROR: Unable to negotiate with 192.168.1.10 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The error did not appear for every destination; the ones I could no longer reach were those running relatively old operating systems.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SSH that can connect&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;$ ssh -V
OpenSSH_8.4p1 Debian-5, OpenSSL 1.1.1k 25 Mar 2021&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;SSH that cannot connect&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;$ ssh -V
OpenSSH_8.9p1, OpenSSL 1.1.1n 15 Mar 2022&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Looking into it, the cause is that RSA keys with SHA-1 have been disabled since OpenSSH8.8&lt;/p&gt;</description></item><item><title>CentOS 7 Stuck at the dracut Emergency Prompt and Would Not Boot</title><link>https://scribble.washo3.com/en/centos7-cannot-boot/</link><pubDate>Tue, 22 Mar 2022 09:24:09 +0900</pubDate><guid>https://scribble.washo3.com/en/centos7-cannot-boot/</guid><description>&lt;p&gt;At some point, somewhere around when I updated the CentOS7 kernel, it stopped booting properly.&lt;/p&gt;
&lt;p&gt;When it boots, it gets stuck showing this screen and goes no further&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Wrning: /dev/centos_web/root does not exist
Warning: /dev/mapper/centos_web-root does not exist
 
Generating &amp;#34;/run/initramfs/sosreport.txt&amp;#34;
 
Entering emergency mode. Exit the shell to continue.
Type &amp;#34;journalctl&amp;#34; to view system logs.
You might want to save &amp;#34;/run/initramfs/sosreport.txt&amp;#34; to a USB stick or /boot
after mounting them and attach it to a bug report.
 
dracut:/#&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;I figured that something grub-related had probably broken or been misconfigured when the kernel was updated, so I googled it&lt;/p&gt;</description></item><item><title>Esc Stopped Working in Vim</title><link>https://scribble.washo3.com/en/vim-esc-not-working/</link><pubDate>Tue, 22 Mar 2022 08:49:13 +0900</pubDate><guid>https://scribble.washo3.com/en/vim-esc-not-working/</guid><description>&lt;figure&gt;
 &lt;a href="https://i.imgur.com/vGX6wEY.webp" target="_blank" rel="noopener"&gt;
 &lt;picture&gt;
 &lt;source
 type="image/webp"
 sizes="(max-width: 320px) 320px, (max-width: 640px) 640px, 640px"
 srcset="
 https://i.imgur.com/vGX6wEYh.webp 1024w,
 https://i.imgur.com/vGX6wEYl.webp 640w,
 https://i.imgur.com/vGX6wEYm.webp 320w
 "
 /&gt;
 &lt;img
 src="https://i.imgur.com/vGX6wEY.webp"
 loading="lazy"
 decoding="async"
 style="min-height: 480px"
 onload="this.style.minHeight = 'auto'"
 
 alt=""
 
 /&gt;
 &lt;/picture&gt;
 &lt;/a&gt;
 
&lt;/figure&gt;

&lt;p&gt;I first hit a case where the Esc key did nothing while editing with Vim in the web console of a guest OS on ESXi.&lt;/p&gt;
&lt;p&gt;I could not leave insert mode, and of course the other keybindings did not work either.&lt;br&gt;
I looked around the web in case others had seen the same thing.&lt;/p&gt;</description></item><item><title>Restricting Access with nginx-proxy: Basic Auth and IP Allowlists</title><link>https://scribble.washo3.com/en/nginxproxy-limit/</link><pubDate>Tue, 15 Mar 2022 08:42:49 +0900</pubDate><guid>https://scribble.washo3.com/en/nginxproxy-limit/</guid><description>&lt;p&gt;This article is a note on access restriction using Docker&amp;rsquo;s jwilder/nginx-proxy.&lt;br&gt;
Incidentally, this is information that is also written in the official documentation&lt;/p&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="jwilder/nginx-proxy - Docker Image | Docker Hub" src="https://hatenablog-parts.com/embed?url=https://hub.docker.com/r/jwilder/nginx-proxy" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt; 
&lt;h2 id="basic-authentication"&gt;Basic authentication&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Create a .htpasswd folder inside the nginx-proxy folder&lt;/li&gt;
&lt;li&gt;Create a file named after the domain, in htpasswd format, under the .htpasswd folder&lt;/li&gt;
&lt;li&gt;Set .hpasswd as a volume in docker-compose.yml&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="htpasswd"&gt;.htpasswd&lt;/h3&gt;
&lt;p&gt;In the .htpasswd folder, create a file in htpasswd format named after the custom domain you want to protect with basic authentication&lt;/p&gt;</description></item><item><title>Setting Up RSS-Bridge with Docker Compose</title><link>https://scribble.washo3.com/en/docker-rssbridge/</link><pubDate>Mon, 14 Mar 2022 13:43:38 +0900</pubDate><guid>https://scribble.washo3.com/en/docker-rssbridge/</guid><description>&lt;p&gt;It supports many social networks such as Facebook and Instagram, and acts as a hub-like fetching server that turns their updates into RSS.&lt;/p&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="RSS-Bridge/rss-bridge: The RSS feed for websites missing it" src="https://hatenablog-parts.com/embed?url=https://github.com/RSS-Bridge/rss-bridge" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt; 
&lt;p&gt;If setting up a server sounds like too much trouble, or you just want to try it out, you might use one of the instances that anyone can access&lt;/p&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="Public hosts · RSS-Bridge/rss-bridge Wiki" src="https://hatenablog-parts.com/embed?url=https://github.com/RSS-Bridge/rss-bridge/wiki/Public-hosts" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt; 
&lt;h2 id="rss-bridge-on-docker"&gt;RSS-Bridge on Docker&lt;/h2&gt;
&lt;p&gt;I am building it with docker this time as well
&lt;script src="https://gist.github.com/washo/b2f15f79ad032564001b6e948bafce7c.js"&gt;&lt;/script&gt;
&lt;/p&gt;</description></item><item><title>Switching My RSS Aggregator from ttrss to FreshRSS on Docker</title><link>https://scribble.washo3.com/en/docker-freshrss/</link><pubDate>Tue, 08 Mar 2022 14:23:11 +0900</pubDate><guid>https://scribble.washo3.com/en/docker-freshrss/</guid><description>&lt;p&gt;For about three years I had been running tinytinyRSS, or ttrss, on Docker.&lt;br&gt;
There is still nothing wrong with it, but when updating it with docker-compose I also have to take dependencies such as mercury and opencc into account, and at this point FreshRSS has a simpler configuration and a good reputation, and FreeRSS came to be supported in Reeder5, the Mac app, as well, so I changed my RSS aggregator.&lt;/p&gt;</description></item><item><title>Self-hosting Nitter, a Twitter Web Client, with Docker</title><link>https://scribble.washo3.com/en/docker-nitter/</link><pubDate>Fri, 04 Mar 2022 14:26:13 +0900</pubDate><guid>https://scribble.washo3.com/en/docker-nitter/</guid><description>&lt;div class="alert alert-danger" role="alert"&gt;
 &lt;h4 class="alert-heading"&gt;Restrictions imposed by Twitter&lt;/h4&gt;
 &lt;p&gt;2023/6/30 Because of Twitter's API restrictions and the restriction on viewing without logging in, fetching Twitter posts and so on through nitter is no longer possible&lt;/p&gt;
 &lt;hr&gt;
 &lt;p class="mb-0"&gt;Building Nitter with Docker as described below is still possible, but it is of no use unless the restrictions on the Twitter side are lifted&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Nitter is a Web client for Twitter, and&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;you can view it without having a Twitter account&lt;/li&gt;
&lt;li&gt;you can view it without logging in to Twitter&lt;/li&gt;
&lt;li&gt;no ads are inserted&lt;/li&gt;
&lt;li&gt;you can turn the timeline of a user or keyword you are interested in into RSS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This time I build it myself with Docker, but Nitter has an official site and instances, and using those is fine, so there is no need to force yourself to build it&lt;/p&gt;</description></item><item><title>Testing SMTP Sending with Postfix and MailHog on Docker</title><link>https://scribble.washo3.com/en/docker-postfix-mailhog/</link><pubDate>Fri, 04 Mar 2022 14:02:56 +0900</pubDate><guid>https://scribble.washo3.com/en/docker-postfix-mailhog/</guid><description>&lt;p&gt;I had a situation where I wanted to send SMTP from inside a Docker container, so I gave it a try using mailhog.&lt;/p&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="PostfixでメールリレーしてMailHogで受信する開発用Dockerコンテナの構築 | 404 motivation not found" src="https://hatenablog-parts.com/embed?url=https://tech-blog.s-yoshiki.com/entry/239" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt; 
&lt;p&gt;I based this almost entirely on the article above (in Japanese)&lt;/p&gt;
&lt;h2 id="what-i-changed"&gt;What I changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Changed the Dockerfile image to &lt;code&gt;almalinux&lt;/code&gt;&lt;br&gt;
Because centos8 is past EOL and an error came up when fetching packages&lt;/li&gt;
&lt;li&gt;Added &lt;code&gt;privileged: true&lt;/code&gt; to docker-compose.yml&lt;br&gt;
It did start with cap-add as well, but errors were being emitted&lt;/li&gt;
&lt;/ul&gt;
&lt;script src="https://gist.github.com/washo/baef44c944feaa3c8891717a9d32f98e.js"&gt;&lt;/script&gt;

&lt;h2 id="send-test"&gt;Send test&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Once it has finished starting up, check inside the Docker container whether postfix can send on port 25.&lt;/li&gt;
&lt;li&gt;Since relayhost uses mailhog&amp;rsquo;s port 1025, it is not actually sent to the real destination, so there is nothing to worry about&lt;/li&gt;
&lt;li&gt;On the host side you can send on port 1025 as is&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# telnet localhost 25&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Trying 127.0.0.1...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Connected to localhost.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Escape character is &lt;span class="s1"&gt;&amp;#39;^]&amp;#39;&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;220&lt;/span&gt; 0d95f56f386c.example.com ESMTP Postfix
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mail from: &amp;lt;user@example.com&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;250&lt;/span&gt; 2.1.0 Ok
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rcpt to: &amp;lt;test@foo.com&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;250&lt;/span&gt; 2.1.5 Ok
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;data
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;354&lt;/span&gt; End data with &amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;.&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;subject: mail testing
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;it is testing
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;250&lt;/span&gt; 2.0.0 Ok: queued as 367DF26008A&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Leave the Docker container, access &lt;code&gt;http://localhost:8025&lt;/code&gt; in a browser on the host side, and if the mail has arrived you are done&lt;/p&gt;</description></item><item><title>Trying MinIO, an Amazon S3 Compatible Object Storage, on Docker</title><link>https://scribble.washo3.com/en/docker-minio/</link><pubDate>Fri, 04 Mar 2022 13:12:45 +0900</pubDate><guid>https://scribble.washo3.com/en/docker-minio/</guid><description>&lt;p&gt;minio is an Amazon S3 compatible object storage&lt;/p&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="MinIO | High Performance, Kubernetes Native Object Storage" src="https://hatenablog-parts.com/embed?url=https://min.io/" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt; 
&lt;p&gt;It is provided for platforms such as Mac/Windows/Linux as well, but Docker is handy when you just want to try it out a little, so I will build it with docker-compose&lt;/p&gt;
&lt;script src="https://gist.github.com/washo/9572b57208ed1240448e244c3f47b6f6.js"&gt;&lt;/script&gt;

&lt;p&gt;Once you have started it with &lt;code&gt;docker-compose up -d&lt;/code&gt;,&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Connect to &lt;code&gt;http://localhost:9000&lt;/code&gt; in a browser&lt;/li&gt;
&lt;li&gt;Log in with admin/password&lt;/li&gt;
&lt;li&gt;Create a bucket with &lt;code&gt;Create Bucket&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Upload files and folders&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The interface is exactly the same as Amazon S3, so AWS-CLI can be used too, but in order to connect to minio you need to specify &lt;code&gt;--endpoint-url &lt;/code&gt;.&lt;br&gt;
Amazon S3 is charged by usage, so if you self-host minio you can use it for free.&lt;/p&gt;</description></item><item><title>Extracting IP Addresses from a Log File with grep and sort</title><link>https://scribble.washo3.com/en/find-ip-use-grep/</link><pubDate>Thu, 10 Feb 2022 10:50:49 +0900</pubDate><guid>https://scribble.washo3.com/en/find-ip-use-grep/</guid><description>&lt;p&gt;Log files come in all kinds of formats, so you will not necessarily get the same result; treat this as a rough reference only.&lt;br&gt;
This time I extract the IP addresses of my own subnet from a dnsmasq log file&lt;/p&gt;
&lt;h2 id="the-dnsmasq-log"&gt;The dnsmasq log&lt;/h2&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Jan &lt;span class="m"&gt;25&lt;/span&gt; 05:45:04 dnsmasq&lt;span class="o"&gt;[&lt;/span&gt;1&lt;span class="o"&gt;]&lt;/span&gt;: query&lt;span class="o"&gt;[&lt;/span&gt;A&lt;span class="o"&gt;]&lt;/span&gt; firestore.googleapis.com from 192.168.1.43
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Jan &lt;span class="m"&gt;25&lt;/span&gt; 05:45:04 dnsmasq&lt;span class="o"&gt;[&lt;/span&gt;1&lt;span class="o"&gt;]&lt;/span&gt;: cached firestore.googleapis.com is 142.250.196.106
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Jan &lt;span class="m"&gt;25&lt;/span&gt; 05:45:04 dnsmasq&lt;span class="o"&gt;[&lt;/span&gt;1&lt;span class="o"&gt;]&lt;/span&gt;: query&lt;span class="o"&gt;[&lt;/span&gt;AAAA&lt;span class="o"&gt;]&lt;/span&gt; firestore.googleapis.com from 192.168.1.43
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Jan &lt;span class="m"&gt;25&lt;/span&gt; 05:45:04 dnsmasq&lt;span class="o"&gt;[&lt;/span&gt;1&lt;span class="o"&gt;]&lt;/span&gt;: cached firestore.googleapis.com is 2404:6800:4004:827::200a
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Jan &lt;span class="m"&gt;25&lt;/span&gt; 05:45:04 dnsmasq&lt;span class="o"&gt;[&lt;/span&gt;1&lt;span class="o"&gt;]&lt;/span&gt;: reply easylist-downloads.adblockplus.org is 65.21.35.75
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Jan &lt;span class="m"&gt;25&lt;/span&gt; 05:45:04 dnsmasq&lt;span class="o"&gt;[&lt;/span&gt;1&lt;span class="o"&gt;]&lt;/span&gt;: reply easylist-downloads.adblockplus.org is 136.243.9.187
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Jan &lt;span class="m"&gt;25&lt;/span&gt; 05:45:04 dnsmasq&lt;span class="o"&gt;[&lt;/span&gt;1&lt;span class="o"&gt;]&lt;/span&gt;: reply easylist-downloads.adblockplus.org is 141.95.40.123
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Jan &lt;span class="m"&gt;25&lt;/span&gt; 05:45:04 dnsmasq&lt;span class="o"&gt;[&lt;/span&gt;1&lt;span class="o"&gt;]&lt;/span&gt;: reply easylist-downloads.adblockplus.org is 51.255.232.90
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Jan &lt;span class="m"&gt;25&lt;/span&gt; 05:45:04 dnsmasq&lt;span class="o"&gt;[&lt;/span&gt;1&lt;span class="o"&gt;]&lt;/span&gt;: reply easylist-downloads.adblockplus.org is 95.216.77.130
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Jan &lt;span class="m"&gt;25&lt;/span&gt; 05:45:04 dnsmasq&lt;span class="o"&gt;[&lt;/span&gt;1&lt;span class="o"&gt;]&lt;/span&gt;: reply easylist-downloads.adblockplus.org is 95.217.32.92
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Jan &lt;span class="m"&gt;25&lt;/span&gt; 05:45:05 dnsmasq&lt;span class="o"&gt;[&lt;/span&gt;1&lt;span class="o"&gt;]&lt;/span&gt;: query&lt;span class="o"&gt;[&lt;/span&gt;A&lt;span class="o"&gt;]&lt;/span&gt; firestore.googleapis.com from 192.168.1.43
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Jan &lt;span class="m"&gt;25&lt;/span&gt; 05:45:05 dnsmasq&lt;span class="o"&gt;[&lt;/span&gt;1&lt;span class="o"&gt;]&lt;/span&gt;: cached firestore.googleapis.com is 142.250.196.106
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Jan &lt;span class="m"&gt;25&lt;/span&gt; 05:45:05 dnsmasq&lt;span class="o"&gt;[&lt;/span&gt;1&lt;span class="o"&gt;]&lt;/span&gt;: query&lt;span class="o"&gt;[&lt;/span&gt;AAAA&lt;span class="o"&gt;]&lt;/span&gt; firestore.googleapis.com from 192.168.1.43
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="extracting-only-the-ip-addresses"&gt;Extracting only the IP addresses&lt;/h2&gt;
&lt;p&gt;From all of this, extract only the IP addresses in the form 192.168.1.*&lt;/p&gt;</description></item><item><title>Key Repeat Does Not Work on Mac</title><link>https://scribble.washo3.com/en/mac-keyrepeat/</link><pubDate>Thu, 10 Feb 2022 09:58:43 +0900</pubDate><guid>https://scribble.washo3.com/en/mac-keyrepeat/</guid><description>&lt;p&gt;A note on fixing key repeat (holding a key) when it does not work with a U.S. keyboard on a Mac.&lt;/p&gt;
&lt;h2 id="environment"&gt;Environment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;MacBook Pro (M1)&lt;/li&gt;
&lt;li&gt;macOS Monterey&lt;/li&gt;
&lt;li&gt;KeyChron K2&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="symptoms"&gt;Symptoms&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Key repeat works fine in iTerm and Terminal&lt;/li&gt;
&lt;li&gt;hjkl key repeat also works in Vim&lt;/li&gt;
&lt;li&gt;Arrow-key repeat works&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font color=red&gt;In Growi&amp;rsquo;s Vim editor and in web form fields, key repeat does not work and a candidate list appears instead&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;

&lt;img decoding="async" src="https://i.imgur.com/A6mHFsx.png" alt="" /&gt;

&lt;/p&gt;</description></item><item><title>Rebuilding My Zsh and Neovim Setup from Scratch in 2022</title><link>https://scribble.washo3.com/en/zsh-neovim-2022/</link><pubDate>Wed, 19 Jan 2022 13:32:39 +0900</pubDate><guid>https://scribble.washo3.com/en/zsh-neovim-2022/</guid><description>&lt;p&gt;I have been a fan of the Zsh shell on Linux and elsewhere for a long time, and lately I have even flirted with fish, but I took another look at my configuration files for the first time in ages.&lt;br&gt;
I had been managing my shared configuration files (dotfiles) on GitHub, and to my surprise the last update turned out to be about 10 years ago. (@_@)&lt;/p&gt;
&lt;p&gt;The configuration files were quite old too, and various helper tools and plugins have changed, so I reviewed everything from scratch.&lt;/p&gt;</description></item><item><title>Running the Open Source IT Asset Manager Snipe-IT on Docker</title><link>https://scribble.washo3.com/en/snipeit-docker/</link><pubDate>Tue, 18 Jan 2022 09:46:16 +0900</pubDate><guid>https://scribble.washo3.com/en/snipeit-docker/</guid><description>&lt;p&gt;I wanted to manage software licences as well as the appliances and assets in my home, so I looked around for a good open source option, found the IT asset management system Snipe-IT, and set it up right away.&lt;/p&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="Home - Snipe-IT Free open source IT asset management" src="https://hatenablog-parts.com/embed?url=https://snipeitapp.com/" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;p&gt;This is how to install it with Docker&lt;/p&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="Docker" src="https://hatenablog-parts.com/embed?url=https://snipe-it.readme.io/docs/docker" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;h2 id="installation-and-configuration"&gt;Installation and configuration&lt;/h2&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git clone https://github.com/snipe/snipe-it.git&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Edit .env.docker&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-diff" data-lang="diff"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; APP_DEBUG=false
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # please regenerate the APP_KEY value by calling `docker-compose run --rm snipeit bash` and then `php artisan key:generate --show` and then copy paste the value here
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; APP_KEY=base64:3ilviXqB9u6DX1NRcyWGJ+sjySF+H18CPDGb3+IVwMQ=
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; APP_URL=http://localhost:8000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;-APP_TIMEZONE=&amp;#39;UTC&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;-APP_LOCALE=en
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+APP_TIMEZONE=&amp;#39;Asia/Tokyo&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+APP_LOCALE=ja
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Port 8000 is used by default, so if you want to change it, change ports in docker-compose.yml&lt;/p&gt;</description></item><item><title>Upgrading Debian 10 buster to Debian 11 bullseye</title><link>https://scribble.washo3.com/en/debian10to11-upgrade/</link><pubDate>Mon, 17 Jan 2022 17:31:40 +0900</pubDate><guid>https://scribble.washo3.com/en/debian10to11-upgrade/</guid><description>&lt;p&gt;I have written about Debian upgrades several times, but the update procedure differs subtly from version to version, so it ends up being a separate article every time.&lt;br&gt;
This time it is the update procedure from Debian10 (buster) to 11 (bullseye).&lt;/p&gt;
&lt;h2 id="checking"&gt;Checking&lt;/h2&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cat /etc/debian_version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;10.11&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="updating-packages"&gt;Updating packages&lt;/h2&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo apt upgrade
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo apt dist-upgrade
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo apt autoremove&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="updating-the-source-list-from-buster-to-bullseye"&gt;Updating the source list (from buster to bullseye)&lt;/h2&gt;
&lt;p&gt;There are changes, so be careful: it will not go well if you only change sources.list from &lt;code&gt;buster&lt;/code&gt; to &lt;code&gt;bullseye&lt;/code&gt; the way you used to.&lt;/p&gt;</description></item><item><title>Installing Zsh 5.9 from Source on CentOS 7 and 8</title><link>https://scribble.washo3.com/en/centos-zsh58/</link><pubDate>Mon, 17 Jan 2022 15:19:25 +0900</pubDate><guid>https://scribble.washo3.com/en/centos-zsh58/</guid><description>&lt;div class="alert alert-info" role="alert"&gt;zsh5.9 is the latest right now, so I have updated this article&lt;/div&gt;
&lt;p&gt;The zsh on CentOS7/8 is old, so I installed the latest version at this point, 5.9, by hand&lt;/p&gt;
&lt;h2 id="preparation"&gt;Preparation&lt;/h2&gt;
&lt;p&gt;Since we use commands such as wget and make, install the developer tools first&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;LANG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;C
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo yum groupinstall &lt;span class="s2"&gt;&amp;#34;Development Tools&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo yum install ncurses-devel&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="downloading-and-installing"&gt;Downloading and installing&lt;/h2&gt;
&lt;p&gt;/usr/bin/zsh and /bin/zsh already exist, so install into /usr/local&lt;/p&gt;</description></item><item><title>Overriding the LDAP Login Shell on Debian and CentOS Clients</title><link>https://scribble.washo3.com/en/ldap-override-shell/</link><pubDate>Mon, 17 Jan 2022 15:07:30 +0900</pubDate><guid>https://scribble.washo3.com/en/ldap-override-shell/</guid><description>&lt;p&gt;There are cases where, on a particular LDAP client machine, you want to use a different shell rather than the one defined on the LDAP server (bash)&lt;/p&gt;
&lt;p&gt;This is possible by configuring the Linux (Debian/CentOS) client to override the shell&lt;/p&gt;
&lt;h2 id="debian11bullseye"&gt;Debian11(bullseye)&lt;/h2&gt;
&lt;p&gt;Add the following to /etc/libnss-ldap.conf&lt;br&gt;
(look up the path to the shell beforehand)&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nss_override_attribute_value loginShell /usr/bin/zsh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Flush the nscd cache&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# nscd -i passwd nscd&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="centos8"&gt;CentOS8&lt;/h2&gt;
&lt;p&gt;Add the following to /etc/nslcd.conf&lt;/p&gt;</description></item><item><title>Getting Started with Datadog and Moving Off a Zabbix Server</title><link>https://scribble.washo3.com/en/datadog-startup/</link><pubDate>Tue, 21 Dec 2021 13:42:52 +0900</pubDate><guid>https://scribble.washo3.com/en/datadog-startup/</guid><description>&lt;p&gt;It is what you would call a SaaS style operations monitoring service&lt;/p&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="Datadogとは？　見て分かる導入 オンプレ サーバー編 | ネットワンシステムズ" src="https://hatenablog-parts.com/embed?url=https://www.netone.co.jp/knowledge-center/netone-blog/20210716-1/" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;p&gt;I now have an environment where I can use Datadog, so I am thinking of migrating from my Zabbix server.&lt;/p&gt;
&lt;p&gt;Since it is just the Zabbix server being replaced by Datadog&amp;rsquo;s service and zabbix-agent being replaced by datadog-agent, anyone who uses Zabbix should be able to grasp how it works.&lt;/p&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="クラウド時代のサーバー監視&amp;分析サービス | Datadog" src="https://hatenablog-parts.com/embed?url=https://www.datadoghq.com/ja/" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;
Once you register an account on the Datagog side so that you can use it, install Datadog-agent on the machines of each platform and start it, you will be able to view beautiful visualized graphs in no time at all. 
&lt;p&gt;As for installing datadog-agent, various platforms are provided, but most people probably run it on CentOS or Debian Linux.&lt;br&gt;
Installation is easy too, with what is pretty much a one-liner command&lt;/p&gt;</description></item><item><title>Converting a docker run Command into docker-compose Format</title><link>https://scribble.washo3.com/en/composerize/</link><pubDate>Mon, 20 Dec 2021 22:24:31 +0900</pubDate><guid>https://scribble.washo3.com/en/composerize/</guid><description>&lt;p&gt;When you use &lt;a href="https://hub.docker.com" target="_blank" rel="noopener"&gt;DockerHub&lt;/a&gt;

, you see instructions written in the style of &amp;ldquo;run &lt;code&gt;docker run …&lt;/code&gt; to start it&amp;rdquo;, don&amp;rsquo;t you.&lt;/p&gt;
&lt;p&gt;And then there are many occasions where you want to fold that &lt;code&gt;docker run …&lt;/code&gt; into docker-compose.&lt;/p&gt;
&lt;p&gt;If you are used to YAML or TOML in the docker-compose format, you can simply write the version, put down the service name and then fill in the contents of the service, but lining up the indentation and so on really is a hassle.&lt;/p&gt;</description></item><item><title>Hardening a Docker Mail Server on Sakura VPS</title><link>https://scribble.washo3.com/en/docker-mailserver-security/</link><pubDate>Mon, 30 Aug 2021 15:56:38 +0900</pubDate><guid>https://scribble.washo3.com/en/docker-mailserver-security/</guid><description>&lt;p&gt;This is a follow-up to &lt;a href="https://scribble.washo3.com/en/docker-mailserver/"&gt;Building a mail server with Sakura VPS + Docker + Freenom&lt;/a&gt;

, in which I tighten up the security a little&lt;/p&gt;
&lt;p&gt;If the server from last time is running under docker, stop it&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;$ docker-compose down&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="closing-imap-and-submission"&gt;Closing imap and submission&lt;/h2&gt;
&lt;p&gt;In the previous article I confirmed that imaps and smtps communication works, so I close imap and submission&lt;/p&gt;
&lt;p&gt;docker-compose.yml (only the changed parts are shown)&lt;/p&gt;</description></item><item><title>Building a Docker Mail Server on a Sakura VPS with a Freenom Domain</title><link>https://scribble.washo3.com/en/docker-mailserver/</link><pubDate>Mon, 30 Aug 2021 13:33:13 +0900</pubDate><guid>https://scribble.washo3.com/en/docker-mailserver/</guid><description>&lt;h2 id="tldr"&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;I tried building a mail server with Docker on a Sakura VPS&lt;br&gt;
I will skip registering a domain on Freenom and how to use Cloudflare&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Linux(Debian10)&lt;/li&gt;
&lt;li&gt;Docker is assumed to be already installed&lt;/li&gt;
&lt;li&gt;A domain name has been obtained from Freenom and registered in a DNS such as Cloudflare&lt;br&gt;
Freenom : example.com (fictitious name)&lt;/li&gt;
&lt;li&gt;Sakura VPS: 11.22.33.44 (fictitious IP)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For this server build I referred to the sites below&lt;/p&gt;</description></item><item><title>Updating the Hugo Tranquilpeak Theme from 0.4 to 0.5</title><link>https://scribble.washo3.com/en/tranquilpeak-05b-update/</link><pubDate>Tue, 17 Aug 2021 15:09:04 +0900</pubDate><guid>https://scribble.washo3.com/en/tranquilpeak-05b-update/</guid><description>&lt;p&gt;I updated the Hugo Tranquilpeak theme on a site I run elsewhere from 0.4.x to 0.5.x&lt;br&gt;
From 0.5BETA onwards a number of fixes were required, so here are my notes&lt;/p&gt;
&lt;h2 id="the-current-tranquilpeak"&gt;The current Tranquilpeak&lt;/h2&gt;
&lt;p&gt;The theme is managed as a submodule, and I was using 0.4.x&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;pwd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;~/hugo/tranquilpeak
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git submodule status
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; e1d2c5d5cb1efb687ed698782f99df576e7db084 themes/tranquilpeak &lt;span class="o"&gt;(&lt;/span&gt;0.4.8-BETA&lt;span class="o"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="updating-to-05-beta"&gt;Updating to 0.5-BETA&lt;/h2&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git submodule update --remote
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;remote: Enumerating objects: 496, &lt;span class="k"&gt;done&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;remote: Counting objects: 100% &lt;span class="o"&gt;(&lt;/span&gt;493/493&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="k"&gt;done&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;remote: Compressing objects: 100% &lt;span class="o"&gt;(&lt;/span&gt;164/164&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="k"&gt;done&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;remote: Total &lt;span class="m"&gt;496&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;delta 308&lt;span class="o"&gt;)&lt;/span&gt;, reused &lt;span class="m"&gt;472&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;delta 296&lt;span class="o"&gt;)&lt;/span&gt;, pack-reused &lt;span class="m"&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Receiving objects: 100% &lt;span class="o"&gt;(&lt;/span&gt;496/496&lt;span class="o"&gt;)&lt;/span&gt;, 214.68 KiB &lt;span class="p"&gt;|&lt;/span&gt; 7.95 MiB/s, &lt;span class="k"&gt;done&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Resolving deltas: 100% &lt;span class="o"&gt;(&lt;/span&gt;308/308&lt;span class="o"&gt;)&lt;/span&gt;, completed with &lt;span class="m"&gt;90&lt;/span&gt; &lt;span class="nb"&gt;local&lt;/span&gt; objects.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;From https://github.com/kakawait/hugo-tranquilpeak-theme
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; e1d2c5d..37550aa master -&amp;gt; origin/master
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; + 4243bcf...8223447 develop -&amp;gt; origin/develop &lt;span class="o"&gt;(&lt;/span&gt;forced update&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; * &lt;span class="o"&gt;[&lt;/span&gt;new branch&lt;span class="o"&gt;]&lt;/span&gt; fix-fancybox-3-data-model -&amp;gt; origin/fix-fancybox-3-data-model
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; a065336..902f360 gh-pages -&amp;gt; origin/gh-pages
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; * &lt;span class="o"&gt;[&lt;/span&gt;new tag&lt;span class="o"&gt;]&lt;/span&gt; 0.5.0-BETA -&amp;gt; 0.5.0-BETA
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Submodule path &lt;span class="s1"&gt;&amp;#39;themes/tranquilpeak&amp;#39;&lt;/span&gt;: checked out &lt;span class="s1"&gt;&amp;#39;37550aa165eec033e34f2e0f89cb0720d72a4c34&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="changes-and-key-points"&gt;Changes and key points&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;To show posts on the front page, mainSection has to be specified explicitly&lt;br&gt;
(I was showing the list of posts on the front page, so nothing appeared unless mainSection was filled in)&lt;/li&gt;
&lt;li&gt;highlight, jQery, prism and font-awesome have each been upgraded, so entries that load the CDN URLs via &lt;code&gt;[[params.customJS]]&lt;/code&gt; are needed&lt;/li&gt;
&lt;li&gt;The notation changed because font-awesome went from 4 to 5 (v5 notation)&lt;/li&gt;
&lt;li&gt;A timezone parameter was added in hugo0.87, so I added &lt;code&gt;timezone = &amp;quot;Asia/Tokyo&amp;quot;&lt;/code&gt;&lt;br&gt;
(it is not mandatory, and you need to have updated hugo to 0.87 or later)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="fixing-configtoml"&gt;Fixing config.toml&lt;/h2&gt;
&lt;p&gt;The quickest way is to copy the config.toml inside themes/tranquilpeak/exampleSite and change only the parts you need&lt;/p&gt;</description></item><item><title>Upgrading Growi from 4.2 or Earlier to 4.3 with MongoDB 4.4</title><link>https://scribble.washo3.com/en/growi4.2to4.3up/</link><pubDate>Tue, 27 Jul 2021 09:31:14 +0900</pubDate><guid>https://scribble.washo3.com/en/growi4.2to4.3up/</guid><description>&lt;h2 id="trdr"&gt;TR;DR&lt;/h2&gt;
&lt;p&gt;Assume that Growi is running on docker with the configuration below&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;App&lt;/th&gt;
					&lt;th&gt;Version&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Growi&lt;/td&gt;
					&lt;td&gt;4.2.21&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;mongodb&lt;/td&gt;
					&lt;td&gt;3.6&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;There are major changes from Growi 4.3 onwards, so when you upgrade from 4.2 or earlier to 4.3, look through the official articles first&lt;br&gt;
And be sure to take a backup before starting the work!&lt;/p&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="GROWI v4.3.x へのアップグレード | GROWI Docs" src="https://hatenablog-parts.com/embed?url=https://docs.growi.org/ja/admin-guide/upgrading/43x.html#%E3%83%93%E3%83%AB%E3%83%89%E6%89%8B%E9%A0%86%E3%81%AE%E5%A4%89%E6%9B%B4" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="MongoDB のアップグレード | GROWI Docs" src="https://hatenablog-parts.com/embed?url=https://docs.growi.org/ja/admin-guide/admin-cookbook/upgrade-mongodb.html#mongodb-v3-4-%E3%81%8B%E3%82%89-v3-6-%E3%81%B8%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;h2 id="updating-mongodb"&gt;Updating mongodb&lt;/h2&gt;
&lt;p&gt;Up to Growi 4.2.x it could also run on mongodb 3.x, but 4.3 requires mongodb 4.4, so mongodb has to be updated&lt;br&gt;
I did the work of updating mongodb in the order 3.6-&amp;gt;4.0-&amp;gt;4.2-&amp;gt;4.4&lt;/p&gt;</description></item><item><title>When a Home Server Returns 403 Forbidden from Outside</title><link>https://scribble.washo3.com/en/nginx-proxy-forbidden/</link><pubDate>Fri, 16 Jul 2021 13:53:21 +0900</pubDate><guid>https://scribble.washo3.com/en/nginx-proxy-forbidden/</guid><description>&lt;p&gt;On my home server I run several nginx-proxy Docker containers, and I also make them accessible from outside on my own domain.&lt;br&gt;
Of course, on the fiber router facing the WAN I have ports 80 and 443 open, and connectivity from outside is confirmed.&lt;/p&gt;
&lt;p&gt;In this kind of setup, a symptom where access from outside was not possible started happening at irregular intervals&lt;/p&gt;
&lt;h2 id="symptoms"&gt;Symptoms&lt;/h2&gt;
&lt;p&gt;When the problem shows up from outside, access becomes impossible with a &lt;code&gt;403 Fobidden&lt;/code&gt; like the one below&lt;/p&gt;</description></item><item><title>Sending Mail Through Gmail's SMTP Server with msmtp</title><link>https://scribble.washo3.com/en/msmtp-gmail/</link><pubDate>Thu, 13 May 2021 15:42:27 +0900</pubDate><guid>https://scribble.washo3.com/en/msmtp-gmail/</guid><description>&lt;p&gt;I want to install msmtp on Debian10 and send mail through Gmail&amp;rsquo;s SMTP server&lt;/p&gt;
&lt;h2 id="msmtp"&gt;msmtp&lt;/h2&gt;
&lt;p&gt;On hosts that only send mail I used to use sSMTP a lot, but on Debian10 there is no ssmtp package.&lt;br&gt;
The replacement for it is msmtp&lt;/p&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="msmtp - about" src="https://hatenablog-parts.com/embed?url=https://marlam.de/msmtp/" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;h2 id="installing-msmtp"&gt;Installing msmtp&lt;/h2&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;# apt install msmtp msmtp-mta&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="configuration"&gt;Configuration&lt;/h2&gt;
&lt;p&gt;There is no configuration file in /etc, so copy the sample&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;# cp /usr/share/doc/msmtp/examples/msmtprc-system.example /etc/msmtprc&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Incidentally, for a per-user configuration it is&lt;/p&gt;</description></item><item><title>When VirtualBox Vanishes After a Homebrew Upgrade and Vagrant Breaks</title><link>https://scribble.washo3.com/en/virtualbox-disapeared/</link><pubDate>Wed, 12 May 2021 14:24:45 +0900</pubDate><guid>https://scribble.washo3.com/en/virtualbox-disapeared/</guid><description>&lt;h2 id="symptoms"&gt;Symptoms&lt;/h2&gt;
&lt;p&gt;I run several servers in Docker containers with Vagrant on my Mac, but the guest OS I had started with Vagrant stopped coming up, and neither &lt;code&gt;vagrant ssh&lt;/code&gt; nor &lt;code&gt;vagrant halt&lt;/code&gt; worked any more.&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vagrant halt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;The provider &lt;span class="s1"&gt;&amp;#39;virtualbox&amp;#39;&lt;/span&gt; that was requested to back the machine
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;&amp;#39;default&amp;#39;&lt;/span&gt; is reporting that it isn&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;t usable on this system. The
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;reason is shown below:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Vagrant could not detect VirtualBox! Make sure VirtualBox is properly installed.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Vagrant uses the &lt;span class="sb"&gt;`&lt;/span&gt;VBoxManage&lt;span class="sb"&gt;`&lt;/span&gt; binary that ships with VirtualBox, and requires
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;this to be available on the PATH. If VirtualBox is installed, please find the
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sb"&gt;`&lt;/span&gt;VBoxManage&lt;span class="sb"&gt;`&lt;/span&gt; binary and add it to the PATH environmental variable.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;VirtualBox cannot be found? Did it disappear?&lt;/p&gt;</description></item><item><title>Notes on Updating a Hugo Theme Managed as a Git Submodule</title><link>https://scribble.washo3.com/en/hugo-submodule-update/</link><pubDate>Tue, 11 May 2021 16:42:14 +0900</pubDate><guid>https://scribble.washo3.com/en/hugo-submodule-update/</guid><description>&lt;p&gt;On this site I manage the Hugo Beautifulhuigo theme as a submodule on Gitlab.&lt;/p&gt;
&lt;p&gt;From time to time the upstream submodue theme gets updated, but git clone and git push do not update the submodule automatically&lt;br&gt;
So it has to be updated by hand, and since this is work I do often, I am writing it down as a note&lt;/p&gt;
&lt;h2 id="cloning-my-own-repository"&gt;Cloning my own repository&lt;/h2&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git clone --recurse-submodules --depth &lt;span class="m"&gt;1&lt;/span&gt; https://gitlab.com/user/repo.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;cd&lt;/span&gt; repo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="updating-the-submodule"&gt;Updating the submodule&lt;/h2&gt;
&lt;p&gt;The only thing you actually have to do is &lt;code&gt;git submodule update --remote&lt;/code&gt;&lt;/p&gt;</description></item><item><title>How to Hide the Author Name in the Beautifulhugo Theme</title><link>https://scribble.washo3.com/en/beautifulhugo-hideauthor/</link><pubDate>Wed, 24 Mar 2021 10:38:57 +0900</pubDate><guid>https://scribble.washo3.com/en/beautifulhugo-hideauthor/</guid><description>&lt;p&gt;On this site there is only one administrator, so going to the trouble of showing the author (Author name) has no meaning.&lt;/p&gt;
&lt;p&gt;Setting the Author field to display:none; with CSS might remove only the display, but since it is unnecessary I thought I might as well delete it outright.&lt;br&gt;
Looking into the files right away, I found it written in theme/beautifulhugo/layouts/partials/post_meta.html.&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Site&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;hideAuthor&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;author&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nx"&gt;nbsp&lt;/span&gt;&lt;span class="p"&gt;;|&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nx"&gt;nbsp&lt;/span&gt;&lt;span class="p"&gt;;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;fas fa-user&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nx"&gt;nbsp&lt;/span&gt;&lt;span class="p"&gt;;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;author&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;safeHTML&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nx"&gt;nbsp&lt;/span&gt;&lt;span class="p"&gt;;|&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nx"&gt;nbsp&lt;/span&gt;&lt;span class="p"&gt;;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;fas fa-user&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nx"&gt;nbsp&lt;/span&gt;&lt;span class="p"&gt;;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Site&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Author&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;safeHTML&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Usually I would delete the relevant part and bring it over to root/layouts/partials/post_meta.html, but looking closely, the condition is the truth value of &lt;code&gt;hideAuthor&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Creating Password-Protected ZIP Files on Linux and macOS</title><link>https://scribble.washo3.com/en/zip-password/</link><pubDate>Fri, 19 Mar 2021 15:48:22 +0900</pubDate><guid>https://scribble.washo3.com/en/zip-password/</guid><description>&lt;p&gt;The other day, while &lt;a href="https://scribble.washo3.com/en/bitwarden-docker/"&gt;self-hosting Bitwarden with Docker&lt;/a&gt;

, I realised that leaving the data exported from LastPass and 1Password lying around as it is would be dangerous. Deleting it once it is no longer needed is probably the best answer, but I wanted to keep it as a backup, so I decided to save it as a password-protected zip.&lt;/p&gt;
&lt;h2 id="creating-a-password-protected-zip"&gt;Creating a password-protected zip&lt;/h2&gt;
&lt;h3 id="when-you-want-to-create-a-password-protected-zip-from-a-file"&gt;When you want to create a password-protected zip from a file&lt;/h3&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ zip -e sample.zip sample.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Enter password:&amp;lt;enter the password&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Verify password:&amp;lt;enter the password&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adding: &lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;stored 0%&lt;span class="o"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="when-you-want-to-create-a-password-protected-zip-from-a-directory"&gt;When you want to create a password-protected zip from a directory&lt;/h3&gt;
&lt;p&gt;When a directory is involved you need to be careful, because if you forget the &lt;code&gt;-r&lt;/code&gt; option you end up with an empty zip file&lt;/p&gt;</description></item><item><title>Running Dnsmasq in Docker as an Internal DNS Server for a Home LAN</title><link>https://scribble.washo3.com/en/dnsmasq_on_docker/</link><pubDate>Mon, 15 Mar 2021 10:45:02 +0900</pubDate><guid>https://scribble.washo3.com/en/dnsmasq_on_docker/</guid><description>&lt;p&gt;On my home server I use my own domain and run several servers on it, but from inside the home LAN the traffic goes through the router, so accessing them with my own domain does not reach the servers inside the house&lt;/p&gt;
&lt;p&gt;It is easier to understand if you refer to this article&lt;/p&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="テストサーバ用にDnsmasqで内向きのDNSサーバを構築する | oiio.jp" src="https://hatenablog-parts.com/embed?url=https://oiio.jp/entries/1256" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;p&gt;When you only have a few PCs and devices, you can write the entries in each hosts file instead of introducing dnsmasq, but I also wanted to manage the hosts file in one place, so I built dnsmasq as a DNS server inside the LAN with Docker&lt;/p&gt;</description></item><item><title>Self-Hosting Bitwarden with Docker as a LastPass Replacement</title><link>https://scribble.washo3.com/en/bitwarden-docker/</link><pubDate>Wed, 10 Mar 2021 16:49:34 +0900</pubDate><guid>https://scribble.washo3.com/en/bitwarden-docker/</guid><description>&lt;p&gt;Since the free version of LastPass gets a device limit from the middle of March, I wanted to move away from LastPass sooner rather than later, so I looked into whether there was any open source password manager out there, and Bitwarden looked good, so — as always — I tried self-hosting it with Docker.&lt;/p&gt;
&lt;p&gt;What I do for the work is almost the same as the article below ↓&lt;/p&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="LastPassの無料版が機能制限されたからBitwardenの自分専用サーバ作ってみた | tkmb.me" src="https://hatenablog-parts.com/embed?url=https://tkmb.me/archives/669" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;h2 id="bitwarden"&gt;Bitwarden&lt;/h2&gt;
&lt;p&gt;Here is the official site.&lt;br&gt;
If you are not going to self-host, it is easier to create an account and use that&lt;/p&gt;</description></item><item><title>How to Find the Subnet Range of an ISP with whois</title><link>https://scribble.washo3.com/en/subnet-whois/</link><pubDate>Tue, 09 Mar 2021 08:37:34 +0900</pubDate><guid>https://scribble.washo3.com/en/subnet-whois/</guid><description>&lt;p&gt;There are times when you want to know the subnet range of an ISP or similar.&lt;/p&gt;
&lt;p&gt;For example, when you want to allow SSH only from your home subnet on an external server such as AWS or a VPS, and therefore want to know the range of the dynamic IP in your home environment.&lt;/p&gt;
&lt;p&gt;You can look it up with whois, which is a surprisingly simple method
(well, the web based &lt;a href="https://www.nic.ad.jp/ja/whois/ja-gateway.html" target="_blank" rel="noopener"&gt;JPNIC WHOIS Gateway&lt;/a&gt;

 (in Japanese) is simple too&amp;hellip;)&lt;/p&gt;</description></item><item><title>Fixing Hugo Source Build Errors on CentOS 7</title><link>https://scribble.washo3.com/en/hugo-on-centos7-builderr/</link><pubDate>Thu, 04 Mar 2021 16:45:35 +0900</pubDate><guid>https://scribble.washo3.com/en/hugo-on-centos7-builderr/</guid><description>&lt;p&gt;I posted a similar article before in &lt;a href="https://scribble.washo3.com/en/hugo-on-centos7-gcc/"&gt;GCC error with hugo on CentOS7&lt;/a&gt;

, but recently the build from source failed, so I worked on it.&lt;br&gt;
Incidentally, the version of hugo I am trying to build is 0.82&lt;/p&gt;
&lt;h2 id="environment"&gt;Environment&lt;/h2&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# cat /etc/redhat-release&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CentOS Linux release 7.9.2009 &lt;span class="o"&gt;(&lt;/span&gt;Core&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# git version&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git version 1.8.3.1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# go version&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;go version go1.15.5 linux/amd64&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="building-hugo-from-source"&gt;Building hugo from source&lt;/h2&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vim from-gh.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir &lt;span class="nv"&gt;$HOME&lt;/span&gt;/src
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/src
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/gohugoio/hugo.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; hugo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;go install --tags extended
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sh from-gh.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="error"&gt;Error&lt;/h3&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Cloning into &amp;#39;hugo&amp;#39;...
remote: Enumerating objects: 50309, done.
remote: Total 50309 (delta 0), reused 0 (delta 0), pack-reused 50309
Receiving objects: 100% (50309/50309), 93.65 MiB | 9.80 MiB/s, done.
Resolving deltas: 100% (34542/34542), done.
go: github.com/sanity-io/litter@v1.5.0 requires
	github.com/pmezard/go-difflib@v0.0.0-20151028094244-d8ed2627bdf0: invalid version: git fetch --unshallow -f origin in /root/go/pkg/mod/cache/vcs/b66720d7c9f6776b1690ab6c7de6bd08fe64d74a3eaff8dbdef6603dac225370: exit status 128:
	fatal: git fetch-pack: expected shallow list&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;When I updated git to the latest version, this time I got the error below&lt;/p&gt;</description></item><item><title>Customizing image and link output with Hugo Render hooks</title><link>https://scribble.washo3.com/en/hugo-render-hooks%E3%81%A7image%E3%81%A8link%E3%82%92%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA/</link><pubDate>Sat, 13 Feb 2021 07:43:27 +0000</pubDate><guid>https://scribble.washo3.com/en/hugo-render-hooks%E3%81%A7image%E3%81%A8link%E3%82%92%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA/</guid><description>&lt;p&gt;To insert an image in Hugo you write the standard Markdown &lt;code&gt;![Text](Link-URL)&lt;/code&gt;, which renders as &lt;code&gt;&amp;lt;img src &amp;quot;~&amp;quot;&amp;gt;&lt;/code&gt;, but I had been wanting to build native lazy-load into the img tag.&lt;br&gt;
Incidentally, native lazy-load means that&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You can configure lazy loading of images easily just by adding the HTML loading attribute, without needing Javascript&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;At first I thought it could only be inserted by using the figure tag or a shortcut and went through some trial and error, but when I looked into it I learned that it becomes possible by using Hugo&amp;rsquo;s Render hooks.&lt;br&gt;
If you want to know Render hooks in detail, see the official documentation.&lt;/p&gt;</description></item><item><title>Beautifulhugo Stops Showing the Last Modified Date on Hugo 0.76 and Later</title><link>https://scribble.washo3.com/en/beautifulhugo-failed-to-get-translated/</link><pubDate>Wed, 10 Feb 2021 09:23:25 +0000</pubDate><guid>https://scribble.washo3.com/en/beautifulhugo-failed-to-get-translated/</guid><description>&lt;p&gt;Beautifulhugo is the Hugo theme I still use today, and a symptom where the last modified date was not displayed showed up, so I dealt with it&lt;/p&gt;
&lt;p&gt;Incidentally, the hugo version is 0.80.0&lt;/p&gt;
&lt;h2 id="symptoms"&gt;Symptoms&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;When I start the server locally, the last modified date is not displayed and the error below appears&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ hugo server -D
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;....
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Failed to get translated string &lt;span class="k"&gt;for&lt;/span&gt; language &lt;span class="s2"&gt;&amp;#34;ja&amp;#34;&lt;/span&gt; and ID &lt;span class="s2"&gt;&amp;#34;lastModified&amp;#34;&lt;/span&gt;: template: :1:22: executing &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt; at &amp;lt;.Count&amp;gt;: can&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;t evaluate field Count in &lt;span class="nb"&gt;type&lt;/span&gt; string&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Since I deploy with Netlify, raising the hugo version in netlify.toml produces the same symptom&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;production&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;HUGO_VERSION&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;0.80.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;HUGO_ENV&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;production&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;HUGO_ENABLEGITINFO&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="cause"&gt;Cause&lt;/h2&gt;
&lt;p&gt;Looking at the error message, the &amp;lt;.Count&amp;gt; notation seems to be the problem, and it is used in en.yaml, ja.yaml and the like inside beautifulhugo/i18n/.&lt;/p&gt;</description></item><item><title>Instagram Embeds Broke My Hugo Build After the oEmbed API Shutdown</title><link>https://scribble.washo3.com/en/instagram-endpoint-ended.html</link><pubDate>Wed, 23 Dec 2020 03:42:24 +0900</pubDate><guid>https://scribble.washo3.com/en/instagram-endpoint-ended.html</guid><description>&lt;p&gt;Recently, after fixing Hugo settings or creating and editing articles, the build started failing and I could no longer update the site.&lt;/p&gt;
&lt;h2 id="symptoms"&gt;Symptoms&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Failed to get JSON resource &amp;ldquo;&lt;a href="https://api.instagram.com/oembed/?url=https://www.instagram.com/p/BGvuInxxxx/&amp;amp;amp;maxwidth=640&amp;amp;amp;omitscript=true%22" target="_blank" rel="noopener"&gt;https://api.instagram.com/oembed/?url=https://www.instagram.com/p/BGvuInxxxx/&amp;amp;maxwidth=640&amp;amp;omitscript=true"&lt;/a&gt;

: Failed to retrieve remote file: Bad Request&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Looking at the deploy log, Failed was displayed at the Instagram API part and the build was being aborted.&lt;/p&gt;
&lt;p&gt;It seems that in Hugo, when an instagram shortcode is inserted, the build now fails.&lt;/p&gt;</description></item><item><title>Why Scripts in /etc/cron.weekly Do Not Run on Debian</title><link>https://scribble.washo3.com/en/debian-cron/</link><pubDate>Wed, 30 Sep 2020 13:37:10 +0900</pubDate><guid>https://scribble.washo3.com/en/debian-cron/</guid><description>&lt;p&gt;Running on debian10(Buster), I had placed a backup script (backup.sh) under /etc/cron.weekly/, but apparently it was not running.&lt;br&gt;
Of course I had given it execute permission, and I had confirmed it works when run manually.&lt;/p&gt;
&lt;p&gt;Checking my other machines, it turned out that it works without any problem on CentOS while none of them run on Debian.&lt;/p&gt;
&lt;p&gt;Looking into it,&lt;br&gt;
according to run-parts(8), it seems that extensions containing a dot, such as .sh or .pl, do not run&lt;/p&gt;</description></item><item><title>Adding a netlify.toml to a Hugo Site</title><link>https://scribble.washo3.com/en/hugo-netlifytoml/</link><pubDate>Fri, 07 Aug 2020 14:05:35 +0900</pubDate><guid>https://scribble.washo3.com/en/hugo-netlifytoml/</guid><description>&lt;p&gt;About a year has passed since I moved to a Hugo + Netlify environment, and because nothing in particular had gone wrong I had left it alone, but I finally got around to setting up netlify.toml.&lt;/p&gt;
&lt;p&gt;The theme used on this site: Beautifulhugo (submodule)&lt;/p&gt;
&lt;h2 id="netlifytoml"&gt;netlify.toml&lt;/h2&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="Host on Netlify | Hugo" src="https://hatenablog-parts.com/embed?url=https://gohugo.io/hosting-and-deployment/hosting-on-netlify/" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt; 
&lt;p&gt;The official page has the format for netlify.toml, so create it under hugo with the following content&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml:netlify.toml" data-lang="toml:netlify.toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;build&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;publish&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;public&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;command&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;hugo --gc --minify&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;production&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;HUGO_VERSION&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;0.74.3&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;HUGO_ENV&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;production&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;HUGO_ENABLEGITINFO&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;split1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;command&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;hugo --gc --minify --enableGitInfo&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;split1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;HUGO_VERSION&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;0.74.3&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;HUGO_ENV&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;production&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;deploy-preview&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;command&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;deploy-preview&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;HUGO_VERSION&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;0.74.3&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;branch-deploy&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;command&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;hugo --gc --minify -b $DEPLOY_PRIME_URL&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;branch-deploy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;HUGO_VERSION&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;0.74.3&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;HUGO_ENABLEGITINFO&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;When the theme is a submodule&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You need to specify the theme in the &lt;code&gt;build&lt;/code&gt; command, so add &lt;code&gt;--theme=beautifulhugo&lt;/code&gt;&lt;/p&gt;</description></item><item><title>JpGraph Charts Stop Rendering on PHP 7.3 and Later</title><link>https://scribble.washo3.com/en/jpgraph-gd-error/</link><pubDate>Thu, 18 Jun 2020 17:24:18 +0900</pubDate><guid>https://scribble.washo3.com/en/jpgraph-gd-error/</guid><description>&lt;p&gt;At the time of writing (2021.10), the problem below appears to be fixed in the latest version, 4.3.5.&lt;/p&gt;
&lt;iframe class="hatenablogcard" style="width:100%;height:175px;margin:15px 0;max-width:680px;" title="JpGraph - 高性能なグラフ表示ライブラリ | アシアル株式会社" src="https://hatenablog-parts.com/embed?url=https://www.asial.co.jp/jpgraph/download/" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt; 
&lt;p&gt;It says PHP 7.2 is supported, but the product information says it supports up to 7.4, so which is right?? As long as it works properly I do not really mind.&lt;/p&gt;
&lt;p&gt;I am leaving the old article below for reference&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="symptoms"&gt;Symptoms&lt;/h2&gt;
&lt;p&gt;Under Apache2.4+PHP7.3+Jpgraph4.3.1, the error &lt;code&gt;JpGraph Error: 25092&lt;/code&gt; meant graphs were no longer output&lt;/p&gt;</description></item><item><title>Why remi-php Updates Fail with yum on CentOS 7</title><link>https://scribble.washo3.com/en/yum-update-remiphp7/</link><pubDate>Mon, 08 Jun 2020 15:42:32 +0900</pubDate><guid>https://scribble.washo3.com/en/yum-update-remiphp7/</guid><description>&lt;p&gt;Once again, an error caused by dependencies during a CentOS yum update&lt;/p&gt;
&lt;h2 id="the-situation"&gt;The situation&lt;/h2&gt;
&lt;p&gt;On CentOS7, php7.x has already been installed from the remi repository&lt;/p&gt;
&lt;h2 id="the-symptom"&gt;The symptom&lt;/h2&gt;
&lt;p&gt;An error during yum update&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# sudo yum update —enablerepo=remi-php73&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;エラー: パッケージ: php-pecl-zip-1.18.2-1.el7.remi.5.4.x86_64 &lt;span class="o"&gt;(&lt;/span&gt;remi&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;要求: php&lt;span class="o"&gt;(&lt;/span&gt;zend-abi&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 20100525-64
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;インストール: php-common-7.3.0-1.el7.remi.x86_64 &lt;span class="o"&gt;(&lt;/span&gt;@remi-php73&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;php&lt;span class="o"&gt;(&lt;/span&gt;zend-abi&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 20180731-64
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;利用可能: php-common-5.4.16-48.el7.x86_64 &lt;span class="o"&gt;(&lt;/span&gt;base&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;php&lt;span class="o"&gt;(&lt;/span&gt;zend-abi&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 20100525-64
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;利用可能: php-common-5.4.45-18.el7.remi.x86_64 &lt;span class="o"&gt;(&lt;/span&gt;remi&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;php&lt;span class="o"&gt;(&lt;/span&gt;zend-abi&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 20100525-64
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;エラー: パッケージ: php-pecl-zip-1.18.2-1.el7.remi.5.4.x86_64 &lt;span class="o"&gt;(&lt;/span&gt;remi&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;要求: php&lt;span class="o"&gt;(&lt;/span&gt;api&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 20100412-64
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;インストール: php-common-7.3.0-1.el7.remi.x86_64 &lt;span class="o"&gt;(&lt;/span&gt;@remi-php73&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;php&lt;span class="o"&gt;(&lt;/span&gt;api&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 20180731-64
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;利用可能: php-common-5.4.16-48.el7.x86_64 &lt;span class="o"&gt;(&lt;/span&gt;base&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;php&lt;span class="o"&gt;(&lt;/span&gt;api&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 20100412-64
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;利用可能: php-common-5.4.45-18.el7.remi.x86_64 &lt;span class="o"&gt;(&lt;/span&gt;remi&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;php&lt;span class="o"&gt;(&lt;/span&gt;api&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 20100412-64
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;問題を回避するために --skip-broken を用いることができます。&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Using &lt;code&gt;--skip-broken&lt;/code&gt; does not work either&lt;/p&gt;</description></item><item><title>Fixing failed to extract shortcode Errors in hugo server</title><link>https://scribble.washo3.com/en/hugo-server-git/</link><pubDate>Mon, 08 Jun 2020 15:33:51 +0900</pubDate><guid>https://scribble.washo3.com/en/hugo-server-git/</guid><description>&lt;h2 id="the-situation"&gt;The situation&lt;/h2&gt;
&lt;p&gt;At the moment I manage the Markdown for this blog on Gitllab and write the posts on a local machine with Git.&lt;/p&gt;
&lt;p&gt;The flow is: clone from Gitlab to a local Mac or Linux box with Git, write a post, and push after compiling.&lt;/p&gt;
&lt;p&gt;Hugo has a server mode, and if you start it with &lt;code&gt;hugo server -w&lt;/code&gt; you can check a preview of the post you wrote at localhost:1313.&lt;/p&gt;</description></item><item><title>A Docker Image That Cannot Be Deleted</title><link>https://scribble.washo3.com/en/docker-cannot-image/</link><pubDate>Mon, 08 Jun 2020 15:25:23 +0900</pubDate><guid>https://scribble.washo3.com/en/docker-cannot-image/</guid><description>&lt;h2 id="symptoms"&gt;Symptoms&lt;/h2&gt;
&lt;p&gt;I tried to delete an image file in Docker and got an error&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ docker rmi d56
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Error response from daemon: conflict: unable to delete d562087633bf &lt;span class="o"&gt;(&lt;/span&gt;cannot be forced&lt;span class="o"&gt;)&lt;/span&gt; - image has dependent child images&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Forcing the deletion&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ docker rmi d56 -f
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Error response from daemon: conflict: unable to delete d562087633bf &lt;span class="o"&gt;(&lt;/span&gt;cannot be forced&lt;span class="o"&gt;)&lt;/span&gt; - image has dependent child images&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="cause"&gt;Cause&lt;/h2&gt;
&lt;p&gt;The error seems to say that child image files depend on it.&lt;/p&gt;</description></item><item><title>Fixing Guest Network Drops in VMware Fusion on a Mac</title><link>https://scribble.washo3.com/en/vmwarefusion-net-issue/</link><pubDate>Fri, 05 Jun 2020 08:44:21 +0900</pubDate><guid>https://scribble.washo3.com/en/vmwarefusion-net-issue/</guid><description>&lt;h2 id="symptoms"&gt;Symptoms&lt;/h2&gt;
&lt;p&gt;On VMware Fusion 8.5.4 under macOS High Sierra (10.13.6),
the network of the guest OS in VMware Fusion occasionally gets disconnected&lt;/p&gt;
&lt;p&gt;The guest OS is Windows10, and once the network drops,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;changing to NAT or bridged does not help&lt;/li&gt;
&lt;li&gt;restarting the network in Windows does not help&lt;/li&gt;
&lt;li&gt;disconnecting the network adapter on the VMware side does not help&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="the-solution"&gt;The solution&lt;/h2&gt;
&lt;p&gt;The simplest thing is to restart the Mac, but when the same symptom happens over and over while you are working, restarting every time is a hassle&lt;/p&gt;</description></item><item><title>HTML Written Inside Markdown Not Showing Up in Hugo</title><link>https://scribble.washo3.com/en/hugo0.6-goldmark/</link><pubDate>Thu, 04 Jun 2020 18:12:45 +0900</pubDate><guid>https://scribble.washo3.com/en/hugo0.6-goldmark/</guid><description>&lt;h2 id="symptoms"&gt;Symptoms&lt;/h2&gt;
&lt;p&gt;I had not written an article in Hugo for a while, and when I posted one after a long break I noticed that the iframes and HTML inside the Markdown were not being displayed.&lt;/p&gt;
&lt;h2 id="cause"&gt;Cause&lt;/h2&gt;
&lt;p&gt;When I looked into it, it turns out that with Goldmark, the Markdown parser newly adopted from Hugo v0.60, HTML tags inside Markdonw are ignored under the default settings&lt;/p&gt;
&lt;h2 id="solution"&gt;Solution&lt;/h2&gt;
&lt;p&gt;Since ignoring (stripping) HTML tags inside Markdonw is the default, it seems all you have to do is explicitly configure it not to ignore them&lt;/p&gt;</description></item><item><title>Making Command+Space Input Switching Instant on a Mac</title><link>https://scribble.washo3.com/en/mac-input-switch/</link><pubDate>Mon, 01 Jun 2020 15:27:36 +0900</pubDate><guid>https://scribble.washo3.com/en/mac-input-switch/</guid><description>&lt;p&gt;Have you ever been frustrated on a Mac because switching input between Japanese and English with &amp;ldquo;Command+Space&amp;rdquo; does not go smoothly due to a delay?&lt;/p&gt;
&lt;p&gt;For people using the latest Macs this may not be something worth worrying about, but I still use an iMac 2009, so the dialog that appears in the center of the screen tends to take control, and especially when I am working in the terminal or writing an article and switching frequently, sometimes it does not switch the way I want it to.&lt;/p&gt;</description></item><item><title>What I Thought After Running Growi for a Month</title><link>https://scribble.washo3.com/en/growi-advantages/</link><pubDate>Mon, 01 Jun 2020 14:21:52 +0900</pubDate><guid>https://scribble.washo3.com/en/growi-advantages/</guid><description>&lt;p&gt;I started Growi with Docker and used it for about a month, so let me list the pros and cons from my personal point of view&lt;/p&gt;
&lt;p&gt;These are the facts as of now (v3.7.7), so there is a possibility that they will be addressed in future version upgrades.&lt;/p&gt;
&lt;h2 id="pros"&gt;Pros&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Markdown editing with real-time preview&lt;/li&gt;
&lt;li&gt;Several people can edit&lt;/li&gt;
&lt;li&gt;Change history management&lt;/li&gt;
&lt;li&gt;Diagram editing with draw.io&lt;/li&gt;
&lt;li&gt;Easy to set up with docker&lt;/li&gt;
&lt;li&gt;Open source&lt;/li&gt;
&lt;li&gt;hackmd integration&lt;/li&gt;
&lt;li&gt;Fast search with elasticsearch&lt;/li&gt;
&lt;li&gt;Authentication features such as LDAP, Google and Github&lt;/li&gt;
&lt;li&gt;Simple presentations with reveal.js built in&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="cons"&gt;Cons&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;When a single article contains a lot of images or draw.io diagrams, it previews every one of them, so it becomes slow to respond&lt;/li&gt;
&lt;li&gt;Depending on the version, the integration with hackmd is unstable&lt;/li&gt;
&lt;li&gt;There is no restore button in the change history for going back to a past state&lt;/li&gt;
&lt;li&gt;Exporting and importing data requires the versions to match&lt;/li&gt;
&lt;li&gt;When you import data, the elasticsearch rebuild fails&lt;/li&gt;
&lt;li&gt;Articles cannot be exported as Markdown or PDF&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-about-running-it-in-the-office"&gt;What about running it in the office??&lt;/h2&gt;
&lt;p&gt;Since draw.io is built in and you can embed things like flowcharts and UML, I found it quite convenient for writing technical articles.&lt;/p&gt;</description></item><item><title>Forwarding Syslog from VMware ESXi 6.x to a Syslog Server</title><link>https://scribble.washo3.com/en/vmware-esxi6-syslog/</link><pubDate>Fri, 13 Mar 2020 13:25:00 +0900</pubDate><guid>https://scribble.washo3.com/en/vmware-esxi6-syslog/</guid><description>&lt;p&gt;The logs of a VMware ESXi host are not all that important, but out of curiosity I configured forwarding to a syslog server, and these are my notes&lt;/p&gt;
&lt;h2 id="configuration-steps"&gt;Configuration steps&lt;/h2&gt;
&lt;p&gt;This forwarding setup is meant for those who already have a syslog server prepared and can log in to VMware ESXi as root&lt;/p&gt;
&lt;h3 id="configuring-the-syslog-host"&gt;Configuring the syslog host&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Log in as an administrator in the VMware web interface&lt;/li&gt;
&lt;li&gt;Click Manage in the left column of the dashboard&lt;/li&gt;
&lt;li&gt;On the System tab in the right column, click Advanced settings&lt;/li&gt;
&lt;li&gt;Type syslog into the search box and apply the filter&lt;/li&gt;
&lt;li&gt;Select &amp;ldquo;Syslog.global.logHost&amp;rdquo; and click &amp;ldquo;Edit option&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Specify the forwarding method and the syslog server to forward to as the new value, and save it&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; &amp;#34;udp://192.168.1.1:514&amp;#34;

 For multiple entries,
 &amp;#34;udp://192.168.1.1:514,tcp://192.168.1.2:1514&amp;#34;&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;

&lt;img decoding="async" src="https://i.imgur.com/qP6ro9C.jpg" alt="" /&gt;


7. Click Refresh&lt;/p&gt;</description></item><item><title>Installing the Zabbix Agent on Mac OS X for Monitoring</title><link>https://scribble.washo3.com/en/mac-zabbix-agent/</link><pubDate>Thu, 05 Mar 2020 14:43:02 +0900</pubDate><guid>https://scribble.washo3.com/en/mac-zabbix-agent/</guid><description>&lt;h2 id="downloading-and-installing-the-zabbix-agent"&gt;Downloading and installing the Zabbix Agent&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;From the Zabbix official site, go to &lt;a href="https://www.zabbix.com/jp/download_agents" target="_blank" rel="noopener"&gt;Download Zabbix agents&lt;/a&gt;

 (in Japanese), specify macOS and the zabbix version, and download it&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Open the pkg file you downloaded and install it&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;By the way, it is set up so that it runs automatically when MacOS starts&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;# file location
/Library/LaunchDaemons/com.zabbix.zabbix_agentd.plist

# startup script
/usr/local/sbin/zabbix_agentd -c /usr/local/etc/zabbix/zabbix_agentd.conf -f

# log
/var/log/zabbix/zabbix_agentd-out.log
/var/log/zabbix/zabbix_agentd-err.log&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="configuration"&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Change Hostname as appropriate,
and change the Server field to the IP of the Zabbix Server&lt;/p&gt;</description></item><item><title>Be Careful with Linux on a PowerEdge with the S140</title><link>https://scribble.washo3.com/en/poweredge-s140-linux-raid/</link><pubDate>Tue, 03 Mar 2020 10:59:36 +0900</pubDate><guid>https://scribble.washo3.com/en/poweredge-s140-linux-raid/</guid><description>&lt;p&gt;When I bought a PowerEdge R630 I did not actually need RAID, but an S140 came with it by default, so I figured I might as well build the server in a RAID configuration — and got stuck.&lt;/p&gt;
&lt;h2 id="the-server-build-plan"&gt;The server build plan&lt;/h2&gt;
&lt;p&gt;Since there are 4 HDDs, I considered installing Debian Linux or VMware ESXi on RAID5&lt;/p&gt;
&lt;h2 id="boot-failure-from-the-rear-usb-port"&gt;Boot failure from the rear USB port&lt;/h2&gt;
&lt;p&gt;There is no CD/DVD drive included and no PXE boot environment either, so I created a boot disk on USB, plugged it into a rear USB port and powered the machine on, at which point it froze at &amp;ldquo;&lt;strong&gt;Initilize Firmware Interfaces&lt;/strong&gt;&amp;rdquo; and did not go any further.&lt;/p&gt;</description></item><item><title>When WordPress Will Not Upload Images</title><link>https://scribble.washo3.com/en/wp-php-imageupload-error/</link><pubDate>Wed, 12 Feb 2020 18:22:38 +0900</pubDate><guid>https://scribble.washo3.com/en/wp-php-imageupload-error/</guid><description>&lt;p&gt;When WordPress will not upload images, the following points are often raised&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The destination for the images is not writable&lt;/li&gt;
&lt;li&gt;You are going over the image size limit set in php.ini&lt;/li&gt;
&lt;li&gt;An image compression plugin is involved&lt;/li&gt;
&lt;li&gt;There is simply not enough disk space&lt;/li&gt;
&lt;li&gt;CPU load has hit 100%&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="uploads-stopped-working-from-2019"&gt;Uploads stopped working from 2019?&lt;/h2&gt;
&lt;p&gt;In particular, the symptom of an error occurring kept happening even though I had not changed php.ini or any plugin.&lt;/p&gt;</description></item><item><title>GCC Error Keeps Hugo from Starting on CentOS 7</title><link>https://scribble.washo3.com/en/hugo-on-centos7-gcc/</link><pubDate>Tue, 28 Jan 2020 15:55:40 +0900</pubDate><guid>https://scribble.washo3.com/en/hugo-on-centos7-gcc/</guid><description>&lt;p&gt;When I installed the latest version of Hugo on CentOS7, it would no longer start because of the error below&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;./hugo version&lt;br&gt;
./hugo: /lib64/libstdc++.so.6: version &lt;code&gt;GLIBCXX_3.4.20' not found (required by ./hugo) ./hugo: /lib64/libstdc++.so.6: version &lt;/code&gt;GLIBCXX_3.4.21&amp;rsquo; not found (required by ./hugo)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="checking-the-gcc-version"&gt;Checking the GCC version&lt;/h2&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;# strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;It looks like the GCC version on CentOS is still old&lt;/p&gt;</description></item><item><title>Switching the Beautifulhugo Submodule Back to the master Branch</title><link>https://scribble.washo3.com/en/submodule-switch/</link><pubDate>Tue, 28 Jan 2020 12:50:08 +0900</pubDate><guid>https://scribble.washo3.com/en/submodule-switch/</guid><description>&lt;p&gt;The beautifulhugo theme this site uses was pinned to a particular branch and was not being updated to the latest version, so these are my notes on switching it to master&lt;/p&gt;
&lt;p&gt;There had been updates on the official site and yet the theme inside the submodule was not updating; I wondered why, and it turned out to be because it was on a specific branch. (I thought I had set it to master when I first installed it&amp;hellip;?)&lt;/p&gt;</description></item><item><title>Guest Login Stops Working After a QNAP Firmware Update</title><link>https://scribble.washo3.com/en/qnap-smbbug/</link><pubDate>Fri, 24 Jan 2020 10:02:34 +0900</pubDate><guid>https://scribble.washo3.com/en/qnap-smbbug/</guid><description>&lt;h2 id="environment-where-the-problem-happens"&gt;Environment where the problem happens&lt;/h2&gt;
&lt;p&gt;Model: TS-269 Pro&lt;br&gt;
Old firmware: 4.3.4.1029&lt;br&gt;
New firmware: 4.3.4.2351&lt;/p&gt;
&lt;p&gt;File sharing from Windows10 and sharing over Mac SMB could no longer connect as guest.&lt;/p&gt;
&lt;p&gt;Guest login worked on the old firmware, but after the new firmware guest login stopped working&lt;/p&gt;
&lt;h2 id="checking-the-settings"&gt;Checking the settings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;In Control Panel → Privilege settings, under &amp;ldquo;Edit Shared Folder Permission&amp;rdquo;, I confirmed that the files (folders) that should allow guest login have read/write checked for everyone&lt;/li&gt;
&lt;li&gt;In Control Panel → Network &amp;amp; File Services, under &amp;ldquo;Microsoft Networking&amp;rdquo;, I confirmed that &amp;ldquo;Enable file service for Microsoft networking&amp;rdquo; is checked&lt;/li&gt;
&lt;li&gt;I unchecked &amp;ldquo;Enable file service for Microsoft networking&amp;rdquo; and pressed the Apply button, then checked it again and pressed the Apply button (restarting the file sharing service)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Even after all of these checks, guest login does not work&lt;/p&gt;</description></item><item><title>socket: too many open files When Starting Hugo on a Mac</title><link>https://scribble.washo3.com/en/hugo-socket-error/</link><pubDate>Thu, 21 Nov 2019 13:25:23 +0900</pubDate><guid>https://scribble.washo3.com/en/hugo-socket-error/</guid><description>&lt;p&gt;When I tried to run a certain theme with Hugo on MacOS Sierra, the error below appeared and it would not start&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Error: listen tcp 127.0.0.1:1313: socket: too many open files&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Looking into it, it turned out that the ulimit on the Mac needs to be changed, and I solved it by referring to &lt;a href="https://christina04.hatenablog.com/entry/2017/05/28/105601" target="_blank" rel="noopener"&gt;macOS Sierraでulimitを変更する方法 - Carpe Diem&lt;/a&gt;

 (in Japanese).&lt;/p&gt;
&lt;h2 id="changing-the-ulimit"&gt;Changing the ulimit&lt;/h2&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-plist" data-lang="plist"&gt;# cat /Library/LaunchDaemons/limit.maxfiles.plist
&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;UTF-8&amp;#34;?&amp;gt;
&amp;lt;!DOCTYPE plist PUBLIC &amp;#34;-//Apple//DTD PLIST 1.0//EN&amp;#34; &amp;#34;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;#34;&amp;gt;
&amp;lt;plist version=&amp;#34;1.0&amp;#34;&amp;gt;
 &amp;lt;dict&amp;gt;
 &amp;lt;key&amp;gt;Label&amp;lt;/key&amp;gt;
 &amp;lt;string&amp;gt;limit.maxfiles&amp;lt;/string&amp;gt;
 &amp;lt;key&amp;gt;ProgramArguments&amp;lt;/key&amp;gt;
 &amp;lt;array&amp;gt;
 &amp;lt;string&amp;gt;launchctl&amp;lt;/string&amp;gt;
 &amp;lt;string&amp;gt;limit&amp;lt;/string&amp;gt;
 &amp;lt;string&amp;gt;maxfiles&amp;lt;/string&amp;gt;
 &amp;lt;string&amp;gt;524288&amp;lt;/string&amp;gt;
 &amp;lt;string&amp;gt;524288&amp;lt;/string&amp;gt;
 &amp;lt;/array&amp;gt;
 &amp;lt;key&amp;gt;RunAtLoad&amp;lt;/key&amp;gt;
 &amp;lt;true/&amp;gt;
 &amp;lt;key&amp;gt;ServiceIPC&amp;lt;/key&amp;gt;
 &amp;lt;false/&amp;gt;
 &amp;lt;/dict&amp;gt;
&amp;lt;/plist&amp;gt;

# cat /Library/LaunchDaemons/limit.maxproc.plist
&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;UTF-8&amp;#34;?&amp;gt;
&amp;lt;!DOCTYPE plist PUBLIC &amp;#34;-//Apple/DTD PLIST 1.0//EN&amp;#34; &amp;#34;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;#34;&amp;gt;
&amp;lt;plist version=&amp;#34;1.0&amp;#34;&amp;gt;
 &amp;lt;dict&amp;gt;
 &amp;lt;key&amp;gt;Label&amp;lt;/key&amp;gt;
 &amp;lt;string&amp;gt;limit.maxproc&amp;lt;/string&amp;gt;
 &amp;lt;key&amp;gt;ProgramArguments&amp;lt;/key&amp;gt;
 &amp;lt;array&amp;gt;
 &amp;lt;string&amp;gt;launchctl&amp;lt;/string&amp;gt;
 &amp;lt;string&amp;gt;limit&amp;lt;/string&amp;gt;
 &amp;lt;string&amp;gt;maxproc&amp;lt;/string&amp;gt;
 &amp;lt;string&amp;gt;2048&amp;lt;/string&amp;gt;
 &amp;lt;string&amp;gt;2048&amp;lt;/string&amp;gt;
 &amp;lt;/array&amp;gt;
 &amp;lt;key&amp;gt;RunAtLoad&amp;lt;/key&amp;gt;
 &amp;lt;true /&amp;gt;
 &amp;lt;key&amp;gt;ServiceIPC&amp;lt;/key&amp;gt;
 &amp;lt;false /&amp;gt;
 &amp;lt;/dict&amp;gt;
&amp;lt;/plist&amp;gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# chown root:wheel /Library/LaunchDaemons/limit.maxproc.plist&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# chmod 644 /Library/LaunchDaemons/limit.maxfiles.plist&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# chmod 644 /Library/LaunchDaemons/limit.maxproc.plist&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="restarting-the-mac"&gt;Restarting the Mac&lt;/h2&gt;
&lt;h2 id="checking-the-change"&gt;Checking the change&lt;/h2&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;ulimit&lt;/span&gt; -a
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Maximum size of core files created &lt;span class="o"&gt;(&lt;/span&gt;kB, -c&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Maximum size of a process’s data segment &lt;span class="o"&gt;(&lt;/span&gt;kB, -d&lt;span class="o"&gt;)&lt;/span&gt; unlimited
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Maximum size of files created by the shell &lt;span class="o"&gt;(&lt;/span&gt;kB, -f&lt;span class="o"&gt;)&lt;/span&gt; unlimited
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Maximum size that may be locked into memory &lt;span class="o"&gt;(&lt;/span&gt;kB, -l&lt;span class="o"&gt;)&lt;/span&gt; unlimited
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Maximum resident &lt;span class="nb"&gt;set&lt;/span&gt; size &lt;span class="o"&gt;(&lt;/span&gt;kB, -m&lt;span class="o"&gt;)&lt;/span&gt; unlimited
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Maximum number of open file descriptors &lt;span class="o"&gt;(&lt;/span&gt;-n&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="m"&gt;524288&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Maximum stack size &lt;span class="o"&gt;(&lt;/span&gt;kB, -s&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="m"&gt;8192&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Maximum amount of cpu &lt;span class="nb"&gt;time&lt;/span&gt; in seconds &lt;span class="o"&gt;(&lt;/span&gt;seconds, -t&lt;span class="o"&gt;)&lt;/span&gt; unlimited
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Maximum number of processes available to a single user &lt;span class="o"&gt;(&lt;/span&gt;-u&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="m"&gt;2048&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Maximum amount of virtual memory available to the shell &lt;span class="o"&gt;(&lt;/span&gt;kB, -v&lt;span class="o"&gt;)&lt;/span&gt; unlimited&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>What to Watch Out for When Updating MWeb to 3.3</title><link>https://scribble.washo3.com/en/mweb3.3update-notice/</link><pubDate>Thu, 24 Oct 2019 14:49:57 +0900</pubDate><guid>https://scribble.washo3.com/en/mweb3.3update-notice/</guid><description>&lt;h2 id="notes-on-updating-from-mweb-328-or-earlier-to-33x"&gt;Notes on updating from MWEB 3.2.8 or earlier to 3.3.x&lt;/h2&gt;
&lt;p&gt;MWEB is easy to use as a MarkDown editor on the Mac, but when you upgrade from a version older than 3.2.8 to 3.3 or later, a little bit of work is required.&lt;/p&gt;
&lt;p&gt;If your version is older than 3.2.8, simply updating the app to the latest version will not work&lt;/p&gt;
&lt;p&gt;On the official MWEB site there is a note about this, &amp;ldquo;&lt;a href="https://www.mweb.im/version-3.2.8-to-3.3.1-release-note.html" target="_blank" rel="noopener"&gt;MWeb version 3.2.8 and bellow update to version 3.3.1 notice - MWeb&lt;/a&gt;

&amp;rdquo;&lt;/p&gt;</description></item><item><title>Kitematic on Mac Fails to Pull Docker Images</title><link>https://scribble.washo3.com/en/kitematic177/</link><pubDate>Thu, 24 Oct 2019 10:35:29 +0900</pubDate><guid>https://scribble.washo3.com/en/kitematic177/</guid><description>&lt;h2 id="kitematic-on-the-mac-i-use-started-erroring-out-when-pulling-docker-images-and-stopped-working-properly"&gt;Kitematic on the Mac I use started erroring out when pulling Docker images and stopped working properly&lt;/h2&gt;
&lt;p&gt;I suspect the symptom started after I upgraded Docker some time ago and bumped Kitematic&amp;rsquo;s version along with it.&lt;/p&gt;
&lt;h2 id="environment-and-symptoms"&gt;Environment and symptoms&lt;/h2&gt;
&lt;p&gt;Here I write out the environment I am running and the details of the problem&lt;/p&gt;
&lt;h3 id="environment"&gt;Environment&lt;/h3&gt;
&lt;p&gt;

&lt;img decoding="async" src="https://i.imgur.com/oQIzD51.jpg" alt="" /&gt;

&lt;/p&gt;
&lt;h3 id="symptoms"&gt;Symptoms&lt;/h3&gt;
&lt;p&gt;This error appears just as the image download from Docker Hub is about to finish.&lt;/p&gt;</description></item><item><title>ovftool Export Fails with vim.fault.InvalidState in Maintenance Mode</title><link>https://scribble.washo3.com/en/ovftools-backup/</link><pubDate>Tue, 03 Sep 2019 14:13:43 +0900</pubDate><guid>https://scribble.washo3.com/en/ovftools-backup/</guid><description>&lt;p&gt;On VMware ESXi,
I tried to back up a guest OS inside the ESXi server to OVF from a client.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://redj.hatenablog.com/entry/2019/01/31/011102" target="_blank" rel="noopener"&gt;VMware OVF Toolを利用してESXi 6.7からVMをエクスポート - redj’s blog&lt;/a&gt;

 (in Japanese)
I used that detailed article as a reference. (Thanks)&lt;/p&gt;
&lt;p&gt;When I stopped the guest OS and tried the backup, an error occurred&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csh" data-lang="csh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# ofvtool vi://[username]:[password]@[ESXi IP or FQDN]/[inventory name] [output OVF name].ovf&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Error: Fault cause: vim.fault.InvalidState&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;With backups on the older Vsphere you had to switch to maintenance mode, and the cause was that I had done exactly that.&lt;/p&gt;</description></item><item><title>tt-rss Won't Start After an Update: Enabling the PHP intl Module</title><link>https://scribble.washo3.com/en/ttrss-upgdate-issue/</link><pubDate>Tue, 03 Sep 2019 13:49:34 +0900</pubDate><guid>https://scribble.washo3.com/en/ttrss-upgdate-issue/</guid><description>&lt;p&gt;When I updated tt-rss, also known as TinyTinyRSS, to the latest version with git pull, it stopped starting up with the error below&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;PHP UConverter class is missing, it&amp;rsquo;s provided by the Internationalization (intl) module.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The environment it was running in at that point:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;nginx : 1.16.1&lt;/li&gt;
&lt;li&gt;PHP(php-fpm) : 7.3&lt;/li&gt;
&lt;li&gt;mysql : 5.5.62&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Since it is an error related to Internationalization (intl), I checked the package involved, but it was already installed (php73-php-intl)&lt;/p&gt;</description></item><item><title>Why I Switched from WordPress to Hugo, and What It Cost Me</title><link>https://scribble.washo3.com/en/wp-to-hugo/</link><pubDate>Mon, 02 Sep 2019 16:44:25 +0900</pubDate><guid>https://scribble.washo3.com/en/wp-to-hugo/</guid><description>&lt;h2 id="why-i-switched-from-wordpress-to-hugo"&gt;Why I switched from WordPress to Hugo&lt;/h2&gt;
&lt;p&gt;I had been using WordPress for more than 10 years to write articles, but lately I update it less often, and even so I have to update WordPress itself and its plugins frequently, which is also a nuisance from a security point of view. On top of that, the articles on this site do not really need to be a blog; they are closer to static pages.&lt;/p&gt;</description></item><item><title>Patching Beautifulhugo to Work with Hugo 0.57</title><link>https://scribble.washo3.com/en/hugo075-beautifulhugo/</link><pubDate>Wed, 28 Aug 2019 15:27:07 +0900</pubDate><guid>https://scribble.washo3.com/en/hugo075-beautifulhugo/</guid><description>&lt;p&gt;With the Hugo version upgrade it looks like some variable formats will stop working from now on, so I made the theme handle them.&lt;br&gt;
In Beautifulhugo they are not handled in versions from before May, so this may end up being only a temporary fix.&lt;/p&gt;
&lt;h2 id="environment"&gt;Environment&lt;/h2&gt;
&lt;p&gt;Hugo 0.57&lt;br&gt;
Beautifulhugo :handled from 2019-05-08 onwards
(the information below is from before 2019−05-08)&lt;/p&gt;
&lt;h2 id="edited-files"&gt;Edited files&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;layouts/_default/list.html
layouts/index.html
layouts/partials/footer.html
layouts/partials/head.html
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="changes"&gt;Changes&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Before&lt;/th&gt;
					&lt;th&gt;After&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;{{ .Hugo.Generator }}&lt;/td&gt;
					&lt;td&gt;{{ hugo.Generator }}&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;{{ .RSSLink }}&lt;/td&gt;
					&lt;td&gt;{{ with .OutputFormats.Get &amp;ldquo;RSS&amp;rdquo; }}{{ . RelPermalink }}{{ end }}&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;{{ .Hugo.Version }}&lt;/td&gt;
					&lt;td&gt;{{ .Site.Hugo.Version }}&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;{{ .URL }}&lt;/td&gt;
					&lt;td&gt;{{ .Permalink }}, {{ .RelPermalink }}&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;.Data.Pages&lt;/td&gt;
					&lt;td&gt;.Site.RegularPages&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="edited-sections"&gt;Edited sections&lt;/h2&gt;
&lt;h3 id="layouts_defaultlisthtml"&gt;layouts/_default/list.html&lt;/h3&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-diff" data-lang="diff"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;@@ -47,12 +47,12 @@
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;ul class=&amp;#34;pager main-pager&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ if .Paginator.HasPrev }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;li class=&amp;#34;previous&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;- &amp;lt;a href=&amp;#34;{{ .URL }}page/{{ .Paginator.Prev.PageNumber }}/&amp;#34;&amp;gt;&amp;amp;larr; {{ i18n &amp;#34;newerPosts&amp;#34; }}&amp;lt;/a&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;lt;a href=&amp;#34;{{ .Permalink }}page/{{ .Paginator.Prev.PageNumber }}/&amp;#34;&amp;gt;&amp;amp;larr; {{ i18n &amp;#34;newerPosts&amp;#34; }}&amp;lt;/a&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ end }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ if .Paginator.HasNext }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;li class=&amp;#34;next&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;- &amp;lt;a href=&amp;#34;{{ .URL }}page/{{ .Paginator.Next.PageNumber }}/&amp;#34;&amp;gt;{{ i18n &amp;#34;olderPosts&amp;#34; }} &amp;amp;rarr;&amp;lt;/a&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;lt;a href=&amp;#34;{{ .Permalink }}page/{{ .Paginator.Next.PageNumber }}/&amp;#34;&amp;gt;{{ i18n &amp;#34;olderPosts&amp;#34; }} &amp;amp;rarr;&amp;lt;/a&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ end }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/ul&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="layoutsindexhtml"&gt;layouts/index.html&lt;/h2&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-diff" data-lang="diff"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;@@ -9,7 +9,7 @@
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ end }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;posts-list&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;- {{ $pag := .Paginate (where .Data.Pages &amp;#34;Type&amp;#34; &amp;#34;post&amp;#34;) }}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ {{ $pag := .Paginate (where .Site.RegularPages &amp;#34;Type&amp;#34; &amp;#34;post&amp;#34;) }}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ range $pag.Pages }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;article class=&amp;#34;post-preview&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;a href=&amp;#34;{{ .Permalink }}&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;@@ -49,12 +49,12 @@
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;ul class=&amp;#34;pager main-pager&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ if .Paginator.HasPrev }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;li class=&amp;#34;previous&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;- &amp;lt;a href=&amp;#34;{{ .URL }}page/{{ .Paginator.Prev.PageNumber }}/&amp;#34;&amp;gt;&amp;amp;larr; {{ i18n &amp;#34;newerPosts&amp;#34; }}&amp;lt;/a&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;lt;a href=&amp;#34;{{ .Permalink }}page/{{ .Paginator.Prev.PageNumber }}/&amp;#34;&amp;gt;&amp;amp;larr; {{ i18n &amp;#34;newerPosts&amp;#34; }}&amp;lt;/a&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ end }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ if .Paginator.HasNext }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;li class=&amp;#34;next&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;- &amp;lt;a href=&amp;#34;{{ .URL }}page/{{ .Paginator.Next.PageNumber }}/&amp;#34;&amp;gt;{{ i18n &amp;#34;olderPosts&amp;#34; }} &amp;amp;rarr;&amp;lt;/a&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;lt;a href=&amp;#34;{{ .Permalink }}page/{{ .Paginator.Next.PageNumber }}/&amp;#34;&amp;gt;{{ i18n &amp;#34;olderPosts&amp;#34; }} &amp;amp;rarr;&amp;lt;/a&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ end }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/ul&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="layoutspartialsfooterhtml"&gt;layouts/partials/footer.html&lt;/h2&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-diff" data-lang="diff"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;@@ -17,10 +17,8 @@
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ end }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ if .Site.Params.rss }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;li&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;- {{ if .RSSLink }}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;- &amp;lt;a href=&amp;#34;{{ .RSSLink }}&amp;#34; title=&amp;#34;RSS&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;- {{ else }}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;- &amp;lt;a href=&amp;#34;{{ .Site.RSSLink }}&amp;#34; title=&amp;#34;RSS&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ {{ with .OutputFormats.Get &amp;#34;RSS&amp;#34; }}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ &amp;lt;a href=&amp;#39;{{ .RelPermalink }}&amp;#39; title=&amp;#39;RSS&amp;#39;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ end }}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="layoutspartialsheadhtml"&gt;layouts/partials/head.html&lt;/h2&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-diff" data-lang="diff"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;@@ -61,7 +61,7 @@
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;meta property=&amp;#34;og:type&amp;#34; content=&amp;#34;website&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;meta property=&amp;#34;og:site_name&amp;#34; content=&amp;#34;{{ .Site.Title }}&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;!-- Hugo Version number --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;- {{ .Hugo.Generator -}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gi"&gt;+ {{ hugo.Generator -}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;References:&lt;/p&gt;</description></item><item><title>How to Delete a File Whose Name Starts with -- (Hyphens)</title><link>https://scribble.washo3.com/en/dashfile/</link><pubDate>Fri, 23 Aug 2019 16:52:27 +0900</pubDate><guid>https://scribble.washo3.com/en/dashfile/</guid><description>&lt;p&gt;While I was working with Hugo, either because I got an argument wrong or because I built in View mode,
a directory named &amp;ldquo;&amp;ndash;bind=192.168.1.1&amp;rdquo; ended up being created&lt;/p&gt;
&lt;h2 id="what-does-not-work"&gt;What does not work&lt;/h2&gt;
&lt;p&gt;When you try to delete a file or directory that starts with &amp;ndash; (hyphens) like this, commands such as the ones below cannot remove it&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;$ rm --bind=192.168.1.1 # naturally this is mistaken for an argument, so ☓
$ rm ”--bind=192.168.1.1” ☓
$ rm &amp;#39;--bind=192.168.1.1&amp;#39; ☓&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="the-correct-way-to-delete-it"&gt;The correct way to delete it&lt;/h2&gt;
&lt;p&gt;You insert &amp;ldquo;&amp;ndash;&amp;rdquo; (two hyphens) into the command arguments and then specify the file or directory&lt;/p&gt;</description></item><item><title>Installing Ripgrep on Mac, CentOS and Debian</title><link>https://scribble.washo3.com/en/ripgrep/</link><pubDate>Wed, 21 Aug 2019 16:31:15 +0900</pubDate><guid>https://scribble.washo3.com/en/ripgrep/</guid><description>&lt;p&gt;Notes from installing Ripgrep(rg), which searches faster than grep, ack and silver_searcher, on several platforms&lt;/p&gt;
&lt;h2 id="mac"&gt;Mac&lt;/h2&gt;
&lt;p&gt;Install it straight from homebrew (if homebrew is already installed)&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ brew install ripgrep&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="centos-7"&gt;CentOS 7&lt;/h2&gt;
&lt;p&gt;On CentOS, ripgrep is not in the standard repositories or in epel, so install it as follows&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo yum-config-manager --add-repo&lt;span class="o"&gt;=&lt;/span&gt;https://copr.fedorainfracloud.org/coprs/carlwgeorge/ripgrep/repo/epel-7/carlwgeorge-ripgrep-epel-7.repo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo yum install ripgrep&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="debian-10"&gt;Debian 10&lt;/h2&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;# apt install ripgrep&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;If your version of Debian9 or Ubuntu is old and the package is not in apt, use the following&lt;/p&gt;</description></item><item><title>Upgrading Debian 9 Stretch to Debian 10 Buster</title><link>https://scribble.washo3.com/en/debian-9to10-upgrade/</link><pubDate>Mon, 08 Jul 2019 15:45:47 +0900</pubDate><guid>https://scribble.washo3.com/en/debian-9to10-upgrade/</guid><description>&lt;h2 id="debian-upgrade"&gt;Debian Upgrade&lt;/h2&gt;
&lt;p&gt;A major upgrade from Debian 9.x to 10.x&lt;/p&gt;
&lt;h2 id="upgrade-procedure"&gt;Upgrade procedure&lt;/h2&gt;
&lt;h3 id="checking-the-version"&gt;Checking the version&lt;/h3&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cat /etc/debian_version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;9.1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="updating"&gt;Updating&lt;/h3&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# apt-get update&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# apt-get upgrade&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# apt-get dist-upgrade&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="rewriting-sourceslist"&gt;Rewriting sources.list&lt;/h3&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# sed -i &amp;#39;s/stretch/buster/g&amp;#39; /etc/apt/sources.list&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="running-the-upgrade"&gt;Running the upgrade&lt;/h3&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# apt-get update&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# apt-get upgrade&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;If any NFS-related daemons are running, stop them&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# systemctl stop rpcbind&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The final upgrade&lt;/p&gt;</description></item><item><title>Show Invisible Characters in Vim</title><link>https://scribble.washo3.com/en/vim-listchar/</link><pubDate>Fri, 10 May 2019 14:26:07 +0900</pubDate><guid>https://scribble.washo3.com/en/vim-listchar/</guid><description>&lt;p&gt;Once you get used to Python layout and Markdown, there are times you want Vim to visualize blank lines and tabs.&lt;/p&gt;
&lt;h2 id="show-them-temporarily-in-vim"&gt;Show them temporarily in Vim&lt;/h2&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-vim" data-lang="vim"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nx"&gt;list&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nx"&gt;listchars&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;tab&lt;/span&gt;:»&lt;span class="p"&gt;-,&lt;/span&gt;&lt;span class="nx"&gt;trail&lt;/span&gt;:&lt;span class="p"&gt;-,&lt;/span&gt;&lt;span class="nx"&gt;eol&lt;/span&gt;:↲&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;extends&lt;/span&gt;:»&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;precedes&lt;/span&gt;:«&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;nbsp&lt;/span&gt;:%&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;space&lt;/span&gt;:&lt;span class="nx"&gt;_&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="show-them-permanently"&gt;Show them permanently&lt;/h2&gt;
&lt;p&gt;Add the following to ~/.vimrc&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-vim" data-lang="vim"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nx"&gt;list&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nx"&gt;listchars&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;tab&lt;/span&gt;:»&lt;span class="p"&gt;-,&lt;/span&gt;&lt;span class="nx"&gt;trail&lt;/span&gt;:&lt;span class="p"&gt;-,&lt;/span&gt;&lt;span class="nx"&gt;eol&lt;/span&gt;:↲&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;extends&lt;/span&gt;:»&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;precedes&lt;/span&gt;:«&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;nbsp&lt;/span&gt;:%&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;space&lt;/span&gt;:&lt;span class="nx"&gt;_&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="turn-the-display-back-off"&gt;Turn the display back off&lt;/h2&gt;
&lt;p&gt;Inside Vim,&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;:set nolist&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="reference"&gt;Reference&lt;/h2&gt;
&lt;p&gt;[Changing listchars colors for tabs, spaces, newlines, and so on in Vim (in Japanese)]
(&lt;a href="https://qiita.com/pollenjp/items/459a08a2cc59485fa08b" target="_blank" rel="noopener"&gt;https://qiita.com/pollenjp/items/459a08a2cc59485fa08b&lt;/a&gt;

)&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Item&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;set list&lt;/td&gt;
					&lt;td&gt;Show invisible characters&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;set listchars&lt;/td&gt;
					&lt;td&gt;Configure which characters to use&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;tab&lt;/td&gt;
					&lt;td&gt;Show tab characters&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;trail&lt;/td&gt;
					&lt;td&gt;Show trailing spaces&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;eol&lt;/td&gt;
					&lt;td&gt;Show newlines&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;space&lt;/td&gt;
					&lt;td&gt;Show spaces&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Things to Decide First When You Start a Hugo Site</title><link>https://scribble.washo3.com/en/hugo-first-decision/</link><pubDate>Fri, 10 May 2019 12:51:17 +0900</pubDate><guid>https://scribble.washo3.com/en/hugo-first-decision/</guid><description>&lt;h2 id="a-note-to-myself-on-the-items-i-want-to-decide-first-in-hugo"&gt;A note to myself on the items I want to decide first in Hugo&lt;/h2&gt;
&lt;h2 id="choosing-a-theme"&gt;Choosing a theme&lt;/h2&gt;
&lt;p&gt;The way front matter and shortcodes are written differs from theme to theme, and layout and CSS matter too, so I want to take my time at the start and settle on a theme that is easy to customize&lt;/p&gt;
&lt;p&gt;&lt;a href="https://themes.gohugo.io/" target="_blank" rel="noopener"&gt;Hugo Themes: Complete List&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;Since a Hugo version upgrade can turn some syntax invalid, it may be better to pick a theme that is updated frequently&lt;br&gt;
My personal recommendations would be Academic, Tranquilpeak, Learn and Beautifulhugo&lt;/p&gt;</description></item><item><title>How to Make Hugo Output .html URLs with uglyURLs</title><link>https://scribble.washo3.com/en/uglyurls/</link><pubDate>Fri, 10 May 2019 12:24:56 +0900</pubDate><guid>https://scribble.washo3.com/en/uglyurls/</guid><description>&lt;p&gt;The output format of a site differs from theme to theme, but when you write an article called content, the output format is normally something like the following.&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;https://your-site/post/content/
https://your-site/content/&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;When you want to make this your-site/content.html, that is, end it in .html&lt;/p&gt;
&lt;p&gt;Add the following inside config.toml&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml:config.toml" data-lang="toml:config.toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;uglyURLs&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Note:
If &amp;ldquo;url:xxxx&amp;rdquo; is written in the front matter of an article, it takes precedence, so uglyURLS has no effect and you do not get the html format.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If it is written, only that article gets output as something like your-site/xxxx/&lt;/p&gt;</description></item><item><title>How to Write Tables in Markdown</title><link>https://scribble.washo3.com/en/markdown-table/</link><pubDate>Fri, 10 May 2019 10:33:33 +0900</pubDate><guid>https://scribble.washo3.com/en/markdown-table/</guid><description>&lt;h2 id="table-notation-in-markdown"&gt;Table notation in Markdown&lt;/h2&gt;
&lt;p&gt;Basically all you do is separate things with |&lt;/p&gt;
&lt;h2 id="basic-form"&gt;Basic form&lt;/h2&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;|Header 1|Header 2|Header 3|
|-------|-------|-------|
|Item 1|Item 2|Item 3|&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Header 1&lt;/th&gt;
					&lt;th&gt;Header 2&lt;/th&gt;
					&lt;th&gt;Header 3&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Item 1&lt;/td&gt;
					&lt;td&gt;Item 2&lt;/td&gt;
					&lt;td&gt;Item 3&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;The first row is the header
The header always seems to end up bold&lt;/li&gt;
&lt;li&gt;The second row is the separator that sets the attributes
Any number of - seems to be fine, but four or more is probably better&lt;/li&gt;
&lt;li&gt;From the third row onwards, you just keep adding as many items and contents as you like&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="alignment"&gt;Alignment&lt;/h2&gt;
&lt;p&gt;When you want the headers and items left aligned, right aligned or centred&lt;/p&gt;</description></item><item><title>wp-tegaki Plugin Error on WordPress</title><link>https://scribble.washo3.com/en/wp-tegaki-error/</link><pubDate>Fri, 10 May 2019 09:14:20 +0900</pubDate><guid>https://scribble.washo3.com/en/wp-tegaki-error/</guid><description>&lt;h1 id="does-the-wp-tegaki-plugin-error-even-when-it-is-disabled"&gt;Does the wp-tegaki plugin error even when it is disabled?&lt;/h1&gt;
&lt;p&gt;On a WordPress blog, the following error appeared even though the wp-tegaki plugin I used to run was already disabled.
(wp-tegaki is no longer maintained and does not support PHP 7.x)&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;PHP&lt;/span&gt; &lt;span class="nx"&gt;Parse&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;syntax&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;unexpected&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;new&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;T_NEW&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;in&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;www&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt;&lt;span class="c1"&gt;//wp-content/plugins/wp-tegaki/wp-tegaki-img.php on line 24
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;I was not using it anyway and it was annoying, so I deleted it.&lt;/p&gt;
&lt;p&gt;These days it is better to use web fonts anyway.&lt;/p&gt;</description></item><item><title>Preventing Copy and Paste of Posts in Beautifulhugo</title><link>https://scribble.washo3.com/en/oncopy/</link><pubDate>Wed, 08 May 2019 12:46:50 +0900</pubDate><guid>https://scribble.washo3.com/en/oncopy/</guid><description>&lt;h2 id="preventing-copy-and-paste-of-posts"&gt;Preventing copy and paste of posts&lt;/h2&gt;
&lt;p&gt;Referring to &amp;ldquo;&lt;a href="https://www.itti.jp/web-design/not-drag/" target="_blank" rel="noopener"&gt;テキストのドラッグ、画像のコピーを禁止して、記事をコピーさせない方法&lt;/a&gt;

&amp;rdquo; (in Japanese), I disable text selection (dragging)&lt;/p&gt;
&lt;p&gt;Note that this is applied for the Beautifulhugo theme, so adapt it as appropriate for other themes.&lt;/p&gt;
&lt;h2 id="adding-the-script"&gt;Adding the script&lt;/h2&gt;
&lt;p&gt;Add this inside the body tag&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;beautifulhugo/layouts/_default/baseof.html&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="na"&gt;onMouseDown&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;return false;&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;onSelectStart&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;return false&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="fixing-the-css"&gt;Fixing the CSS&lt;/h2&gt;
&lt;p&gt;Add this to the css for body&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;beautifulhugo/static/css/main.css&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;user-select&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;none&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;-webkit-user-select&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;none&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;-ms-user-select&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;none&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;-moz-user-select&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;none&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;-khtml-user-select&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;none&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;-webkit-user-drag&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;none&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;-khtml-user-drag&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;none&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="the-point"&gt;The point&lt;/h3&gt;
&lt;p&gt;In short, all you need to do is write the Javascript inside the body tag and apply the CSS to body in the CSS&lt;/p&gt;</description></item><item><title>How Do You Display SNS Embed Codes in Hugo?</title><link>https://scribble.washo3.com/en/sns-embed/</link><pubDate>Tue, 07 May 2019 14:53:56 +0900</pubDate><guid>https://scribble.washo3.com/en/sns-embed/</guid><description>&lt;p&gt;Depending on the theme there may be a shortcode prepared for you, but basically it seems that most things display simply by pasting the HTML or iframe tag as it is.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Embedding a Youtube video in an article
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/w7Ft2ymGmfc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Embedding an Instagram post in an article&lt;/p&gt;</description></item><item><title>Hackmd, an Online Editor for Writing Markdown with a Preview</title><link>https://scribble.washo3.com/en/hackmd/</link><pubDate>Tue, 07 May 2019 14:21:27 +0900</pubDate><guid>https://scribble.washo3.com/en/hackmd/</guid><description>&lt;p&gt;A handy service that lets you write Markdown online with a preview
&lt;a href="https://hackmd.io" target="_blank" rel="noopener"&gt;https://hackmd.io/&lt;/a&gt;

&lt;/p&gt;
&lt;h2 id="the-good-points"&gt;The good points&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Real-time preview&lt;/li&gt;
&lt;li&gt;You can use a Dropbox or Google account&lt;/li&gt;
&lt;li&gt;It is linked with imgur. Images you upload are automatically stored on imgur&lt;/li&gt;
&lt;li&gt;Can export to Dropbox, Google Drive and Gist&lt;/li&gt;
&lt;li&gt;Can import from Dropbox, Google Drive, Gist and the clipboard&lt;/li&gt;
&lt;li&gt;Can be downloaded locally in markdown or HTML format&lt;/li&gt;
&lt;li&gt;Content from YouTube, Vimeo, Gist, SlideShare and Speakerdeck can be embedded with simple notation&lt;/li&gt;
&lt;li&gt;Sequence diagrams and flowcharts can be drawn as well&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Writing MarkDown in this online service and pasting it into a Hugo article is nice and easy&lt;/p&gt;</description></item><item><title>Rendering Math Formulas in Markdown with MathJax and KaTeX</title><link>https://scribble.washo3.com/en/hugo-math/</link><pubDate>Tue, 07 May 2019 14:17:04 +0900</pubDate><guid>https://scribble.washo3.com/en/hugo-math/</guid><description>&lt;p&gt;Depending on the theme, math rendering may already work out of the box, but if the formulas do not show up, add the following to layout/partial/footer.html inside the theme&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;text/x-mathjax-config&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;MathJax&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Hub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Config&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;tex2jax&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;inlineMath&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;$&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;$&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;\\(&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;\\)&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]]}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;/script&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;text/javascript&amp;#34;&lt;/span&gt; &lt;span class="kr"&gt;async&lt;/span&gt; &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;/script&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;KaTeX can be used to generate complex math formulas server-side.&lt;/p&gt;
&lt;p&gt;$$
\phi = \frac{(1+\sqrt{5})}{2} = 1.6180339887\cdots
$$&lt;/p&gt;
&lt;p&gt;Additional details can be found on &lt;a href="https://github.com/Khan/KaTeX" target="_blank" rel="noopener"&gt;GitHub&lt;/a&gt;

 or on the &lt;a href="http://tiddlywiki.com/plugins/tiddlywiki/katex/" target="_blank" rel="noopener"&gt;Wiki&lt;/a&gt;

.&lt;/p&gt;</description></item><item><title>Markdown Sample</title><link>https://scribble.washo3.com/en/markdown-sample/</link><pubDate>Tue, 07 May 2019 14:12:15 +0900</pubDate><guid>https://scribble.washo3.com/en/markdown-sample/</guid><description>&lt;p&gt;&lt;strong&gt;Advertisement :)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://nodeca.github.io/pica/demo/" target="_blank" rel="noopener"&gt;pica&lt;/a&gt;

&lt;/strong&gt; - high quality and fast image
resize in browser.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/nodeca/babelfish/" target="_blank" rel="noopener"&gt;babelfish&lt;/a&gt;

&lt;/strong&gt; - developer friendly
i18n with plurals support and easy syntax.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You will like those projects!&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id="h1-heading-8-"&gt;h1 Heading 8-)&lt;/h1&gt;
&lt;h2 id="h2-heading"&gt;h2 Heading&lt;/h2&gt;
&lt;h3 id="h3-heading"&gt;h3 Heading&lt;/h3&gt;
&lt;h4 id="h4-heading"&gt;h4 Heading&lt;/h4&gt;
&lt;h5 id="h5-heading"&gt;h5 Heading&lt;/h5&gt;
&lt;h6 id="h6-heading"&gt;h6 Heading&lt;/h6&gt;
&lt;h2 id="horizontal-rules"&gt;Horizontal Rules&lt;/h2&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;h2 id="typographic-replacements"&gt;Typographic replacements&lt;/h2&gt;
&lt;p&gt;Enable typographer option to see result.&lt;/p&gt;
&lt;p&gt;(c) (C) (r) (R) (tm) (TM) (p) (P) +-&lt;/p&gt;
&lt;p&gt;test.. test&amp;hellip; test&amp;hellip;.. test?&amp;hellip;.. test!&amp;hellip;.&lt;/p&gt;
&lt;p&gt;!!!!!! ???? ,, &amp;ndash; &amp;mdash;&lt;/p&gt;</description></item><item><title>Mermaid Diagram Samples in Hugo</title><link>https://scribble.washo3.com/en/mermaid-sample/</link><pubDate>Tue, 07 May 2019 00:00:00 +0000</pubDate><guid>https://scribble.washo3.com/en/mermaid-sample/</guid><description>&lt;p&gt;In Beautifulhugo, the Hugo theme, mermaid.js, the library for drawing sequence diagrams, is already built in, so simply specifying the short tag and writing in the mermaid format is enough to display a sequence diagram.&lt;/p&gt;
&lt;p&gt;If it is not built into your theme,
it is a good idea to refer to the article &lt;a href="https://qiita.com/_takeuchi_/items/35c52fd85884a83c154d" target="_blank" rel="noopener"&gt;Hugoにmermaidを組み込んでみた&lt;/a&gt;

 (in Japanese).&lt;/p&gt;
&lt;h2 id="a-simple-sample"&gt;A simple sample&lt;/h2&gt;
&lt;script defer src="https://scribble.washo3.com/js/mermaid.js"&gt;&lt;/script&gt;
&lt;script defer src="https://scribble.washo3.com/js/mermaid-render.js"&gt;&lt;/script&gt;
&lt;div class="mermaid-container" style="text-align:center"&gt;&lt;div class="theme-light"&gt;&lt;/div&gt;
 &lt;div class="theme-dark"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;pre class="mermaid-src" style="display:none"&gt;

graph LR
A[Local] --&gt;|git push| B(GitLab.com)
B --&gt; C{Netlify}

&lt;/pre&gt;

&lt;h2 id="gantt-chart"&gt;Gantt chart&lt;/h2&gt;
&lt;p&gt;Quoted from the official site
&lt;script defer src="https://scribble.washo3.com/js/mermaid.js"&gt;&lt;/script&gt;
&lt;script defer src="https://scribble.washo3.com/js/mermaid-render.js"&gt;&lt;/script&gt;
&lt;div class="mermaid-container" style="text-align:center"&gt;&lt;div class="theme-light"&gt;&lt;/div&gt;
 &lt;div class="theme-dark"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;pre class="mermaid-src" style="display:none"&gt;

gantt
 dateFormat YYYY-MM-DD
 title Adding GANTT diagram functionality to mermaid
 section A section
 Completed task :done, des1, 2014-01-06,2014-01-08
 Active task :active, des2, 2014-01-09, 3d
 Future task : des3, after des2, 5d
 Future task2 : des4, after des3, 5d
 section Critical tasks
 Completed task in the critical line :crit, done, 2014-01-06,24h
 Implement parser and jison :crit, done, after des1, 2d
 Create tests for parser :crit, active, 3d
 Future task in critical line :crit, 5d
 Create tests for renderer :2d
 Add to mermaid :1d


&lt;/pre&gt;
&lt;/p&gt;</description></item><item><title>My First Post on Hugo with GitLab and Netlify</title><link>https://scribble.washo3.com/en/fist-commit/</link><pubDate>Sat, 04 May 2019 21:34:29 +0900</pubDate><guid>https://scribble.washo3.com/en/fist-commit/</guid><description>&lt;p&gt;I tried building a site using Hugo, GitLab and Netlify&lt;/p&gt;
&lt;h2 id="building-the-site"&gt;Building the site&lt;/h2&gt;
&lt;h3 id="prerequisites"&gt;Prerequisites&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;A GitLab account is already registered&lt;/li&gt;
&lt;li&gt;A Netlify account is already registered&lt;/li&gt;
&lt;li&gt;hugo is already installed locally&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="steps"&gt;Steps&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create a repository on GitLab&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;git clone it locally&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create a new site with hugo&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Copy the directories and files created in 3. into the directory from 2.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create .gitignore&lt;/p&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;.DS_Store
public&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install the theme&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="codeblock-container"&gt;
 &lt;button class="codeblock-copy" title="Copy to clipboard"&gt;Copy&lt;/button&gt;
 &lt;div class="codeblock-content"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;$ git submodule add https://github.com/halogenica/beautifulhugo.git beautifulhugo&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The theme has been decided in advance, so copy it under the root&lt;/p&gt;</description></item><item><title>Big Image Sample</title><link>https://scribble.washo3.com/en/2017-03-07-bigimg-sample/</link><pubDate>Tue, 07 Mar 2017 00:00:00 +0000</pubDate><guid>https://scribble.washo3.com/en/2017-03-07-bigimg-sample/</guid><description>&lt;p&gt;The image banners at the top of the page are refered to as &amp;ldquo;bigimg&amp;rdquo; in this theme. They are optional, and one more more can be specified. If more than one is specified, the images rotate every 10 seconds. In the front matter, bigimgs are specified using an array of hashes.&lt;/p&gt;</description></item><item><title>Code Sample</title><link>https://scribble.washo3.com/en/2016-03-08-code-sample/</link><pubDate>Tue, 08 Mar 2016 00:00:00 +0000</pubDate><guid>https://scribble.washo3.com/en/2016-03-08-code-sample/</guid><description>&lt;p&gt;The following are two code samples using syntax highlighting.&lt;/p&gt;</description></item><item><title>Test markdown</title><link>https://scribble.washo3.com/en/2015-02-20-test-markdown/</link><pubDate>Fri, 20 Feb 2015 00:00:00 +0000</pubDate><guid>https://scribble.washo3.com/en/2015-02-20-test-markdown/</guid><description>&lt;p&gt;You can write regular &lt;a href="http://markdowntutorial.com/" target="_blank" rel="noopener"&gt;markdown&lt;/a&gt;

 here and Jekyll will automatically convert it to a nice webpage. I strongly encourage you to &lt;a href="http://markdowntutorial.com/" target="_blank" rel="noopener"&gt;take 5 minutes to learn how to write in markdown&lt;/a&gt;

 - it&amp;rsquo;ll teach you how to transform regular text into bold/italics/headings/tables/etc.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Here is some bold text&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="here-is-a-secondary-heading"&gt;Here is a secondary heading&lt;/h2&gt;
&lt;p&gt;Here&amp;rsquo;s a useless table:&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style="text-align: left"&gt;Number&lt;/th&gt;
					&lt;th style="text-align: left"&gt;Next number&lt;/th&gt;
					&lt;th style="text-align: left"&gt;Previous number&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;Five&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Six&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Four&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;Ten&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Eleven&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Nine&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;Seven&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Eight&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Six&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;Two&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Three&lt;/td&gt;
					&lt;td style="text-align: left"&gt;One&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;How about a yummy crepe?&lt;/p&gt;</description></item><item><title>About</title><link>https://scribble.washo3.com/en/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://scribble.washo3.com/en/about/</guid><description>&lt;h2 id="editorial-policy"&gt;Editorial policy&lt;/h2&gt;
&lt;div class="alert alert-success" role="success"&gt;
&lt;p&gt;Since migrating to Hugo, the goal here is not to publish as many posts as possible but to keep the existing ones substantial and accurate. &lt;p&gt;&lt;/p&gt;
As a result, older articles get rewritten fairly often.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id="about-the-content"&gt;About the content&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;This site runs on Hugo + GitHub + Cloudflare&lt;/li&gt;
&lt;li&gt;Most posts are technical notes and sample code, written first and foremost as notes to myself&lt;/li&gt;
&lt;li&gt;Recent posts are written with the help of generative AI&lt;/li&gt;
&lt;li&gt;The articles are originally written in Japanese. English pages under &lt;code&gt;/en/&lt;/code&gt; are translations, and the &lt;a href="https://scribble.washo3.com/"&gt;Japanese edition&lt;/a&gt;

 is the source of truth&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="current-hugo-theme"&gt;Current Hugo theme&lt;/h3&gt;
&lt;p&gt;Beautifulhugo: &lt;a href="https://themes.gohugo.io/beautifulhugo/" target="_blank" rel="noopener"&gt;https://themes.gohugo.io/beautifulhugo/&lt;/a&gt;

&lt;/p&gt;</description></item></channel></rss>