summaryrefslogtreecommitdiff
path: root/gemfeed
diff options
context:
space:
mode:
Diffstat (limited to 'gemfeed')
-rw-r--r--gemfeed/2008-06-26-perl-poetry.html153
-rw-r--r--gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html5
-rw-r--r--gemfeed/2010-04-09-standard-ml-and-haskell.html171
-rw-r--r--gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.html5
-rw-r--r--gemfeed/2010-05-09-the-fype-programming-language.html83
-rw-r--r--gemfeed/2011-05-07-perl-daemon-service-framework.html125
-rw-r--r--gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html193
-rw-r--r--gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html189
-rw-r--r--gemfeed/2016-04-03-offsite-backup-with-zfs.html5
-rw-r--r--gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html5
-rw-r--r--gemfeed/2016-04-16-offsite-backup-with-zfs-part2.html5
-rw-r--r--gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.html5
-rw-r--r--gemfeed/2016-11-20-object-oriented-programming-with-ansi-c.html71
-rw-r--r--gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html5
-rw-r--r--gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html5
-rw-r--r--gemfeed/2021-04-24-welcome-to-the-geminispace.html5
-rw-r--r--gemfeed/2021-05-16-personal-bash-coding-style-guide.html281
-rw-r--r--gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html41
-rw-r--r--gemfeed/2021-07-04-the-well-grounded-rubyist.html5
-rw-r--r--gemfeed/2021-08-01-on-being-pedantic-about-open-source.html5
-rw-r--r--gemfeed/2021-09-12-keep-it-simple-and-stupid.html5
-rw-r--r--gemfeed/2021-10-22-defensive-devops.html5
-rw-r--r--gemfeed/2021-11-29-bash-golf-part-1.html5
-rw-r--r--gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html5
-rw-r--r--gemfeed/2022-01-01-bash-golf-part-2.html5
-rw-r--r--gemfeed/2022-01-23-welcome-to-the-foo.zone.html5
-rw-r--r--gemfeed/2022-02-04-computer-operating-systems-i-use.html5
-rw-r--r--gemfeed/2022-03-06-the-release-of-dtail-4.0.0.html5
-rw-r--r--gemfeed/2022-04-10-creative-universe.html5
-rw-r--r--gemfeed/2022-05-27-perl-is-still-a-great-choice.html5
-rw-r--r--gemfeed/2022-06-15-sweating-the-small-stuff.html5
-rw-r--r--gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.html5
-rw-r--r--gemfeed/2022-08-27-gemtexter-1.1.0-lets-gemtext-again.html39
-rw-r--r--gemfeed/2022-09-30-after-a-bad-nights-sleep.html5
-rw-r--r--gemfeed/2022-10-30-installing-dtail-on-openbsd.html5
-rw-r--r--gemfeed/2022-11-24-i-tried-emacs-but-i-switched-back-to-neovim.html13
-rw-r--r--gemfeed/2022-12-24-ultrarelearning-java-my-takeaways.html5
-rw-r--r--gemfeed/2023-01-23-why-grapheneos-rox.html5
-rw-r--r--gemfeed/2023-02-26-how-to-shut-down-after-work.html5
-rw-r--r--gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.html5
-rw-r--r--gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.html23
-rw-r--r--gemfeed/2023-04-01-never-split-the-difference-book-notes.html5
-rw-r--r--gemfeed/2023-05-01-unveiling-guprecords:-uptime-records-with-raku.html7
-rw-r--r--gemfeed/2023-05-06-the-obstacle-is-the-way-book-notes.html5
-rw-r--r--gemfeed/2023-06-01-kiss-server-monitoring-with-gogios.html107
-rw-r--r--gemfeed/2023-07-17-career-guide-and-soft-skills-book-notes.html5
-rw-r--r--gemfeed/2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.html15
-rw-r--r--gemfeed/2023-08-18-site-reliability-engineering-part-1.html5
-rw-r--r--gemfeed/2023-09-25-dtail-usage-examples.html111
-rw-r--r--gemfeed/2023-10-29-kiss-static-web-photo-albums-with-photoalbum.sh.html123
-rw-r--r--gemfeed/2023-11-11-mind-management-book-notes.html5
-rw-r--r--gemfeed/2023-11-19-site-reliability-engineering-part-2.html5
-rw-r--r--gemfeed/2023-12-10-bash-golf-part-3.html243
-rw-r--r--gemfeed/2024-01-09-site-reliability-engineering-part-3.html5
-rw-r--r--gemfeed/2024-01-13-one-reason-why-i-love-openbsd.html15
-rw-r--r--gemfeed/2024-02-04-from-babylon5.buetow.org-to-.cloud.html5
-rw-r--r--gemfeed/2024-03-03-a-fine-fyne-android-app-for-quickly-logging-ideas-programmed-in-golang.html5
-rw-r--r--gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.html205
-rw-r--r--gemfeed/2024-05-01-slow-productivity-book-notes.html5
-rw-r--r--gemfeed/2024-05-03-projects-i-currently-dont-have-time-for.html17
-rw-r--r--gemfeed/2024-06-23-terminal-multiplexing-with-tmux.html169
-rw-r--r--gemfeed/2024-07-05-random-weird-things.html189
-rw-r--r--gemfeed/2024-07-07-the-stoic-challenge-book-notes.html9
-rw-r--r--gemfeed/2024-08-05-typing-127.1-words-per-minute.html5
-rw-r--r--gemfeed/2024-09-07-projects-i-support.html5
-rw-r--r--gemfeed/2024-09-07-site-reliability-engineering-part-4.html5
-rw-r--r--gemfeed/2024-10-02-gemtexter-3.0.0-lets-gemtext-again-4.html7
-rw-r--r--gemfeed/2024-10-24-staff-engineer-book-notes.html5
-rw-r--r--gemfeed/2024-11-17-f3s-kubernetes-with-freebsd-part-1.html5
-rw-r--r--gemfeed/2024-12-03-f3s-kubernetes-with-freebsd-part-2.html147
-rw-r--r--gemfeed/2024-12-15-random-helix-themes.html115
-rw-r--r--gemfeed/DRAFT-f3s-kubernetes-with-freebsd-hardware-setup.html5
-rw-r--r--gemfeed/DRAFT-site-reliability-engineering.html5
-rw-r--r--gemfeed/DRAFT-summary-for-202410-202411-202410.html332
-rw-r--r--gemfeed/atom.xml1400
-rw-r--r--gemfeed/index.html5
76 files changed, 2691 insertions, 2137 deletions
diff --git a/gemfeed/2008-06-26-perl-poetry.html b/gemfeed/2008-06-26-perl-poetry.html
index 58815619..7108afdc 100644
--- a/gemfeed/2008-06-26-perl-poetry.html
+++ b/gemfeed/2008-06-26-perl-poetry.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2008-06-26-perl-poetry.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2008-06-26-perl-poetry.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='perl-poetry'>Perl Poetry</h1><br />
<br />
<span class='quote'>Published at 2008-06-26T21:43:51+01:00; Updated at 2021-05-04</span><br />
@@ -56,44 +59,44 @@ _~~|~/_|_|__/|~~~~~~~ | / ~~~~~ | | ~~~~~~~~
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/perl</font></i>
+<pre><i><font color="silver">#!/usr/bin/perl</font></i>
-<i><font color="#ababab"># (C) 2006 by Paul C. Buetow</font></i>
+<i><font color="silver"># (C) 2006 by Paul C. Buetow</font></i>
-<b><font color="#ffffff">goto</font></b><font color="#ff0000"> library </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> study </font><font color="#ff0000">$math</font><font color="#F3E651">;</font>
-<font color="#ff0000">BEGIN </font><font color="#F3E651">{</font><font color="#ff0000"> </font><b><font color="#ffffff">s</font></b><font color="#bb00ff">/earching/ books/</font><font color="#ff0000"> </font>
-<b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">read</font></b><font color="#ff0000"> </font><font color="#ff0000">$them</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">$at</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">$the</font><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#ff0000"> library</font><font color="#F3E651">:</font>
+<b><u><font color="#000000">goto</font></u></b> library <b><u><font color="#000000">for</font></u></b> study $math;
+BEGIN { <b><u><font color="#000000">s</font></u></b><font color="#808080">/earching/ books/</font>
+<b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">read</font></u></b> $them, $at, $the } library:
-<b><font color="#ffffff">our</font></b><font color="#ff0000"> </font><font color="#ff0000">$topics</font><font color="#F3E651">,</font><font color="#ff0000"> </font><b><font color="#ffffff">cos</font></b><font color="#ff0000"> </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> tan</font><font color="#F3E651">,</font><font color="#ff0000"> </font>
-<b><font color="#ffffff">require</font></b><font color="#ff0000"> strict</font><font color="#F3E651">;</font><font color="#ff0000"> </font><font color="#ababab">import</font><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> of</font><font color="#F3E651">,</font><font color="#ff0000"> </font><b><font color="#ffffff">tied</font></b><font color="#ff0000"> </font><font color="#ff0000">$patience</font><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#F3E651">;</font>
+<b><u><font color="#000000">our</font></u></b> $topics, <b><u><font color="#000000">cos</font></u></b> <b><u><font color="#000000">and</font></u></b> tan,
+<b><u><font color="#000000">require</font></u></b> strict; <b><u><font color="#000000">import</font></u></b> { of, <b><u><font color="#000000">tied</font></u></b> $patience };
-<b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> </font><b><font color="#ffffff">int</font></b><font color="#bb00ff">'egrate'</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">sub</font></b><font color="#ff0000"> trade</font><font color="#F3E651">;</font><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#F3E651">;</font>
-<b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> </font><b><font color="#ffffff">exp</font></b><font color="#bb00ff">'onentize'</font><font color="#ff0000"> </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">abs</font></b><font color="#bb00ff">'olutize'</font><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#F3E651">;</font>
-<font color="#ff0000">study </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> study </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> study </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> study</font><font color="#F3E651">;</font>
+<b><u><font color="#000000">do</font></u></b> { <b><u><font color="#000000">int</font></u></b><font color="#808080">'egrate'</font>; <b><u><font color="#000000">sub</font></u></b> trade; };
+<b><u><font color="#000000">do</font></u></b> { <b><u><font color="#000000">exp</font></u></b><font color="#808080">'onentize'</font> <b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">abs</font></u></b><font color="#808080">'olutize'</font> };
+study <b><u><font color="#000000">and</font></u></b> study <b><u><font color="#000000">and</font></u></b> study <b><u><font color="#000000">and</font></u></b> study;
-<b><font color="#ffffff">foreach</font></b><font color="#ff0000"> </font><font color="#ff0000">$topic</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#F3E651">{</font><font color="#ff0000">of</font><font color="#F3E651">,</font><font color="#ff0000"> math</font><font color="#F3E651">}</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000">you</font><font color="#F3E651">,</font><font color="#ff0000"> </font><b><font color="#ffffff">m</font></b><font color="#ff0000">/ay /</font><font color="#ff0000">go</font><font color="#F3E651">,</font><font color="#ff0000"> to</font><font color="#F3E651">,</font><font color="#ff0000"> limits </font><font color="#F3E651">}</font>
+<b><u><font color="#000000">foreach</font></u></b> $topic ({of, math}) {
+you, <b><u><font color="#000000">m</font></u></b>/ay /go, to, limits }
-<b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> not </font><b><font color="#ffffff">qw</font></b><font color="#bb00ff">/erk /</font><font color="#ff0000"> </font><b><font color="#ffffff">unless</font></b><font color="#ff0000"> </font><font color="#ff0000">$success</font><font color="#ff0000"> </font>
-<b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">m</font></b><font color="#ff0000">/ove /</font><font color="#ff0000">o</font><font color="#F3E651">;</font><font color="#ff0000">$n</font><font color="#ff0000"> </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> study </font><font color="#F3E651">}</font><font color="#F3E651">;</font>
+<b><u><font color="#000000">do</font></u></b> { not <b><u><font color="#000000">qw</font></u></b><font color="#808080">/erk /</font> <b><u><font color="#000000">unless</font></u></b> $success
+<b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">m</font></u></b>/ove /o;$n <b><u><font color="#000000">and</font></u></b> study };
-<b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> </font><b><font color="#ffffff">int</font></b><font color="#bb00ff">'egrate'</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">sub</font></b><font color="#ff0000"> trade</font><font color="#F3E651">;</font><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#F3E651">;</font>
-<b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> </font><b><font color="#ffffff">exp</font></b><font color="#bb00ff">'onentize'</font><font color="#ff0000"> </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">abs</font></b><font color="#bb00ff">'olutize'</font><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#F3E651">;</font>
-<font color="#ff0000">study </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> study </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> study </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> study</font><font color="#F3E651">;</font>
+<b><u><font color="#000000">do</font></u></b> { <b><u><font color="#000000">int</font></u></b><font color="#808080">'egrate'</font>; <b><u><font color="#000000">sub</font></u></b> trade; };
+<b><u><font color="#000000">do</font></u></b> { <b><u><font color="#000000">exp</font></u></b><font color="#808080">'onentize'</font> <b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">abs</font></u></b><font color="#808080">'olutize'</font> };
+study <b><u><font color="#000000">and</font></u></b> study <b><u><font color="#000000">and</font></u></b> study <b><u><font color="#000000">and</font></u></b> study;
-<b><font color="#ffffff">grep</font></b><font color="#ff0000"> </font><font color="#bb00ff">/all/</font><font color="#F3E651">,</font><font color="#ff0000"> </font><b><font color="#ffffff">exp</font></b><font color="#bb00ff">'onents'</font><font color="#ff0000"> </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">cos</font></b><font color="#bb00ff">'inuses'</font><font color="#F3E651">;</font>
-<font color="#bb00ff">/seek results/</font><font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> </font><font color="#ff0000">@all</font><font color="#F3E651">,</font><font color="#ff0000"> </font><b><font color="#ffffff">log</font></b><font color="#bb00ff">'4rithms'</font><font color="#F3E651">;</font>
+<b><u><font color="#000000">grep</font></u></b> <font color="#808080">/all/</font>, <b><u><font color="#000000">exp</font></u></b><font color="#808080">'onents'</font> <b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">cos</font></u></b><font color="#808080">'inuses'</font>;
+<font color="#808080">/seek results/</font> <b><u><font color="#000000">for</font></u></b> @all, <b><u><font color="#000000">log</font></u></b><font color="#808080">'4rithms'</font>;
-<font color="#bb00ff">'you'</font><font color="#ff0000"> </font><font color="#F3E651">=~</font><font color="#ff0000"> </font><b><font color="#ffffff">m</font></b><font color="#ff0000">/ay /</font><font color="#ff0000">go</font><font color="#F3E651">,</font><font color="#ff0000"> not home </font>
-<b><font color="#ffffff">unless</font></b><font color="#ff0000"> </font><b><font color="#ffffff">each</font></b><font color="#ff0000"> </font><font color="#ff0000">%book</font><font color="#ff0000"> ne</font><i><font color="#ababab">#ars</font></i>
-<font color="#ff0000">$completion</font><font color="#F3E651">;</font>
+<font color="#808080">'you'</font> =~ <b><u><font color="#000000">m</font></u></b>/ay /go, not home
+<b><u><font color="#000000">unless</font></u></b> <b><u><font color="#000000">each</font></u></b> %book ne<i><font color="silver">#ars</font></i>
+$completion;
-<b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> </font><b><font color="#ffffff">int</font></b><font color="#bb00ff">'egrate'</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">sub</font></b><font color="#ff0000"> trade</font><font color="#F3E651">;</font><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#F3E651">;</font>
-<b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> </font><b><font color="#ffffff">exp</font></b><font color="#bb00ff">'onentize'</font><font color="#ff0000"> </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">abs</font></b><font color="#bb00ff">'olutize'</font><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#F3E651">;</font>
+<b><u><font color="#000000">do</font></u></b> { <b><u><font color="#000000">int</font></u></b><font color="#808080">'egrate'</font>; <b><u><font color="#000000">sub</font></u></b> trade; };
+<b><u><font color="#000000">do</font></u></b> { <b><u><font color="#000000">exp</font></u></b><font color="#808080">'onentize'</font> <b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">abs</font></u></b><font color="#808080">'olutize'</font> };
-<i><font color="#ababab">#at</font></i>
-<font color="#ff0000">home</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">//ig,'nore', time and sleep $very =~ s/tr/on/</font><b><font color="#ffffff">g</font></b><font color="#F3E651">;</font>
-<font color="#ff0000">__END__</font>
+<i><font color="silver">#at</font></i>
+home: <font color="#808080">//ig,'nore', time and sleep $very =~ s/tr/on/</font><b><u><font color="#000000">g</font></u></b>;
+__END__
</pre>
<br />
@@ -103,47 +106,47 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/perl</font></i>
+<pre><i><font color="silver">#!/usr/bin/perl</font></i>
-<i><font color="#ababab"># (C) 2006 by Paul C. Buetow</font></i>
+<i><font color="silver"># (C) 2006 by Paul C. Buetow</font></i>
-<font color="#ff0000">Christmas</font><font color="#F3E651">:</font><font color="#F3E651">{</font><font color="#ff0000">time</font><font color="#F3E651">;</font><i><font color="#ababab">#!!!</font></i>
+Christmas:{time;<i><font color="silver">#!!!</font></i>
-<font color="#ff0000">Children</font><font color="#F3E651">:</font><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><b><font color="#ffffff">tell</font></b><font color="#ff0000"> </font><font color="#ff0000">$wishes</font><font color="#F3E651">;</font>
+Children: <b><u><font color="#000000">do</font></u></b> <b><u><font color="#000000">tell</font></u></b> $wishes;
-<font color="#ff0000">Santa</font><font color="#F3E651">:</font><font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> </font><font color="#ff0000">$each</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">@children</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> </font>
-<font color="#ff0000">BEGIN </font><font color="#F3E651">{</font><font color="#ff0000"> </font><b><font color="#ffffff">read</font></b><font color="#ff0000"> </font><font color="#ff0000">$each</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">$their</font><font color="#F3E651">,</font><font color="#ff0000"> wishes </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> study them</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">use</font></b><font color="#ff0000"> Memoize</font><i><font color="#ababab">#ing</font></i>
+Santa: <b><u><font color="#000000">for</font></u></b> $each (@children) {
+BEGIN { <b><u><font color="#000000">read</font></u></b> $each, $their, wishes <b><u><font color="#000000">and</font></u></b> study them; <b><u><font color="#000000">use</font></u></b> Memoize<i><font color="silver">#ing</font></i>
-<font color="#F3E651">}</font><font color="#ff0000"> </font><b><font color="#ffffff">use</font></b><font color="#ff0000"> constant gift</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">'wrapping'</font><font color="#F3E651">;</font><font color="#ff0000"> </font>
-<b><font color="#ffffff">package</font></b><font color="#ff0000"> Gifts</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">pack</font></b><font color="#ff0000"> </font><font color="#ff0000">$each</font><font color="#F3E651">,</font><font color="#ff0000"> gift </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">bless</font></b><font color="#ff0000"> </font><font color="#ff0000">$each</font><font color="#ff0000"> </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">goto</font></b><font color="#ff0000"> deliver</font>
-<font color="#ff0000">or </font><b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><font color="#ababab">import</font><font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> not </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> </font><font color="#ff0000">$available</font><font color="#F3E651">,!!!</font><font color="#ff0000"> HO</font><font color="#F3E651">,</font><font color="#ff0000"> HO</font><font color="#F3E651">,</font><font color="#ff0000"> HO</font><font color="#F3E651">;</font>
+} <b><u><font color="#000000">use</font></u></b> constant gift, <font color="#808080">'wrapping'</font>;
+<b><u><font color="#000000">package</font></u></b> Gifts; <b><u><font color="#000000">pack</font></u></b> $each, gift <b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">bless</font></u></b> $each <b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">goto</font></u></b> deliver
+or <b><u><font color="#000000">do</font></u></b> <b><u><font color="#000000">import</font></u></b> <b><u><font color="#000000">if</font></u></b> not <b><u><font color="#000000">local</font></u></b> $available,!!! HO, HO, HO;
-<b><font color="#ffffff">redo</font></b><font color="#ff0000"> Santa</font><font color="#F3E651">,</font><font color="#ff0000"> </font><b><font color="#ffffff">pipe</font></b><font color="#ff0000"> </font><font color="#ff0000">$gifts</font><font color="#F3E651">,</font><font color="#ff0000"> to_childs</font><font color="#F3E651">;</font>
-<b><font color="#ffffff">redo</font></b><font color="#ff0000"> Santa </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><b><font color="#ffffff">last</font></b><font color="#ff0000"> one</font><font color="#F3E651">,</font><font color="#ff0000"> is</font><font color="#F3E651">,</font><font color="#ff0000"> delivered</font><font color="#F3E651">;</font><font color="#ff0000"> </font>
+<b><u><font color="#000000">redo</font></u></b> Santa, <b><u><font color="#000000">pipe</font></u></b> $gifts, to_childs;
+<b><u><font color="#000000">redo</font></u></b> Santa <b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">do</font></u></b> <b><u><font color="#000000">return</font></u></b> <b><u><font color="#000000">if</font></u></b> <b><u><font color="#000000">last</font></u></b> one, is, delivered;
-<font color="#ff0000">deliver</font><font color="#F3E651">:</font><font color="#ff0000"> gift </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">require</font></b><font color="#ff0000"> diagnostics </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><b><font color="#ffffff">our</font></b><font color="#ff0000"> </font><font color="#ff0000">$gifts</font><font color="#ff0000"> </font><font color="#F3E651">,</font><font color="#ff0000">not break</font><font color="#F3E651">;</font>
-<b><font color="#ffffff">do</font></b><font color="#F3E651">{</font><font color="#ff0000"> </font><b><font color="#ffffff">use</font></b><font color="#ff0000"> NEXT</font><font color="#F3E651">;</font><font color="#ff0000"> time</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">tied</font></b><font color="#ff0000"> </font><font color="#ff0000">$gifts</font><font color="#F3E651">}</font><font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> broken </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">dump</font></b><font color="#ff0000"> the</font><font color="#F3E651">,</font><font color="#ff0000"> broken</font><font color="#F3E651">,</font><font color="#ff0000"> ones</font><font color="#F3E651">;</font>
-<font color="#ff0000">The_children</font><font color="#F3E651">:</font><font color="#ff0000"> </font><b><font color="#ffffff">sleep</font></b><font color="#ff0000"> </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">wait</font></b><font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#ffffff">each</font></b><font color="#ff0000"> </font><font color="#ff0000">%gift</font><font color="#F3E651">)</font><font color="#ff0000"> </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> try </font><font color="#F3E651">{</font><font color="#ff0000"> to </font><font color="#F3E651">=&gt;</font><font color="#ff0000"> </font><b><font color="#ffffff">untie</font></b><font color="#ff0000"> </font><font color="#ff0000">$gifts</font><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#F3E651">;</font>
+deliver: gift <b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">require</font></u></b> diagnostics <b><u><font color="#000000">if</font></u></b> <b><u><font color="#000000">our</font></u></b> $gifts ,not break;
+<b><u><font color="#000000">do</font></u></b>{ <b><u><font color="#000000">use</font></u></b> NEXT; time; <b><u><font color="#000000">tied</font></u></b> $gifts} <b><u><font color="#000000">if</font></u></b> broken <b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">dump</font></u></b> the, broken, ones;
+The_children: <b><u><font color="#000000">sleep</font></u></b> <b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">wait</font></u></b> <b><u><font color="#000000">for</font></u></b> (<b><u><font color="#000000">each</font></u></b> %gift) <b><u><font color="#000000">and</font></u></b> try { to =&gt; <b><u><font color="#000000">untie</font></u></b> $gifts };
-<b><font color="#ffffff">redo</font></b><font color="#ff0000"> Santa</font><font color="#F3E651">,</font><font color="#ff0000"> </font><b><font color="#ffffff">pipe</font></b><font color="#ff0000"> </font><font color="#ff0000">$gifts</font><font color="#F3E651">,</font><font color="#ff0000"> to_childs</font><font color="#F3E651">;</font>
-<b><font color="#ffffff">redo</font></b><font color="#ff0000"> Santa </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><b><font color="#ffffff">last</font></b><font color="#ff0000"> one</font><font color="#F3E651">,</font><font color="#ff0000"> is</font><font color="#F3E651">,</font><font color="#ff0000"> delivered</font><font color="#F3E651">;</font><font color="#ff0000"> </font>
+<b><u><font color="#000000">redo</font></u></b> Santa, <b><u><font color="#000000">pipe</font></u></b> $gifts, to_childs;
+<b><u><font color="#000000">redo</font></u></b> Santa <b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">do</font></u></b> <b><u><font color="#000000">return</font></u></b> <b><u><font color="#000000">if</font></u></b> <b><u><font color="#000000">last</font></u></b> one, is, delivered;
-<font color="#ff0000">The_christmas_tree</font><font color="#F3E651">:</font><font color="#ff0000"> formline </font><b><font color="#ffffff">s</font></b><font color="#bb00ff">/ /childrens/</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">$gifts</font><font color="#F3E651">;</font>
-<b><font color="#ffffff">alarm</font></b><font color="#ff0000"> </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">warn</font></b><font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> not </font><b><font color="#ffffff">exists</font></b><font color="#ff0000"> </font><font color="#ff0000">$Christmas</font><font color="#F3E651">{</font><font color="#ff0000"> tree</font><font color="#F3E651">}</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">@t</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">$ENV</font><font color="#F3E651">{</font><font color="#ff0000">HOME</font><font color="#F3E651">}</font><font color="#F3E651">;</font><font color="#ff0000"> </font>
-<b><font color="#ffffff">write</font></b><font color="#ff0000"> </font><font color="#F3E651">&lt;&lt;</font><font color="#ff0000">EMail</font>
-<font color="#ff0000"> to the parents to buy a new christmas tree</font><font color="#F3E651">!!!!</font><font color="#bb00ff">111</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> send the</font>
-<font color="#ff0000">EMail</font>
-<font color="#F3E651">;</font><b><font color="#ffffff">wait</font></b><font color="#ff0000"> </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">redo</font></b><font color="#ff0000"> deliver until </font><b><font color="#ffffff">defined</font></b><font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> </font><font color="#ff0000">$tree</font><font color="#F3E651">;</font>
+The_christmas_tree: formline <b><u><font color="#000000">s</font></u></b><font color="#808080">/ /childrens/</font>, $gifts;
+<b><u><font color="#000000">alarm</font></u></b> <b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">warn</font></u></b> <b><u><font color="#000000">if</font></u></b> not <b><u><font color="#000000">exists</font></u></b> $Christmas{ tree}, @t, $ENV{HOME};
+<b><u><font color="#000000">write</font></u></b> &lt;&lt;EMail
+ to the parents to buy a new christmas tree!!!!<font color="#000000">111</font>
+ <b><u><font color="#000000">and</font></u></b> send the
+EMail
+;<b><u><font color="#000000">wait</font></u></b> <b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">redo</font></u></b> deliver until <b><u><font color="#000000">defined</font></u></b> <b><u><font color="#000000">local</font></u></b> $tree;
-<b><font color="#ffffff">redo</font></b><font color="#ff0000"> Santa</font><font color="#F3E651">,</font><font color="#ff0000"> </font><b><font color="#ffffff">pipe</font></b><font color="#ff0000"> </font><font color="#ff0000">$gifts</font><font color="#F3E651">,</font><font color="#ff0000"> to_childs</font><font color="#F3E651">;</font>
-<b><font color="#ffffff">redo</font></b><font color="#ff0000"> Santa </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><b><font color="#ffffff">last</font></b><font color="#ff0000"> one</font><font color="#F3E651">,</font><font color="#ff0000"> is</font><font color="#F3E651">,</font><font color="#ff0000"> delivered </font><font color="#F3E651">;</font><font color="#F3E651">}</font>
+<b><u><font color="#000000">redo</font></u></b> Santa, <b><u><font color="#000000">pipe</font></u></b> $gifts, to_childs;
+<b><u><font color="#000000">redo</font></u></b> Santa <b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">do</font></u></b> <b><u><font color="#000000">return</font></u></b> <b><u><font color="#000000">if</font></u></b> <b><u><font color="#000000">last</font></u></b> one, is, delivered ;}
-<font color="#ff0000">END </font><font color="#F3E651">{}</font><font color="#ff0000"> </font><b><font color="#ffffff">our</font></b><font color="#ff0000"> </font><font color="#ff0000">$mission</font><font color="#ff0000"> </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><b><font color="#ffffff">sleep</font></b><font color="#ff0000"> until </font><b><font color="#ffffff">next</font></b><font color="#ff0000"> Christmas </font><font color="#F3E651">;</font><font color="#F3E651">}</font>
+END {} <b><u><font color="#000000">our</font></u></b> $mission <b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">do</font></u></b> <b><u><font color="#000000">sleep</font></u></b> until <b><u><font color="#000000">next</font></u></b> Christmas ;}
-<font color="#ff0000">__END__</font>
+__END__
-<font color="#ff0000">This is perl</font><font color="#F3E651">,</font><font color="#ff0000"> v5</font><font color="#F3E651">.</font><font color="#bb00ff">8.8</font><font color="#ff0000"> built </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> i386</font><font color="#F3E651">-</font><font color="#ff0000">freebsd</font><font color="#F3E651">-</font><font color="#ff0000">64int</font>
+This is perl, v5.<font color="#000000">8.8</font> built <b><u><font color="#000000">for</font></u></b> i386-freebsd-64int
</pre>
<br />
<h2 style='display: inline' id='shoppingpl'>shopping.pl</h2><br />
@@ -152,35 +155,35 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/perl</font></i>
+<pre><i><font color="silver">#!/usr/bin/perl</font></i>
-<i><font color="#ababab"># (C) 2007 by Paul C. Buetow</font></i>
+<i><font color="silver"># (C) 2007 by Paul C. Buetow</font></i>
-<font color="#ff0000">BEGIN</font><font color="#F3E651">{}</font><font color="#ff0000"> </font><b><font color="#ffffff">goto</font></b><font color="#ff0000"> mall </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> </font><font color="#ff0000">$shopping</font><font color="#F3E651">;</font><font color="#ff0000"> </font>
+BEGIN{} <b><u><font color="#000000">goto</font></u></b> mall <b><u><font color="#000000">for</font></u></b> $shopping;
-<b><font color="#ffffff">m</font></b><font color="#ff0000">/y/</font><font color="#F3E651">;</font><font color="#ff0000"> mall</font><font color="#F3E651">:</font><font color="#ff0000"> </font><b><font color="#ffffff">seek</font></b><font color="#ff0000">$s</font><font color="#F3E651">,</font><font color="#ff0000"> cool </font><font color="#7bc710">products</font><font color="#F3E651">(),</font><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> to </font><font color="#F3E651">=&gt;</font><font color="#ff0000"> </font><font color="#ff0000">$sell</font><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#F3E651">;</font>
-<b><font color="#ffffff">for</font></b><font color="#ff0000"> </font><font color="#ff0000">$their</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">@business</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> to</font><font color="#F3E651">:;</font><font color="#ff0000"> earn</font><font color="#F3E651">:;</font><font color="#ff0000"> a</font><font color="#F3E651">:;</font><font color="#ff0000"> lot</font><font color="#F3E651">:;</font><font color="#ff0000"> of</font><font color="#F3E651">:;</font><font color="#ff0000"> money</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#F3E651">}</font>
+<b><u><font color="#000000">m</font></u></b>/y/; mall: <b><u><font color="#000000">seek</font></u></b>$s, cool products(), { to =&gt; $sell };
+<b><u><font color="#000000">for</font></u></b> $their (@business) { to:; earn:; a:; lot:; of:; money: }
-<b><font color="#ffffff">do</font></b><font color="#ff0000"> not </font><b><font color="#ffffff">goto</font></b><font color="#ff0000"> home </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">exit</font></b><font color="#ff0000"> mall </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><b><font color="#ffffff">exists</font></b><font color="#ff0000"> </font><font color="#ff0000">$new</font><font color="#F3E651">{</font><font color="#ff0000">product</font><font color="#F3E651">}</font><font color="#F3E651">;</font>
-<b><font color="#ffffff">foreach</font></b><font color="#ff0000"> </font><font color="#ff0000">$of</font><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#ffffff">q</font></b><font color="#bb00ff">(uality rich products)</font><font color="#F3E651">)</font><font color="#F3E651">{}</font><font color="#ff0000"> </font><b><font color="#ffffff">package</font></b><font color="#ff0000"> products</font><font color="#F3E651">;</font><font color="#ff0000"> </font>
+<b><u><font color="#000000">do</font></u></b> not <b><u><font color="#000000">goto</font></u></b> home <b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">exit</font></u></b> mall <b><u><font color="#000000">if</font></u></b> <b><u><font color="#000000">exists</font></u></b> $new{product};
+<b><u><font color="#000000">foreach</font></u></b> $of (<b><u><font color="#000000">q</font></u></b><font color="#808080">(uality rich products)</font>){} <b><u><font color="#000000">package</font></u></b> products;
-<b><font color="#ffffff">our</font></b><font color="#ff0000"> </font><font color="#ff0000">$news</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><b><font color="#ffffff">tell</font></b><font color="#ff0000"> cool </font><font color="#7bc710">products</font><font color="#F3E651">()</font><font color="#ff0000"> </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b><font color="#F3E651">{</font><font color="#ff0000"> </font><b><font color="#ffffff">sub</font></b><i><font color="#ababab">#tract</font></i>
-<font color="#ff0000">cool</font><font color="#F3E651">{</font><font color="#ff0000"> </font><font color="#ff0000">$products</font><font color="#ff0000"> </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b><font color="#ff0000"> </font><font color="#ff0000">@the</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">@bad</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">@ones</font><font color="#F3E651">;</font>
+<b><u><font color="#000000">our</font></u></b> $news; <b><u><font color="#000000">do</font></u></b> <b><u><font color="#000000">tell</font></u></b> cool products() <b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">do</font></u></b>{ <b><u><font color="#000000">sub</font></u></b><i><font color="silver">#tract</font></i>
+cool{ $products <b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">shift</font></u></b> @the, @bad, @ones;
-<b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><b><font color="#ffffff">bless</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><b><font color="#ffffff">q</font></b><font color="#bb00ff">(uality)</font><font color="#F3E651">],</font><font color="#ff0000"> </font><font color="#ff0000">$products</font><font color="#ff0000"> </font>
-<b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> not </font><b><font color="#ffffff">undef</font></b><font color="#ff0000"> </font><font color="#ff0000">$stuff</font><font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#7bc710">not</font><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#ffffff">local</font></b><font color="#ff0000"> </font><font color="#ff0000">$available</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">}}</font><font color="#F3E651">;</font>
+<b><u><font color="#000000">do</font></u></b> <b><u><font color="#000000">bless</font></u></b> [<b><u><font color="#000000">q</font></u></b><font color="#808080">(uality)</font>], $products
+<b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">return</font></u></b> not <b><u><font color="#000000">undef</font></u></b> $stuff <b><u><font color="#000000">if</font></u></b> not (<b><u><font color="#000000">local</font></u></b> $available) }};
-<b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> study </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> study </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> study </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> cool </font><font color="#7bc710">products</font><font color="#F3E651">()</font><font color="#ff0000"> </font><font color="#F3E651">}</font>
-<b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> </font><b><font color="#ffffff">seek</font></b><font color="#ff0000"> </font><font color="#ff0000">$all</font><font color="#F3E651">,</font><font color="#ff0000"> cool </font><font color="#7bc710">products</font><font color="#F3E651">(),</font><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> to </font><font color="#F3E651">=&gt;</font><font color="#ff0000"> </font><font color="#ff0000">$buy</font><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#F3E651">;</font>
+<b><u><font color="#000000">do</font></u></b> { study <b><u><font color="#000000">and</font></u></b> study <b><u><font color="#000000">and</font></u></b> study <b><u><font color="#000000">for</font></u></b> cool products() }
+<b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">do</font></u></b> { <b><u><font color="#000000">seek</font></u></b> $all, cool products(), { to =&gt; $buy } };
-<b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> </font><b><font color="#ffffff">write</font></b><font color="#ff0000"> </font><font color="#ff0000">$them</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">$down</font><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#ff0000"> </font><b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> order</font><font color="#F3E651">:</font><font color="#ff0000"> </font><b><font color="#ffffff">foreach</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">@case</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> </font><b><font color="#ffffff">package</font></b><font color="#ff0000"> </font><b><font color="#ffffff">s</font></b><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#F3E651">;</font>
-<b><font color="#ffffff">goto</font></b><font color="#ff0000"> home </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> not </font><b><font color="#ffffff">exists</font></b><font color="#ff0000"> </font><font color="#ff0000">$more</font><font color="#F3E651">{</font><font color="#ff0000">money</font><font color="#F3E651">}</font><font color="#ff0000"> or </font><b><font color="#ffffff">die</font></b><font color="#ff0000"> </font><b><font color="#ffffff">q</font></b><font color="#bb00ff">(uerying)</font><font color="#ff0000"> </font><font color="#F3E651">;</font><b><font color="#ffffff">for</font></b><font color="#F3E651">(</font><font color="#ff0000"> </font><font color="#ff0000">@money</font><font color="#F3E651">)</font><font color="#F3E651">{}</font><font color="#F3E651">;</font>
+<b><u><font color="#000000">do</font></u></b> { <b><u><font color="#000000">write</font></u></b> $them, $down } <b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">do</font></u></b> { order: <b><u><font color="#000000">foreach</font></u></b> (@case) { <b><u><font color="#000000">package</font></u></b> <b><u><font color="#000000">s</font></u></b> } };
+<b><u><font color="#000000">goto</font></u></b> home <b><u><font color="#000000">if</font></u></b> not <b><u><font color="#000000">exists</font></u></b> $more{money} or <b><u><font color="#000000">die</font></u></b> <b><u><font color="#000000">q</font></u></b><font color="#808080">(uerying)</font> ;<b><u><font color="#000000">for</font></u></b>( @money){};
-<font color="#ff0000">at</font><font color="#F3E651">:;</font><font color="#ff0000">home</font><font color="#F3E651">:</font><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> END</font><font color="#F3E651">{}</font><font color="#ff0000"> </font><b><font color="#ffffff">and</font></b><font color="#F3E651">:;</font><font color="#ff0000"> rest</font><font color="#F3E651">:;</font><font color="#ff0000"> a</font><font color="#F3E651">:;</font><font color="#ff0000"> bit</font><font color="#F3E651">:</font><font color="#ff0000"> </font><b><font color="#ffffff">exit</font></b><font color="#ff0000"> </font><font color="#ff0000">$shopping</font><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#ff0000"> </font>
-<b><font color="#ffffff">and</font></b><font color="#ff0000"> </font><b><font color="#ffffff">sleep</font></b><font color="#ff0000"> until </font><b><font color="#ffffff">unpack</font></b><font color="#ff0000">$ing</font><font color="#F3E651">,</font><font color="#ff0000"> cool </font><font color="#7bc710">products</font><font color="#F3E651">();</font>
+at:;home: <b><u><font color="#000000">do</font></u></b> { END{} <b><u><font color="#000000">and</font></u></b>:; rest:; a:; bit: <b><u><font color="#000000">exit</font></u></b> $shopping }
+<b><u><font color="#000000">and</font></u></b> <b><u><font color="#000000">sleep</font></u></b> until <b><u><font color="#000000">unpack</font></u></b>$ing, cool products();
-<font color="#ff0000">__END__</font>
-<font color="#ff0000">This is perl</font><font color="#F3E651">,</font><font color="#ff0000"> v5</font><font color="#F3E651">.</font><font color="#bb00ff">8.8</font><font color="#ff0000"> built </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> i386</font><font color="#F3E651">-</font><font color="#ff0000">freebsd</font><font color="#F3E651">-</font><font color="#ff0000">64int</font>
+__END__
+This is perl, v5.<font color="#000000">8.8</font> built <b><u><font color="#000000">for</font></u></b> i386-freebsd-64int
</pre>
<br />
<h2 style='display: inline' id='more'>More...</h2><br />
@@ -199,7 +202,7 @@ http://www.gnu.org/software/src-highlite -->
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html b/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html
index 5281b6e4..3f7f2f7e 100644
--- a/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html
+++ b/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='using-my-nokia-n95-for-fixing-my-mta'>Using my Nokia N95 for fixing my MTA</h1><br />
<br />
<span class='quote'>Published at 2008-12-29T09:10:41+00:00; Updated at 2021-12-01</span><br />
@@ -50,7 +53,7 @@ _jgs_\|//_\\|///_\V/_\|//__
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2010-04-09-standard-ml-and-haskell.html b/gemfeed/2010-04-09-standard-ml-and-haskell.html
index 0d465954..1e82c075 100644
--- a/gemfeed/2010-04-09-standard-ml-and-haskell.html
+++ b/gemfeed/2010-04-09-standard-ml-and-haskell.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2010-04-09-standard-ml-and-haskell.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2010-04-09-standard-ml-and-haskell.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='standard-ml-and-haskell'>Standard ML and Haskell</h1><br />
<br />
<span class='quote'>Published at 2010-04-09T22:57:36+01:00</span><br />
@@ -37,10 +40,10 @@
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">datatype</font></b><font color="#ff0000"> ’a multi</font>
-<font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> EMPTY</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> ELEM </font><b><font color="#ffffff">of</font></b><font color="#ff0000"> ’a</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> UNION </font><b><font color="#ffffff">of</font></b><font color="#ff0000"> ’a multi </font><font color="#F3E651">*</font><font color="#ff0000"> ’a multi</font>
+<pre><b><u><font color="#000000">datatype</font></u></b> ’a multi
+ = EMPTY
+ | ELEM <b><u><font color="#000000">of</font></u></b> ’a
+ | UNION <b><u><font color="#000000">of</font></u></b> ’a multi * ’a multi
</pre>
<br />
<span>Haskell:</span><br />
@@ -49,11 +52,11 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">data</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">Eq</font></b><font color="#ff0000"> a</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=&gt;</font><font color="#ff0000"> </font><b><font color="#F35E1E">Multi</font></b><font color="#ff0000"> a</font>
-<font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><b><font color="#F35E1E">Empty</font></b>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> </font><b><font color="#F35E1E">Elem</font></b><font color="#ff0000"> a</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> </font><b><font color="#F35E1E">Union</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">Multi</font></b><font color="#ff0000"> a</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">Multi</font></b><font color="#ff0000"> a</font><font color="#F3E651">)</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">deriving</font></b><font color="#ff0000"> </font><b><font color="#F35E1E">Show</font></b>
+<pre><b><u><font color="#000000">data</font></u></b> (<b><font color="#000000">Eq</font></b> a) =&gt; <b><font color="#000000">Multi</font></b> a
+ = <b><font color="#000000">Empty</font></b>
+ | <b><font color="#000000">Elem</font></b> a
+ | <b><font color="#000000">Union</font></b> (<b><font color="#000000">Multi</font></b> a) (<b><font color="#000000">Multi</font></b> a)
+ <b><u><font color="#000000">deriving</font></u></b> <b><font color="#000000">Show</font></b>
</pre>
<br />
<h2 style='display: inline' id='processing-a-multi'>Processing a multi</h2><br />
@@ -64,12 +67,12 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">fun</font></b><font color="#ff0000"> number </font><font color="#F3E651">(</font><font color="#ff0000">EMPTY</font><font color="#F3E651">)</font><font color="#ff0000"> _ </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> number </font><font color="#F3E651">(</font><font color="#ff0000">ELEM x</font><font color="#F3E651">)</font><font color="#ff0000"> w </font><font color="#F3E651">=</font><font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> x </font><font color="#F3E651">=</font><font color="#ff0000"> w </font><b><font color="#ffffff">then</font></b><font color="#ff0000"> </font><font color="#bb00ff">1</font><font color="#ff0000"> </font><b><font color="#ffffff">else</font></b><font color="#ff0000"> </font><font color="#bb00ff">0</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> number </font><font color="#F3E651">(</font><font color="#ff0000">UNION </font><font color="#F3E651">(</font><font color="#ff0000">x</font><font color="#F3E651">,</font><font color="#ff0000">y</font><font color="#F3E651">))</font><font color="#ff0000"> w </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">number x w</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">+</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">number y w</font><font color="#F3E651">)</font>
-<b><font color="#ffffff">fun</font></b><font color="#ff0000"> test_number w </font><font color="#F3E651">=</font><font color="#ff0000"> number </font><font color="#F3E651">(</font><font color="#ff0000">UNION </font><font color="#F3E651">(</font><font color="#ff0000">EMPTY</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> UNION </font><font color="#F3E651">(</font><font color="#ff0000">ELEM </font><font color="#bb00ff">4</font><font color="#F3E651">,</font><font color="#ff0000"> UNION </font><font color="#F3E651">(</font><font color="#ff0000">ELEM </font><font color="#bb00ff">6</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> UNION </font><font color="#F3E651">(</font><font color="#ff0000">UNION </font><font color="#F3E651">(</font><font color="#ff0000">ELEM </font><font color="#bb00ff">4</font><font color="#F3E651">,</font><font color="#ff0000"> ELEM </font><font color="#bb00ff">4</font><font color="#F3E651">),</font><font color="#ff0000"> EMPTY</font><font color="#F3E651">)))))</font><font color="#ff0000"> w </font>
+<pre><b><u><font color="#000000">fun</font></u></b> number (EMPTY) _ = <font color="#000000">0</font>
+ | number (ELEM x) w = <b><u><font color="#000000">if</font></u></b> x = w <b><u><font color="#000000">then</font></u></b> <font color="#000000">1</font> <b><u><font color="#000000">else</font></u></b> <font color="#000000">0</font>
+ | number (UNION (x,y)) w = (number x w) + (number y w)
+<b><u><font color="#000000">fun</font></u></b> test_number w = number (UNION (EMPTY, \
+ UNION (ELEM <font color="#000000">4</font>, UNION (ELEM <font color="#000000">6</font>, \
+ UNION (UNION (ELEM <font color="#000000">4</font>, ELEM <font color="#000000">4</font>), EMPTY))))) w
</pre>
<br />
<span>Haskell:</span><br />
@@ -78,11 +81,11 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">number </font><b><font color="#F35E1E">Empty</font></b><font color="#ff0000"> </font><b><font color="#ffffff">_</font></b><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font>
-<font color="#ff0000">number </font><font color="#F3E651">(</font><b><font color="#F35E1E">Elem</font></b><font color="#ff0000"> x</font><font color="#F3E651">)</font><font color="#ff0000"> w </font><font color="#F3E651">=</font><font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> x </font><font color="#F3E651">==</font><font color="#ff0000"> w </font><b><font color="#ffffff">then</font></b><font color="#ff0000"> </font><font color="#bb00ff">1</font><font color="#ff0000"> </font><b><font color="#ffffff">else</font></b><font color="#ff0000"> </font><font color="#bb00ff">0</font>
-<font color="#ff0000">test_number w </font><font color="#F3E651">=</font><font color="#ff0000"> number </font><font color="#F3E651">(</font><b><font color="#F35E1E">Union</font></b><font color="#ff0000"> </font><b><font color="#F35E1E">Empty</font></b><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">Union</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">Elem</font></b><font color="#ff0000"> </font><font color="#bb00ff">4</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">Union</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">Elem</font></b><font color="#ff0000"> </font><font color="#bb00ff">6</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">Union</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">Union</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">Elem</font></b><font color="#ff0000"> </font><font color="#bb00ff">4</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">Elem</font></b><font color="#ff0000"> </font><font color="#bb00ff">4</font><font color="#F3E651">))</font><font color="#ff0000"> </font><b><font color="#F35E1E">Empty</font></b><font color="#F3E651">))))</font><font color="#ff0000"> w</font>
+<pre>number <b><font color="#000000">Empty</font></b> <b><u><font color="#000000">_</font></u></b> = <font color="#000000">0</font>
+number (<b><font color="#000000">Elem</font></b> x) w = <b><u><font color="#000000">if</font></u></b> x == w <b><u><font color="#000000">then</font></u></b> <font color="#000000">1</font> <b><u><font color="#000000">else</font></u></b> <font color="#000000">0</font>
+test_number w = number (<b><font color="#000000">Union</font></b> <b><font color="#000000">Empty</font></b> \
+ (<b><font color="#000000">Union</font></b> (<b><font color="#000000">Elem</font></b> <font color="#000000">4</font>) (<b><font color="#000000">Union</font></b> (<b><font color="#000000">Elem</font></b> <font color="#000000">6</font>) \
+ (<b><font color="#000000">Union</font></b> (<b><font color="#000000">Union</font></b> (<b><font color="#000000">Elem</font></b> <font color="#000000">4</font>) (<b><font color="#000000">Elem</font></b> <font color="#000000">4</font>)) <b><font color="#000000">Empty</font></b>)))) w
</pre>
<br />
<h2 style='display: inline' id='simplify-function'>Simplify function</h2><br />
@@ -93,19 +96,19 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">fun</font></b><font color="#ff0000"> simplify </font><font color="#F3E651">(</font><font color="#ff0000">UNION </font><font color="#F3E651">(</font><font color="#ff0000">x</font><font color="#F3E651">,</font><font color="#ff0000">y</font><font color="#F3E651">))</font><font color="#ff0000"> </font><font color="#F3E651">=</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">let</font></b><font color="#ff0000"> </font><b><font color="#ffffff">fun</font></b><font color="#ff0000"> is_empty </font><font color="#F3E651">(</font><font color="#ff0000">EMPTY</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> true </font><font color="#F3E651">|</font><font color="#ff0000"> is_empty _ </font><font color="#F3E651">=</font><font color="#ff0000"> false</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">val</font></b><font color="#ff0000"> x’ </font><font color="#F3E651">=</font><font color="#ff0000"> simplify x</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">val</font></b><font color="#ff0000"> y’ </font><font color="#F3E651">=</font><font color="#ff0000"> simplify y</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">is_empty x’</font><font color="#F3E651">)</font><font color="#ff0000"> </font><b><font color="#ffffff">andalso</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">is_empty y’</font><font color="#F3E651">)</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">then</font></b><font color="#ff0000"> EMPTY</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">else</font></b><font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">is_empty x’</font><font color="#F3E651">)</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">then</font></b><font color="#ff0000"> y’</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">else</font></b><font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">is_empty y’</font><font color="#F3E651">)</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">then</font></b><font color="#ff0000"> x’</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">else</font></b><font color="#ff0000"> UNION </font><font color="#F3E651">(</font><font color="#ff0000">x’</font><font color="#F3E651">,</font><font color="#ff0000"> y’</font><font color="#F3E651">)</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">end</font></b>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> simplify x </font><font color="#F3E651">=</font><font color="#ff0000"> x</font>
+<pre><b><u><font color="#000000">fun</font></u></b> simplify (UNION (x,y)) =
+ <b><u><font color="#000000">let</font></u></b> <b><u><font color="#000000">fun</font></u></b> is_empty (EMPTY) = true | is_empty _ = false
+ <b><u><font color="#000000">val</font></u></b> x’ = simplify x
+ <b><u><font color="#000000">val</font></u></b> y’ = simplify y
+ <b><u><font color="#000000">in</font></u></b> <b><u><font color="#000000">if</font></u></b> (is_empty x’) <b><u><font color="#000000">andalso</font></u></b> (is_empty y’)
+ <b><u><font color="#000000">then</font></u></b> EMPTY
+ <b><u><font color="#000000">else</font></u></b> <b><u><font color="#000000">if</font></u></b> (is_empty x’)
+ <b><u><font color="#000000">then</font></u></b> y’
+ <b><u><font color="#000000">else</font></u></b> <b><u><font color="#000000">if</font></u></b> (is_empty y’)
+ <b><u><font color="#000000">then</font></u></b> x’
+ <b><u><font color="#000000">else</font></u></b> UNION (x’, y’)
+ <b><u><font color="#000000">end</font></u></b>
+ | simplify x = x
</pre>
<br />
<span>Haskell:</span><br />
@@ -114,17 +117,17 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">simplify </font><font color="#F3E651">(</font><b><font color="#F35E1E">Union</font></b><font color="#ff0000"> x y</font><font color="#F3E651">)</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">isEmpty x’</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">isEmpty y’</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><b><font color="#F35E1E">Empty</font></b>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> isEmpty x’ </font><font color="#F3E651">=</font><font color="#ff0000"> y’</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> isEmpty y’ </font><font color="#F3E651">=</font><font color="#ff0000"> x’</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> otherwise </font><font color="#F3E651">=</font><font color="#ff0000"> </font><b><font color="#F35E1E">Union</font></b><font color="#ff0000"> x’ y’</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">where</font></b>
-<font color="#ff0000"> isEmpty </font><b><font color="#F35E1E">Empty</font></b><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><b><font color="#F35E1E">True</font></b>
-<font color="#ff0000"> isEmpty </font><b><font color="#ffffff">_</font></b><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><b><font color="#F35E1E">False</font></b>
-<font color="#ff0000"> x’ </font><font color="#F3E651">=</font><font color="#ff0000"> simplify x</font>
-<font color="#ff0000"> y’ </font><font color="#F3E651">=</font><font color="#ff0000"> simplify y</font>
-<font color="#ff0000">simplify x </font><font color="#F3E651">=</font><font color="#ff0000"> x</font>
+<pre>simplify (<b><font color="#000000">Union</font></b> x y)
+ | (isEmpty x’) &amp;&amp; (isEmpty y’) = <b><font color="#000000">Empty</font></b>
+ | isEmpty x’ = y’
+ | isEmpty y’ = x’
+ | otherwise = <b><font color="#000000">Union</font></b> x’ y’
+ <b><u><font color="#000000">where</font></u></b>
+ isEmpty <b><font color="#000000">Empty</font></b> = <b><font color="#000000">True</font></b>
+ isEmpty <b><u><font color="#000000">_</font></u></b> = <b><font color="#000000">False</font></b>
+ x’ = simplify x
+ y’ = simplify y
+simplify x = x
</pre>
<br />
<h2 style='display: inline' id='delete-all'>Delete all</h2><br />
@@ -135,12 +138,12 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">fun</font></b><font color="#ff0000"> delete_all m w </font><font color="#F3E651">=</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">let</font></b><font color="#ff0000"> </font><b><font color="#ffffff">fun</font></b><font color="#ff0000"> delete_all’ </font><font color="#F3E651">(</font><font color="#ff0000">ELEM x</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> x </font><font color="#F3E651">=</font><font color="#ff0000"> w </font><b><font color="#ffffff">then</font></b><font color="#ff0000"> EMPTY </font><b><font color="#ffffff">else</font></b><font color="#ff0000"> ELEM x</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> delete_all’ </font><font color="#F3E651">(</font><font color="#ff0000">UNION </font><font color="#F3E651">(</font><font color="#ff0000">x</font><font color="#F3E651">,</font><font color="#ff0000">y</font><font color="#F3E651">))</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> UNION </font><font color="#F3E651">(</font><font color="#ff0000">delete_all’ x</font><font color="#F3E651">,</font><font color="#ff0000"> delete_all’ y</font><font color="#F3E651">)</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> delete_all’ x </font><font color="#F3E651">=</font><font color="#ff0000"> x</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> simplify </font><font color="#F3E651">(</font><font color="#ff0000">delete_all’ m</font><font color="#F3E651">)</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">end</font></b>
+<pre><b><u><font color="#000000">fun</font></u></b> delete_all m w =
+ <b><u><font color="#000000">let</font></u></b> <b><u><font color="#000000">fun</font></u></b> delete_all’ (ELEM x) = <b><u><font color="#000000">if</font></u></b> x = w <b><u><font color="#000000">then</font></u></b> EMPTY <b><u><font color="#000000">else</font></u></b> ELEM x
+ | delete_all’ (UNION (x,y)) = UNION (delete_all’ x, delete_all’ y)
+ | delete_all’ x = x
+ <b><u><font color="#000000">in</font></u></b> simplify (delete_all’ m)
+ <b><u><font color="#000000">end</font></u></b>
</pre>
<br />
<span>Haskell:</span><br />
@@ -149,11 +152,11 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">delete_all m w </font><font color="#F3E651">=</font><font color="#ff0000"> simplify </font><font color="#F3E651">(</font><font color="#ff0000">delete_all’ m</font><font color="#F3E651">)</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">where</font></b>
-<font color="#ff0000"> delete_all’ </font><font color="#F3E651">(</font><b><font color="#F35E1E">Elem</font></b><font color="#ff0000"> x</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> x </font><font color="#F3E651">==</font><font color="#ff0000"> w </font><b><font color="#ffffff">then</font></b><font color="#ff0000"> </font><b><font color="#F35E1E">Empty</font></b><font color="#ff0000"> </font><b><font color="#ffffff">else</font></b><font color="#ff0000"> </font><b><font color="#F35E1E">Elem</font></b><font color="#ff0000"> x</font>
-<font color="#ff0000"> delete_all’ </font><font color="#F3E651">(</font><b><font color="#F35E1E">Union</font></b><font color="#ff0000"> x y</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><b><font color="#F35E1E">Union</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">delete_all’ x</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">delete_all’ y</font><font color="#F3E651">)</font>
-<font color="#ff0000"> delete_all’ x </font><font color="#F3E651">=</font><font color="#ff0000"> x</font>
+<pre>delete_all m w = simplify (delete_all’ m)
+ <b><u><font color="#000000">where</font></u></b>
+ delete_all’ (<b><font color="#000000">Elem</font></b> x) = <b><u><font color="#000000">if</font></u></b> x == w <b><u><font color="#000000">then</font></u></b> <b><font color="#000000">Empty</font></b> <b><u><font color="#000000">else</font></u></b> <b><font color="#000000">Elem</font></b> x
+ delete_all’ (<b><font color="#000000">Union</font></b> x y) = <b><font color="#000000">Union</font></b> (delete_all’ x) (delete_all’ y)
+ delete_all’ x = x
</pre>
<br />
<h2 style='display: inline' id='delete-one'>Delete one</h2><br />
@@ -164,21 +167,21 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">fun</font></b><font color="#ff0000"> delete_one m w </font><font color="#F3E651">=</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">let</font></b><font color="#ff0000"> </font><b><font color="#ffffff">fun</font></b><font color="#ff0000"> delete_one’ </font><font color="#F3E651">(</font><font color="#ff0000">UNION </font><font color="#F3E651">(</font><font color="#ff0000">x</font><font color="#F3E651">,</font><font color="#ff0000">y</font><font color="#F3E651">))</font><font color="#ff0000"> </font><font color="#F3E651">=</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">let</font></b><font color="#ff0000"> </font><b><font color="#ffffff">val</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">x’</font><font color="#F3E651">,</font><font color="#ff0000"> deleted</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> delete_one’ x</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> deleted</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">then</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">UNION </font><font color="#F3E651">(</font><font color="#ff0000">x’</font><font color="#F3E651">,</font><font color="#ff0000"> y</font><font color="#F3E651">),</font><font color="#ff0000"> deleted</font><font color="#F3E651">)</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">else</font></b><font color="#ff0000"> </font><b><font color="#ffffff">let</font></b><font color="#ff0000"> </font><b><font color="#ffffff">val</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">y’</font><font color="#F3E651">,</font><font color="#ff0000"> deleted</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> delete_one’ y</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">UNION </font><font color="#F3E651">(</font><font color="#ff0000">x</font><font color="#F3E651">,</font><font color="#ff0000"> y’</font><font color="#F3E651">),</font><font color="#ff0000"> deleted</font><font color="#F3E651">)</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">end</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">end</font></b>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> delete_one’ </font><font color="#F3E651">(</font><font color="#ff0000">ELEM x</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> x </font><font color="#F3E651">=</font><font color="#ff0000"> w </font><b><font color="#ffffff">then</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">EMPTY</font><font color="#F3E651">,</font><font color="#ff0000"> true</font><font color="#F3E651">)</font><font color="#ff0000"> </font><b><font color="#ffffff">else</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">ELEM x</font><font color="#F3E651">,</font><font color="#ff0000"> false</font><font color="#F3E651">)</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> delete_one’ x </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">x</font><font color="#F3E651">,</font><font color="#ff0000"> false</font><font color="#F3E651">)</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">val</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">m’</font><font color="#F3E651">,</font><font color="#ff0000"> _</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> delete_one’ m</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> simplify m’</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">end</font></b>
+<pre><b><u><font color="#000000">fun</font></u></b> delete_one m w =
+ <b><u><font color="#000000">let</font></u></b> <b><u><font color="#000000">fun</font></u></b> delete_one’ (UNION (x,y)) =
+ <b><u><font color="#000000">let</font></u></b> <b><u><font color="#000000">val</font></u></b> (x’, deleted) = delete_one’ x
+ <b><u><font color="#000000">in</font></u></b> <b><u><font color="#000000">if</font></u></b> deleted
+ <b><u><font color="#000000">then</font></u></b> (UNION (x’, y), deleted)
+ <b><u><font color="#000000">else</font></u></b> <b><u><font color="#000000">let</font></u></b> <b><u><font color="#000000">val</font></u></b> (y’, deleted) = delete_one’ y
+ <b><u><font color="#000000">in</font></u></b> (UNION (x, y’), deleted)
+ <b><u><font color="#000000">end</font></u></b>
+ <b><u><font color="#000000">end</font></u></b>
+ | delete_one’ (ELEM x) =
+ <b><u><font color="#000000">if</font></u></b> x = w <b><u><font color="#000000">then</font></u></b> (EMPTY, true) <b><u><font color="#000000">else</font></u></b> (ELEM x, false)
+ | delete_one’ x = (x, false)
+ <b><u><font color="#000000">val</font></u></b> (m’, _) = delete_one’ m
+ <b><u><font color="#000000">in</font></u></b> simplify m’
+ <b><u><font color="#000000">end</font></u></b>
</pre>
<br />
<span>Haskell:</span><br />
@@ -187,19 +190,19 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">delete_one m w </font><font color="#F3E651">=</font><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">let</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">m’</font><font color="#F3E651">,</font><font color="#ff0000"> </font><b><font color="#ffffff">_</font></b><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> delete_one’ m</font>
-<font color="#ff0000"> simplify m’</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">where</font></b>
-<font color="#ff0000"> delete_one’ </font><font color="#F3E651">(</font><b><font color="#F35E1E">Union</font></b><font color="#ff0000"> x y</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">let</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">x’</font><font color="#F3E651">,</font><font color="#ff0000"> deleted</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> delete_one’ x</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> deleted</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">then</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">Union</font></b><font color="#ff0000"> x’ y</font><font color="#F3E651">,</font><font color="#ff0000"> deleted</font><font color="#F3E651">)</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">else</font></b><font color="#ff0000"> </font><b><font color="#ffffff">let</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">y’</font><font color="#F3E651">,</font><font color="#ff0000"> deleted</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> delete_one’ y</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">Union</font></b><font color="#ff0000"> x y’</font><font color="#F3E651">,</font><font color="#ff0000"> deleted</font><font color="#F3E651">)</font>
-<font color="#ff0000"> delete_one’ </font><font color="#F3E651">(</font><b><font color="#F35E1E">Elem</font></b><font color="#ff0000"> x</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> x </font><font color="#F3E651">==</font><font color="#ff0000"> w </font><b><font color="#ffffff">then</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">Empty</font></b><font color="#F3E651">,</font><font color="#ff0000"> </font><b><font color="#F35E1E">True</font></b><font color="#F3E651">)</font><font color="#ff0000"> </font><b><font color="#ffffff">else</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">Elem</font></b><font color="#ff0000"> x</font><font color="#F3E651">,</font><font color="#ff0000"> </font><b><font color="#F35E1E">False</font></b><font color="#F3E651">)</font>
-<font color="#ff0000"> delete_one’ x </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">x</font><font color="#F3E651">,</font><font color="#ff0000"> </font><b><font color="#F35E1E">False</font></b><font color="#F3E651">)</font>
+<pre>delete_one m w = <b><u><font color="#000000">do</font></u></b>
+ <b><u><font color="#000000">let</font></u></b> (m’, <b><u><font color="#000000">_</font></u></b>) = delete_one’ m
+ simplify m’
+ <b><u><font color="#000000">where</font></u></b>
+ delete_one’ (<b><font color="#000000">Union</font></b> x y) =
+ <b><u><font color="#000000">let</font></u></b> (x’, deleted) = delete_one’ x
+ <b><u><font color="#000000">in</font></u></b> <b><u><font color="#000000">if</font></u></b> deleted
+ <b><u><font color="#000000">then</font></u></b> (<b><font color="#000000">Union</font></b> x’ y, deleted)
+ <b><u><font color="#000000">else</font></u></b> <b><u><font color="#000000">let</font></u></b> (y’, deleted) = delete_one’ y
+ <b><u><font color="#000000">in</font></u></b> (<b><font color="#000000">Union</font></b> x y’, deleted)
+ delete_one’ (<b><font color="#000000">Elem</font></b> x) =
+ <b><u><font color="#000000">if</font></u></b> x == w <b><u><font color="#000000">then</font></u></b> (<b><font color="#000000">Empty</font></b>, <b><font color="#000000">True</font></b>) <b><u><font color="#000000">else</font></u></b> (<b><font color="#000000">Elem</font></b> x, <b><font color="#000000">False</font></b>)
+ delete_one’ x = (x, <b><font color="#000000">False</font></b>)
</pre>
<br />
<h2 style='display: inline' id='higher-order-functions'>Higher-order functions</h2><br />
@@ -224,7 +227,7 @@ my_filter f l = foldr (make_filter_fn f) [] l
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.html b/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.html
index 6429dc69..bc9756da 100644
--- a/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.html
+++ b/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='lazy-evaluation-with-standard-ml'>Lazy Evaluation with Standard ML</h1><br />
<br />
<span class='quote'>Published at 2010-05-07T08:17:59+01:00</span><br />
@@ -110,7 +113,7 @@ first 10 nat_pairs_not_null
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2010-05-09-the-fype-programming-language.html b/gemfeed/2010-05-09-the-fype-programming-language.html
index 353d522f..7370c5bb 100644
--- a/gemfeed/2010-05-09-the-fype-programming-language.html
+++ b/gemfeed/2010-05-09-the-fype-programming-language.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2010-05-09-the-fype-programming-language.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2010-05-09-the-fype-programming-language.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='the-fype-programming-language'>The Fype Programming Language</h1><br />
<br />
<span class='quote'>Published at 2010-05-09T12:48:29+01:00; Updated at 2021-05-05</span><br />
@@ -66,12 +69,12 @@
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">typedef</font></b><font color="#ff0000"> </font><b><font color="#ffffff">struct</font></b><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#ff0000">Tupel</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000">p_tupel_argv</font><font color="#F3E651">;</font><font color="#ff0000"> </font><i><font color="#ababab">// Contains command line options</font></i>
-<font color="#ff0000"> </font><font color="#ff0000">List</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000">p_list_token</font><font color="#F3E651">;</font><font color="#ff0000"> </font><i><font color="#ababab">// Initial list of token</font></i>
-<font color="#ff0000"> </font><font color="#ff0000">Hash</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000">p_hash_syms</font><font color="#F3E651">;</font><font color="#ff0000"> </font><i><font color="#ababab">// Symbol table</font></i>
-<font color="#ff0000"> </font><b><font color="#F35E1E">char</font></b><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000">c_basename</font><font color="#F3E651">;</font>
-<font color="#F3E651">}</font><font color="#ff0000"> Fype</font><font color="#F3E651">;</font>
+<pre><b><u><font color="#000000">typedef</font></u></b> <b><u><font color="#000000">struct</font></u></b> {
+ Tupel *p_tupel_argv; <i><font color="silver">// Contains command line options</font></i>
+ List *p_list_token; <i><font color="silver">// Initial list of token</font></i>
+ Hash *p_hash_syms; <i><font color="silver">// Symbol table</font></i>
+ <b><font color="#000000">char</font></b> *c_basename;
+} Fype;
</pre>
<br />
<span>And here is a snippet from the primary Fype "class implementation":</span><br />
@@ -80,53 +83,53 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">Fype</font><font color="#F3E651">*</font>
-<font color="#7bc710">fype_new</font><font color="#F3E651">()</font><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#ff0000">Fype</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000">p_fype </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#7bc710">malloc</font><font color="#F3E651">(</font><b><font color="#ffffff">sizeof</font></b><font color="#F3E651">(</font><font color="#ff0000">Fype</font><font color="#F3E651">));</font>
+<pre>Fype*
+fype_new() {
+ Fype *p_fype = malloc(<b><u><font color="#000000">sizeof</font></u></b>(Fype));
-<font color="#ff0000"> p_fype</font><font color="#F3E651">-&gt;</font><font color="#ff0000">p_hash_syms </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#7bc710">hash_new</font><font color="#F3E651">(</font><font color="#bb00ff">512</font><font color="#F3E651">);</font>
-<font color="#ff0000"> p_fype</font><font color="#F3E651">-&gt;</font><font color="#ff0000">p_list_token </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#7bc710">list_new</font><font color="#F3E651">();</font>
-<font color="#ff0000"> p_fype</font><font color="#F3E651">-&gt;</font><font color="#ff0000">p_tupel_argv </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#7bc710">tupel_new</font><font color="#F3E651">();</font>
-<font color="#ff0000"> p_fype</font><font color="#F3E651">-&gt;</font><font color="#ff0000">c_basename </font><font color="#F3E651">=</font><font color="#ff0000"> NULL</font><font color="#F3E651">;</font>
+ p_fype-&gt;p_hash_syms = hash_new(<font color="#000000">512</font>);
+ p_fype-&gt;p_list_token = list_new();
+ p_fype-&gt;p_tupel_argv = tupel_new();
+ p_fype-&gt;c_basename = NULL;
-<font color="#ff0000"> </font><font color="#7bc710">garbage_init</font><font color="#F3E651">();</font>
+ garbage_init();
-<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">p_fype</font><font color="#F3E651">);</font>
-<font color="#F3E651">}</font>
+ <b><u><font color="#000000">return</font></u></b> (p_fype);
+}
-<b><font color="#F35E1E">void</font></b>
-<font color="#7bc710">fype_delete</font><font color="#F3E651">(</font><font color="#ff0000">Fype</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000">p_fype</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#7bc710">argv_tupel_delete</font><font color="#F3E651">(</font><font color="#ff0000">p_fype</font><font color="#F3E651">-&gt;</font><font color="#ff0000">p_tupel_argv</font><font color="#F3E651">);</font>
+<b><font color="#000000">void</font></b>
+fype_delete(Fype *p_fype) {
+ argv_tupel_delete(p_fype-&gt;p_tupel_argv);
-<font color="#ff0000"> </font><font color="#7bc710">hash_iterate</font><font color="#F3E651">(</font><font color="#ff0000">p_fype</font><font color="#F3E651">-&gt;</font><font color="#ff0000">p_hash_syms</font><font color="#F3E651">,</font><font color="#ff0000"> symbol_cleanup_hash_syms_cb</font><font color="#F3E651">);</font>
-<font color="#ff0000"> </font><font color="#7bc710">hash_delete</font><font color="#F3E651">(</font><font color="#ff0000">p_fype</font><font color="#F3E651">-&gt;</font><font color="#ff0000">p_hash_syms</font><font color="#F3E651">);</font>
+ hash_iterate(p_fype-&gt;p_hash_syms, symbol_cleanup_hash_syms_cb);
+ hash_delete(p_fype-&gt;p_hash_syms);
-<font color="#ff0000"> </font><font color="#7bc710">list_iterate</font><font color="#F3E651">(</font><font color="#ff0000">p_fype</font><font color="#F3E651">-&gt;</font><font color="#ff0000">p_list_token</font><font color="#F3E651">,</font><font color="#ff0000"> token_ref_down_cb</font><font color="#F3E651">);</font>
-<font color="#ff0000"> </font><font color="#7bc710">list_delete</font><font color="#F3E651">(</font><font color="#ff0000">p_fype</font><font color="#F3E651">-&gt;</font><font color="#ff0000">p_list_token</font><font color="#F3E651">);</font>
+ list_iterate(p_fype-&gt;p_list_token, token_ref_down_cb);
+ list_delete(p_fype-&gt;p_list_token);
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">p_fype</font><font color="#F3E651">-&gt;</font><font color="#ff0000">c_basename</font><font color="#F3E651">)</font>
-<font color="#ff0000"> </font><font color="#7bc710">free</font><font color="#F3E651">(</font><font color="#ff0000">p_fype</font><font color="#F3E651">-&gt;</font><font color="#ff0000">c_basename</font><font color="#F3E651">);</font>
+ <b><u><font color="#000000">if</font></u></b> (p_fype-&gt;c_basename)
+ free(p_fype-&gt;c_basename);
-<font color="#ff0000"> </font><font color="#7bc710">garbage_destroy</font><font color="#F3E651">();</font>
-<font color="#F3E651">}</font>
+ garbage_destroy();
+}
-<b><font color="#F35E1E">int</font></b>
-<font color="#7bc710">fype_run</font><font color="#F3E651">(</font><b><font color="#F35E1E">int</font></b><font color="#ff0000"> i_argc</font><font color="#F3E651">,</font><font color="#ff0000"> </font><b><font color="#F35E1E">char</font></b><font color="#ff0000"> </font><font color="#F3E651">**</font><font color="#ff0000">pc_argv</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#ff0000">Fype</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000">p_fype </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#7bc710">fype_new</font><font color="#F3E651">();</font>
+<b><font color="#000000">int</font></b>
+fype_run(<b><font color="#000000">int</font></b> i_argc, <b><font color="#000000">char</font></b> **pc_argv) {
+ Fype *p_fype = fype_new();
-<font color="#ff0000"> </font><i><font color="#ababab">// argv: Maintains command line options</font></i>
-<font color="#ff0000"> </font><font color="#7bc710">argv_run</font><font color="#F3E651">(</font><font color="#ff0000">p_fype</font><font color="#F3E651">,</font><font color="#ff0000"> i_argc</font><font color="#F3E651">,</font><font color="#ff0000"> pc_argv</font><font color="#F3E651">);</font>
+ <i><font color="silver">// argv: Maintains command line options</font></i>
+ argv_run(p_fype, i_argc, pc_argv);
-<font color="#ff0000"> </font><i><font color="#ababab">// scanner: Creates a list of token</font></i>
-<font color="#ff0000"> </font><font color="#7bc710">scanner_run</font><font color="#F3E651">(</font><font color="#ff0000">p_fype</font><font color="#F3E651">);</font>
+ <i><font color="silver">// scanner: Creates a list of token</font></i>
+ scanner_run(p_fype);
-<font color="#ff0000"> </font><i><font color="#ababab">// interpret: Interpret the list of token</font></i>
-<font color="#ff0000"> </font><font color="#7bc710">interpret_run</font><font color="#F3E651">(</font><font color="#ff0000">p_fype</font><font color="#F3E651">);</font>
+ <i><font color="silver">// interpret: Interpret the list of token</font></i>
+ interpret_run(p_fype);
-<font color="#ff0000"> </font><font color="#7bc710">fype_delete</font><font color="#F3E651">(</font><font color="#ff0000">p_fype</font><font color="#F3E651">);</font>
+ fype_delete(p_fype);
-<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#bb00ff">0</font><font color="#F3E651">);</font>
-<font color="#F3E651">}</font>
+ <b><u><font color="#000000">return</font></u></b> (<font color="#000000">0</font>);
+}
</pre>
<br />
<h2 style='display: inline' id='data-types'>Data types</h2><br />
@@ -555,7 +558,7 @@ BB
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2011-05-07-perl-daemon-service-framework.html b/gemfeed/2011-05-07-perl-daemon-service-framework.html
index 4a575867..50277893 100644
--- a/gemfeed/2011-05-07-perl-daemon-service-framework.html
+++ b/gemfeed/2011-05-07-perl-daemon-service-framework.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2011-05-07-perl-daemon-service-framework.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2011-05-07-perl-daemon-service-framework.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='perl-daemon-service-framework'>Perl Daemon (Service Framework)</h1><br />
<br />
<span class='quote'>Published at 2011-05-07T22:26:02+01:00; Updated at 2021-05-07</span><br />
@@ -55,14 +58,14 @@
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab"># Starting</font></i>
-<font color="#ff0000"> </font><font color="#F3E651">.</font><font color="#ff0000">/bin/perldaemon start </font><font color="#F3E651">(</font><font color="#ff0000">or shortcut </font><font color="#F3E651">.</font><font color="#ff0000">/control start</font><font color="#F3E651">)</font>
+<pre><i><font color="silver"># Starting</font></i>
+ ./bin/perldaemon start (or shortcut ./control start)
-<i><font color="#ababab"># Stopping</font></i>
-<font color="#ff0000"> </font><font color="#F3E651">.</font><font color="#ff0000">/bin/perldaemon stop </font><font color="#F3E651">(</font><font color="#ff0000">or shortcut </font><font color="#F3E651">.</font><font color="#ff0000">/control stop</font><font color="#F3E651">)</font>
+<i><font color="silver"># Stopping</font></i>
+ ./bin/perldaemon stop (or shortcut ./control stop)
-<i><font color="#ababab"># Alternatively: Starting in foreground </font></i>
-<font color="#F3E651">.</font><font color="#ff0000">/bin/perldaemon start daemon</font><font color="#F3E651">.</font><font color="#ff0000">daemonize</font><font color="#F3E651">=</font><font color="#ff0000">no </font><font color="#F3E651">(</font><font color="#ff0000">or shortcut </font><font color="#F3E651">.</font><font color="#ff0000">/control foreground</font><font color="#F3E651">)</font>
+<i><font color="silver"># Alternatively: Starting in foreground </font></i>
+./bin/perldaemon start daemon.daemonize=no (or shortcut ./control foreground)
</pre>
<br />
<span>To stop a daemon from running in foreground mode, "Ctrl+C" must be hit. To see more available startup options run "./control" without any argument.</span><br />
@@ -75,30 +78,30 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">pb@titania</font><font color="#F3E651">:~</font><font color="#ff0000">/svn/utils/perldaemon/trunk$ </font><font color="#F3E651">.</font><font color="#ff0000">/control keys</font>
-<i><font color="#ababab"># Path to the logfile</font></i>
-<font color="#ff0000">daemon</font><font color="#F3E651">.</font><font color="#ff0000">logfile</font><font color="#F3E651">=.</font><font color="#ff0000">/log/perldaemon</font><font color="#F3E651">.</font><font color="#ff0000">log</font>
+<pre>pb@titania:~/svn/utils/perldaemon/trunk$ ./control keys
+<i><font color="silver"># Path to the logfile</font></i>
+daemon.logfile=./log/perldaemon.log
-<i><font color="#ababab"># The amount of seconds until the next event look takes place</font></i>
-<font color="#ff0000">daemon</font><font color="#F3E651">.</font><font color="#ff0000">loopinterval</font><font color="#F3E651">=</font><font color="#bb00ff">1</font>
+<i><font color="silver"># The amount of seconds until the next event look takes place</font></i>
+daemon.loopinterval=<font color="#000000">1</font>
-<i><font color="#ababab"># Path to the modules dir</font></i>
-<font color="#ff0000">daemon</font><font color="#F3E651">.</font><font color="#ff0000">modules</font><font color="#F3E651">.</font><font color="#ff0000">dir</font><font color="#F3E651">=.</font><font color="#ff0000">/lib/PerlDaemonModules</font>
+<i><font color="silver"># Path to the modules dir</font></i>
+daemon.modules.dir=./lib/PerlDaemonModules
-<i><font color="#ababab"># Specifies either the daemon should run in daemon or foreground mode</font></i>
-<font color="#ff0000">daemon</font><font color="#F3E651">.</font><font color="#ff0000">daemonize</font><font color="#F3E651">=</font><font color="#ff0000">yes</font>
+<i><font color="silver"># Specifies either the daemon should run in daemon or foreground mode</font></i>
+daemon.daemonize=yes
-<i><font color="#ababab"># Path to the pidfile</font></i>
-<font color="#ff0000">daemon</font><font color="#F3E651">.</font><font color="#ff0000">pidfile</font><font color="#F3E651">=.</font><font color="#ff0000">/run/perldaemon</font><font color="#F3E651">.</font><font color="#ff0000">pid</font>
+<i><font color="silver"># Path to the pidfile</font></i>
+daemon.pidfile=./run/perldaemon.pid
-<i><font color="#ababab"># Each module should run every run interval seconds</font></i>
-<font color="#ff0000">daemon</font><font color="#F3E651">.</font><font color="#ff0000">modules</font><font color="#F3E651">.</font><font color="#ff0000">runinterval</font><font color="#F3E651">=</font><font color="#bb00ff">3</font>
+<i><font color="silver"># Each module should run every run interval seconds</font></i>
+daemon.modules.runinterval=<font color="#000000">3</font>
-<i><font color="#ababab"># Path to the alive file (is touched every loop interval seconds, usable for monitoring)</font></i>
-<font color="#ff0000">daemon</font><font color="#F3E651">.</font><font color="#ff0000">alivefile</font><font color="#F3E651">=.</font><font color="#ff0000">/run/perldaemon</font><font color="#F3E651">.</font><font color="#ff0000">alive</font>
+<i><font color="silver"># Path to the alive file (is touched every loop interval seconds, usable for monitoring)</font></i>
+daemon.alivefile=./run/perldaemon.alive
-<i><font color="#ababab"># Specifies the working directory</font></i>
-<font color="#ff0000">daemon</font><font color="#F3E651">.</font><font color="#ff0000">wd</font><font color="#F3E651">=./</font>
+<i><font color="silver"># Specifies the working directory</font></i>
+daemon.wd=./
</pre>
<br />
<h2 style='display: inline' id='example-'>Example </h2><br />
@@ -109,17 +112,17 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">$ </font><font color="#F3E651">.</font><font color="#ff0000">/control keys </font><font color="#F3E651">|</font><font color="#ff0000"> grep daemon</font><font color="#F3E651">.</font><font color="#ff0000">loopinterval</font>
-<font color="#ff0000">daemon</font><font color="#F3E651">.</font><font color="#ff0000">loopinterval</font><font color="#F3E651">=</font><font color="#bb00ff">1</font>
-<font color="#ff0000">$ </font><font color="#F3E651">.</font><font color="#ff0000">/control keys daemon</font><font color="#F3E651">.</font><font color="#ff0000">loopinterval</font><font color="#F3E651">=</font><font color="#bb00ff">10</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> grep daemon</font><font color="#F3E651">.</font><font color="#ff0000">loopinterval</font>
-<font color="#ff0000">daemon</font><font color="#F3E651">.</font><font color="#ff0000">loopinterval</font><font color="#F3E651">=</font><font color="#bb00ff">10</font>
-<font color="#ff0000">$ </font><font color="#F3E651">.</font><font color="#ff0000">/control start daemon</font><font color="#F3E651">.</font><font color="#ff0000">loopinterval</font><font color="#F3E651">=</font><font color="#bb00ff">10</font><font color="#F3E651">;</font><font color="#ff0000"> sleep </font><font color="#bb00ff">10</font><font color="#F3E651">;</font><font color="#ff0000"> tail -n </font><font color="#bb00ff">2</font><font color="#ff0000"> log/perldaemon</font><font color="#F3E651">.</font><font color="#ff0000">log</font>
-<font color="#ff0000">Starting daemon now</font><font color="#F3E651">...</font>
-<font color="#ff0000">Mon Jun </font><font color="#bb00ff">13</font><font color="#ff0000"> </font><font color="#bb00ff">11</font><font color="#F3E651">:</font><font color="#bb00ff">29</font><font color="#F3E651">:</font><font color="#bb00ff">27</font><font color="#ff0000"> </font><font color="#bb00ff">2011</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">PID </font><font color="#bb00ff">2838</font><font color="#F3E651">):</font><font color="#ff0000"> Triggering PerlDaemonModules</font><font color="#F3E651">::</font><font color="#ff0000">ExampleModule </font>
-<font color="#F3E651">(</font><font color="#ff0000">last triggered before </font><font color="#bb00ff">10</font><font color="#F3E651">.</font><font color="#ff0000">002106s</font><font color="#F3E651">;</font><font color="#ff0000"> carry</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">7</font><font color="#F3E651">.</font><font color="#ff0000">002106s</font><font color="#F3E651">;</font><font color="#ff0000"> wanted interval</font><font color="#F3E651">:</font><font color="#ff0000"> 3s</font><font color="#F3E651">)</font>
-<font color="#ff0000">Mon Jun </font><font color="#bb00ff">13</font><font color="#ff0000"> </font><font color="#bb00ff">11</font><font color="#F3E651">:</font><font color="#bb00ff">29</font><font color="#F3E651">:</font><font color="#bb00ff">27</font><font color="#ff0000"> </font><font color="#bb00ff">2011</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">PID </font><font color="#bb00ff">2838</font><font color="#F3E651">):</font><font color="#ff0000"> ExampleModule Test </font><font color="#bb00ff">2</font>
-<font color="#ff0000">$ </font><font color="#F3E651">.</font><font color="#ff0000">/control stop</font>
-<font color="#ff0000">Stopping daemon now</font><font color="#F3E651">...</font>
+<pre>$ ./control keys | grep daemon.loopinterval
+daemon.loopinterval=<font color="#000000">1</font>
+$ ./control keys daemon.loopinterval=<font color="#000000">10</font> | grep daemon.loopinterval
+daemon.loopinterval=<font color="#000000">10</font>
+$ ./control start daemon.loopinterval=<font color="#000000">10</font>; sleep <font color="#000000">10</font>; tail -n <font color="#000000">2</font> log/perldaemon.log
+Starting daemon now...
+Mon Jun <font color="#000000">13</font> <font color="#000000">11</font>:<font color="#000000">29</font>:<font color="#000000">27</font> <font color="#000000">2011</font> (PID <font color="#000000">2838</font>): Triggering PerlDaemonModules::ExampleModule
+(last triggered before <font color="#000000">10</font>.002106s; carry: <font color="#000000">7</font>.002106s; wanted interval: 3s)
+Mon Jun <font color="#000000">13</font> <font color="#000000">11</font>:<font color="#000000">29</font>:<font color="#000000">27</font> <font color="#000000">2011</font> (PID <font color="#000000">2838</font>): ExampleModule Test <font color="#000000">2</font>
+$ ./control stop
+Stopping daemon now...
</pre>
<br />
<span>If you want to change that property forever, either edit perldaemon.conf or do this:</span><br />
@@ -128,7 +131,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">$ </font><font color="#F3E651">.</font><font color="#ff0000">/control keys daemon</font><font color="#F3E651">.</font><font color="#ff0000">loopinterval</font><font color="#F3E651">=</font><font color="#bb00ff">10</font><font color="#ff0000"> </font><font color="#F3E651">&gt;</font><font color="#ff0000"> new</font><font color="#F3E651">.</font><font color="#ff0000">conf</font><font color="#F3E651">;</font><font color="#ff0000"> mv new</font><font color="#F3E651">.</font><font color="#ff0000">conf conf/perldaemon</font><font color="#F3E651">.</font><font color="#ff0000">conf</font>
+<pre>$ ./control keys daemon.loopinterval=<font color="#000000">10</font> &gt; new.conf; mv new.conf conf/perldaemon.conf
</pre>
<br />
<h2 style='display: inline' id='hires-event-loop'>HiRes event loop</h2><br />
@@ -145,35 +148,35 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">package</font></b><font color="#ff0000"> PerlDaemonModules</font><font color="#F3E651">::</font><font color="#ff0000">ExampleModule</font><font color="#F3E651">;</font>
+<pre><b><u><font color="#000000">package</font></u></b> PerlDaemonModules::ExampleModule;
-<b><font color="#ffffff">use</font></b><font color="#ff0000"> strict</font><font color="#F3E651">;</font>
-<b><font color="#ffffff">use</font></b><font color="#ff0000"> warnings</font><font color="#F3E651">;</font>
+<b><u><font color="#000000">use</font></u></b> strict;
+<b><u><font color="#000000">use</font></u></b> warnings;
-<b><font color="#ffffff">sub</font></b><font color="#ff0000"> </font><font color="#7bc710">new</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">$$$</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">my</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">$class</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">$conf</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#ff0000">@_</font><font color="#F3E651">;</font>
+<b><u><font color="#000000">sub</font></u></b> new ($$$) {
+ <b><u><font color="#000000">my</font></u></b> ($class, $conf) = @_;
-<font color="#ff0000"> </font><b><font color="#ffffff">my</font></b><font color="#ff0000"> </font><font color="#ff0000">$self</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><b><font color="#ffffff">bless</font></b><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> conf </font><font color="#F3E651">=&gt;</font><font color="#ff0000"> </font><font color="#ff0000">$conf</font><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">$class</font><font color="#F3E651">;</font>
+ <b><u><font color="#000000">my</font></u></b> $self = <b><u><font color="#000000">bless</font></u></b> { conf =&gt; $conf }, $class;
-<font color="#ff0000"> </font><i><font color="#ababab"># Store some private module stuff</font></i>
-<font color="#ff0000"> </font><font color="#ff0000">$self</font><font color="#F3E651">-&gt;</font><font color="#F3E651">{</font><font color="#ff0000">counter</font><font color="#F3E651">}</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#F3E651">;</font>
+ <i><font color="silver"># Store some private module stuff</font></i>
+ $self-&gt;{counter} = <font color="#000000">0</font>;
-<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><font color="#ff0000">$self</font><font color="#F3E651">;</font>
-<font color="#F3E651">}</font>
+ <b><u><font color="#000000">return</font></u></b> $self;
+}
-<i><font color="#ababab"># Runs periodically in a loop (set interval in perldaemon.conf)</font></i>
-<b><font color="#ffffff">sub</font></b><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">$</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">my</font></b><font color="#ff0000"> </font><font color="#ff0000">$self</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b><font color="#F3E651">;</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">my</font></b><font color="#ff0000"> </font><font color="#ff0000">$conf</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#ff0000">$self</font><font color="#F3E651">-&gt;</font><font color="#F3E651">{</font><font color="#ff0000">conf</font><font color="#F3E651">}</font><font color="#F3E651">;</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">my</font></b><font color="#ff0000"> </font><font color="#ff0000">$logger</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#ff0000">$conf</font><font color="#F3E651">-&gt;</font><font color="#F3E651">{</font><font color="#ff0000">logger</font><font color="#F3E651">}</font><font color="#F3E651">;</font>
+<i><font color="silver"># Runs periodically in a loop (set interval in perldaemon.conf)</font></i>
+<b><u><font color="#000000">sub</font></u></b> <b><u><font color="#000000">do</font></u></b> ($) {
+ <b><u><font color="#000000">my</font></u></b> $self = <b><u><font color="#000000">shift</font></u></b>;
+ <b><u><font color="#000000">my</font></u></b> $conf = $self-&gt;{conf};
+ <b><u><font color="#000000">my</font></u></b> $logger = $conf-&gt;{logger};
-<font color="#ff0000"> </font><i><font color="#ababab"># Calculate some private module stuff</font></i>
-<font color="#ff0000"> </font><b><font color="#ffffff">my</font></b><font color="#ff0000"> </font><font color="#ff0000">$count</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#F3E651">++</font><font color="#ff0000">$self</font><font color="#F3E651">-&gt;</font><font color="#F3E651">{</font><font color="#ff0000">counter</font><font color="#F3E651">}</font><font color="#F3E651">;</font>
+ <i><font color="silver"># Calculate some private module stuff</font></i>
+ <b><u><font color="#000000">my</font></u></b> $count = ++$self-&gt;{counter};
-<font color="#ff0000"> </font><font color="#ff0000">$logger</font><font color="#F3E651">-&gt;</font><font color="#7bc710">logmsg</font><font color="#F3E651">(</font><font color="#bb00ff">"ExampleModule Test $count"</font><font color="#F3E651">);</font>
-<font color="#F3E651">}</font>
+ $logger-&gt;logmsg(<font color="#808080">"ExampleModule Test $count"</font>);
+}
-<font color="#bb00ff">1</font><font color="#F3E651">;</font>
+<font color="#000000">1</font>;
</pre>
<br />
<h3 style='display: inline' id='your-own-module'>Your own module</h3><br />
@@ -184,11 +187,11 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000"> cd </font><font color="#F3E651">.</font><font color="#ff0000">/lib/PerlDaemonModules</font><font color="#F3E651">/</font>
-<font color="#ff0000"> cp ExampleModule</font><font color="#F3E651">.</font><font color="#ff0000">pm YourModule</font><font color="#F3E651">.</font><font color="#ff0000">pm</font>
-<font color="#ff0000"> vi YourModule</font><font color="#F3E651">.</font><font color="#ff0000">pm</font>
-<font color="#ff0000"> cd -</font>
-<font color="#ff0000"> </font><font color="#F3E651">.</font><font color="#ff0000">/bin/perldaemon restart </font><font color="#F3E651">(</font><font color="#ff0000">or shortcurt </font><font color="#F3E651">.</font><font color="#ff0000">/control restart</font><font color="#F3E651">)</font>
+<pre> cd ./lib/PerlDaemonModules/
+ cp ExampleModule.pm YourModule.pm
+ vi YourModule.pm
+ cd -
+ ./bin/perldaemon restart (or shortcurt ./control restart)
</pre>
<br />
<span>Now watch <span class='inlinecode'>./log/perldaemon.log</span> closely. It is a good practice to test your modules in &#39;foreground mode&#39; (see above how to do that).</span><br />
@@ -211,7 +214,7 @@ http://www.gnu.org/software/src-highlite -->
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html b/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html
index 8fc033cb..c609f408 100644
--- a/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html
+++ b/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='the-fibonacciplrakuc-polyglot'>The fibonacci.pl.raku.c Polyglot</h1><br />
<br />
<span class='quote'>Published at 2014-03-24T21:32:53+00:00; Updated at 2022-04-23</span><br />
@@ -24,47 +27,47 @@
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#include &lt;stdio.h&gt;</font></i>
+<pre><i><font color="silver">#include &lt;stdio.h&gt;</font></i>
-<i><font color="#ababab">#define $arg function_argument</font></i>
-<i><font color="#ababab">#define my int</font></i>
-<i><font color="#ababab">#define sub int</font></i>
-<i><font color="#ababab">#define BEGIN int main(void)</font></i>
+<i><font color="silver">#define $arg function_argument</font></i>
+<i><font color="silver">#define my int</font></i>
+<i><font color="silver">#define sub int</font></i>
+<i><font color="silver">#define BEGIN int main(void)</font></i>
-<b><font color="#ffffff">my</font></b><font color="#ff0000"> </font><font color="#ff0000">$arg</font><font color="#F3E651">;</font>
+<b><u><font color="#000000">my</font></u></b> $arg;
-<b><font color="#ffffff">sub</font></b><font color="#ff0000"> </font><font color="#7bc710">hello</font><font color="#F3E651">()</font><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">printf</font></b><font color="#F3E651">(</font><font color="#bb00ff">"Hello, welcome to the Fibonacci Numbers!\n"</font><font color="#F3E651">);</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">printf</font></b><font color="#F3E651">(</font><font color="#bb00ff">"This program is all, valid C and C++ and Perl and Raku code!\n"</font><font color="#F3E651">);</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">printf</font></b><font color="#F3E651">(</font><font color="#bb00ff">"It calculates all fibonacci numbers from 0 to 9!\n\n"</font><font color="#F3E651">);</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#F3E651">;</font>
-<font color="#F3E651">}</font>
+<b><u><font color="#000000">sub</font></u></b> hello() {
+ <b><u><font color="#000000">printf</font></u></b>(<font color="#808080">"Hello, welcome to the Fibonacci Numbers!\n"</font>);
+ <b><u><font color="#000000">printf</font></u></b>(<font color="#808080">"This program is all, valid C and C++ and Perl and Raku code!\n"</font>);
+ <b><u><font color="#000000">printf</font></u></b>(<font color="#808080">"It calculates all fibonacci numbers from 0 to 9!\n\n"</font>);
+ <b><u><font color="#000000">return</font></u></b> <font color="#000000">0</font>;
+}
-<b><font color="#ffffff">sub</font></b><font color="#ff0000"> </font><font color="#7bc710">fibonacci</font><font color="#F3E651">()</font><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">my</font></b><font color="#ff0000"> </font><font color="#ff0000">$n</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#ff0000">$arg</font><font color="#F3E651">;</font>
+<b><u><font color="#000000">sub</font></u></b> fibonacci() {
+ <b><u><font color="#000000">my</font></u></b> $n = $arg;
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">$n</font><font color="#ff0000"> </font><font color="#F3E651">&lt;</font><font color="#ff0000"> </font><font color="#bb00ff">2</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><font color="#ff0000">$n</font><font color="#F3E651">;</font>
-<font color="#ff0000"> </font><font color="#F3E651">}</font>
+ <b><u><font color="#000000">if</font></u></b> ($n &lt; <font color="#000000">2</font>) {
+ <b><u><font color="#000000">return</font></u></b> $n;
+ }
-<font color="#ff0000"> </font><font color="#ff0000">$arg</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#ff0000">$n</font><font color="#ff0000"> </font><font color="#F3E651">-</font><font color="#ff0000"> </font><font color="#bb00ff">1</font><font color="#F3E651">;</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">my</font></b><font color="#ff0000"> </font><font color="#ff0000">$fib1</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#7bc710">fibonacci</font><font color="#F3E651">();</font>
-<font color="#ff0000"> </font><font color="#ff0000">$arg</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#ff0000">$n</font><font color="#ff0000"> </font><font color="#F3E651">-</font><font color="#ff0000"> </font><font color="#bb00ff">2</font><font color="#F3E651">;</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">my</font></b><font color="#ff0000"> </font><font color="#ff0000">$fib2</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#7bc710">fibonacci</font><font color="#F3E651">();</font>
+ $arg = $n - <font color="#000000">1</font>;
+ <b><u><font color="#000000">my</font></u></b> $fib1 = fibonacci();
+ $arg = $n - <font color="#000000">2</font>;
+ <b><u><font color="#000000">my</font></u></b> $fib2 = fibonacci();
-<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><font color="#ff0000">$fib1</font><font color="#ff0000"> </font><font color="#F3E651">+</font><font color="#ff0000"> </font><font color="#ff0000">$fib2</font><font color="#F3E651">;</font>
-<font color="#F3E651">}</font>
+ <b><u><font color="#000000">return</font></u></b> $fib1 + $fib2;
+}
-<font color="#ff0000">BEGIN </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#7bc710">hello</font><font color="#F3E651">();</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">my</font></b><font color="#ff0000"> </font><font color="#ff0000">$i</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#F3E651">;</font>
+BEGIN {
+ hello();
+ <b><u><font color="#000000">my</font></u></b> $i = <font color="#000000">0</font>;
-<font color="#ff0000"> </font><b><font color="#ffffff">while</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">$i</font><font color="#ff0000"> </font><font color="#F3E651">&lt;=</font><font color="#ff0000"> </font><font color="#bb00ff">10</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#ff0000">$arg</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#ff0000">$i</font><font color="#F3E651">;</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">printf</font></b><font color="#F3E651">(</font><font color="#bb00ff">"fib(%d) = %d\n"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">$i</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#7bc710">fibonacci</font><font color="#F3E651">());</font>
-<font color="#ff0000"> </font><font color="#ff0000">$i</font><font color="#F3E651">++;</font>
-<font color="#ff0000"> </font><font color="#F3E651">}</font>
-<font color="#F3E651">}</font>
+ <b><u><font color="#000000">while</font></u></b> ($i &lt;= <font color="#000000">10</font>) {
+ $arg = $i;
+ <b><u><font color="#000000">printf</font></u></b>(<font color="#808080">"fib(%d) = %d\n"</font>, $i, fibonacci());
+ $i++;
+ }
+}
</pre>
<br />
<span>You can find the full source code at GitHub:</span><br />
@@ -77,41 +80,41 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> gcc fibonacci</font><font color="#F3E651">.</font><font color="#ff0000">pl</font><font color="#F3E651">.</font><font color="#ff0000">raku</font><font color="#F3E651">.</font><font color="#ff0000">c -o fibonacci</font>
-<font color="#F3E651">%</font><font color="#ff0000"> </font><font color="#F3E651">.</font><font color="#ff0000">/fibonacci</font>
-<font color="#ff0000">Hello</font><font color="#F3E651">,</font><font color="#ff0000"> welcome to the Fibonacci Numbers</font><font color="#F3E651">!</font>
-<font color="#ff0000">This program is all</font><font color="#F3E651">,</font><font color="#ff0000"> valid C and C</font><font color="#F3E651">++</font><font color="#ff0000"> and Perl and Raku code</font><font color="#F3E651">!</font>
-<font color="#ff0000">It calculates all fibonacci numbers from </font><font color="#bb00ff">0</font><font color="#ff0000"> to </font><font color="#bb00ff">9</font><font color="#F3E651">!</font>
+<pre>% gcc fibonacci.pl.raku.c -o fibonacci
+% ./fibonacci
+Hello, welcome to the Fibonacci Numbers!
+This program is all, valid C and C++ and Perl and Raku code!
+It calculates all fibonacci numbers from <font color="#000000">0</font> to <font color="#000000">9</font>!
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">0</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">1</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">1</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">2</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">1</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">3</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">2</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">4</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">3</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">5</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">5</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">6</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">8</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">7</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">13</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">8</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">21</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">9</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">34</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">10</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">55</font>
+fib(<font color="#000000">0</font>) = <font color="#000000">0</font>
+fib(<font color="#000000">1</font>) = <font color="#000000">1</font>
+fib(<font color="#000000">2</font>) = <font color="#000000">1</font>
+fib(<font color="#000000">3</font>) = <font color="#000000">2</font>
+fib(<font color="#000000">4</font>) = <font color="#000000">3</font>
+fib(<font color="#000000">5</font>) = <font color="#000000">5</font>
+fib(<font color="#000000">6</font>) = <font color="#000000">8</font>
+fib(<font color="#000000">7</font>) = <font color="#000000">13</font>
+fib(<font color="#000000">8</font>) = <font color="#000000">21</font>
+fib(<font color="#000000">9</font>) = <font color="#000000">34</font>
+fib(<font color="#000000">10</font>) = <font color="#000000">55</font>
-<font color="#F3E651">%</font><font color="#ff0000"> g</font><font color="#F3E651">++</font><font color="#ff0000"> fibonacci</font><font color="#F3E651">.</font><font color="#ff0000">pl</font><font color="#F3E651">.</font><font color="#ff0000">raku</font><font color="#F3E651">.</font><font color="#ff0000">c -o fibonacci</font>
-<font color="#F3E651">%</font><font color="#ff0000"> </font><font color="#F3E651">.</font><font color="#ff0000">/fibonacci</font>
-<font color="#ff0000">Hello</font><font color="#F3E651">,</font><font color="#ff0000"> welcome to the Fibonacci Numbers</font><font color="#F3E651">!</font>
-<font color="#ff0000">This program is all</font><font color="#F3E651">,</font><font color="#ff0000"> valid C and C</font><font color="#F3E651">++</font><font color="#ff0000"> and Perl and Raku code</font><font color="#F3E651">!</font>
-<font color="#ff0000">It calculates all fibonacci numbers from </font><font color="#bb00ff">0</font><font color="#ff0000"> to </font><font color="#bb00ff">9</font><font color="#F3E651">!</font>
+% g++ fibonacci.pl.raku.c -o fibonacci
+% ./fibonacci
+Hello, welcome to the Fibonacci Numbers!
+This program is all, valid C and C++ and Perl and Raku code!
+It calculates all fibonacci numbers from <font color="#000000">0</font> to <font color="#000000">9</font>!
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">0</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">1</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">1</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">2</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">1</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">3</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">2</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">4</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">3</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">5</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">5</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">6</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">8</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">7</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">13</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">8</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">21</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">9</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">34</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">10</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">55</font>
+fib(<font color="#000000">0</font>) = <font color="#000000">0</font>
+fib(<font color="#000000">1</font>) = <font color="#000000">1</font>
+fib(<font color="#000000">2</font>) = <font color="#000000">1</font>
+fib(<font color="#000000">3</font>) = <font color="#000000">2</font>
+fib(<font color="#000000">4</font>) = <font color="#000000">3</font>
+fib(<font color="#000000">5</font>) = <font color="#000000">5</font>
+fib(<font color="#000000">6</font>) = <font color="#000000">8</font>
+fib(<font color="#000000">7</font>) = <font color="#000000">13</font>
+fib(<font color="#000000">8</font>) = <font color="#000000">21</font>
+fib(<font color="#000000">9</font>) = <font color="#000000">34</font>
+fib(<font color="#000000">10</font>) = <font color="#000000">55</font>
</pre>
<br />
<h3 style='display: inline' id='let-s-run-it-with-perl-and-raku'>Let&#39;s run it with Perl and Raku</h3><br />
@@ -120,39 +123,39 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> perl fibonacci</font><font color="#F3E651">.</font><font color="#ff0000">pl</font><font color="#F3E651">.</font><font color="#ff0000">raku</font><font color="#F3E651">.</font><font color="#ff0000">c</font>
-<font color="#ff0000">Hello</font><font color="#F3E651">,</font><font color="#ff0000"> welcome to the Fibonacci Numbers</font><font color="#F3E651">!</font>
-<font color="#ff0000">This program is all</font><font color="#F3E651">,</font><font color="#ff0000"> valid C and C</font><font color="#F3E651">++</font><font color="#ff0000"> and Perl and Raku code</font><font color="#F3E651">!</font>
-<font color="#ff0000">It calculates all fibonacci numbers from </font><font color="#bb00ff">0</font><font color="#ff0000"> to </font><font color="#bb00ff">9</font><font color="#F3E651">!</font>
+<pre>% perl fibonacci.pl.raku.c
+Hello, welcome to the Fibonacci Numbers!
+This program is all, valid C and C++ and Perl and Raku code!
+It calculates all fibonacci numbers from <font color="#000000">0</font> to <font color="#000000">9</font>!
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">0</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">1</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">1</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">2</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">1</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">3</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">2</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">4</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">3</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">5</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">5</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">6</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">8</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">7</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">13</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">8</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">21</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">9</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">34</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">10</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">55</font>
+fib(<font color="#000000">0</font>) = <font color="#000000">0</font>
+fib(<font color="#000000">1</font>) = <font color="#000000">1</font>
+fib(<font color="#000000">2</font>) = <font color="#000000">1</font>
+fib(<font color="#000000">3</font>) = <font color="#000000">2</font>
+fib(<font color="#000000">4</font>) = <font color="#000000">3</font>
+fib(<font color="#000000">5</font>) = <font color="#000000">5</font>
+fib(<font color="#000000">6</font>) = <font color="#000000">8</font>
+fib(<font color="#000000">7</font>) = <font color="#000000">13</font>
+fib(<font color="#000000">8</font>) = <font color="#000000">21</font>
+fib(<font color="#000000">9</font>) = <font color="#000000">34</font>
+fib(<font color="#000000">10</font>) = <font color="#000000">55</font>
-<font color="#F3E651">%</font><font color="#ff0000"> raku fibonacci</font><font color="#F3E651">.</font><font color="#ff0000">pl</font><font color="#F3E651">.</font><font color="#ff0000">raku</font><font color="#F3E651">.</font><font color="#ff0000">c</font>
-<font color="#ff0000">Hello</font><font color="#F3E651">,</font><font color="#ff0000"> welcome to the Fibonacci Numbers</font><font color="#F3E651">!</font>
-<font color="#ff0000">This program is all</font><font color="#F3E651">,</font><font color="#ff0000"> valid C and C</font><font color="#F3E651">++</font><font color="#ff0000"> and Perl and Raku code</font><font color="#F3E651">!</font>
-<font color="#ff0000">It calculates all fibonacci numbers from </font><font color="#bb00ff">0</font><font color="#ff0000"> to </font><font color="#bb00ff">9</font><font color="#F3E651">!</font>
+% raku fibonacci.pl.raku.c
+Hello, welcome to the Fibonacci Numbers!
+This program is all, valid C and C++ and Perl and Raku code!
+It calculates all fibonacci numbers from <font color="#000000">0</font> to <font color="#000000">9</font>!
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">0</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">1</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">1</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">2</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">1</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">3</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">2</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">4</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">3</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">5</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">5</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">6</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">8</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">7</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">13</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">8</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">21</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">9</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">34</font>
-<font color="#ff0000">fib</font><font color="#F3E651">(</font><font color="#bb00ff">10</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">55</font>
+fib(<font color="#000000">0</font>) = <font color="#000000">0</font>
+fib(<font color="#000000">1</font>) = <font color="#000000">1</font>
+fib(<font color="#000000">2</font>) = <font color="#000000">1</font>
+fib(<font color="#000000">3</font>) = <font color="#000000">2</font>
+fib(<font color="#000000">4</font>) = <font color="#000000">3</font>
+fib(<font color="#000000">5</font>) = <font color="#000000">5</font>
+fib(<font color="#000000">6</font>) = <font color="#000000">8</font>
+fib(<font color="#000000">7</font>) = <font color="#000000">13</font>
+fib(<font color="#000000">8</font>) = <font color="#000000">21</font>
+fib(<font color="#000000">9</font>) = <font color="#000000">34</font>
+fib(<font color="#000000">10</font>) = <font color="#000000">55</font>
</pre>
<br />
<span>It&#39;s entertaining to play with :-).</span><br />
@@ -161,7 +164,7 @@ http://www.gnu.org/software/src-highlite -->
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html b/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html
index 503bb5c1..97ec6c54 100644
--- a/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html
+++ b/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='run-debian-on-your-phone-with-debroid'>Run Debian on your phone with Debroid</h1><br />
<br />
<span class='quote'>Published at 2015-12-05T16:12:57+00:00; Updated at 2021-05-16</span><br />
@@ -53,24 +56,24 @@
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">sudo dnf install debootstrap</font>
-<i><font color="#ababab"># 5g</font></i>
-<font color="#ff0000">dd </font><b><font color="#ffffff">if</font></b><font color="#F3E651">=</font><font color="#ff0000">/dev/zero </font><font color="#ff0000">of</font><font color="#F3E651">=</font><font color="#ff0000">jessie</font><font color="#F3E651">.</font><font color="#ff0000">img </font><font color="#ff0000">bs</font><font color="#F3E651">=</font><font color="#ff0000">$[</font><font color="#ff0000"> </font><font color="#bb00ff">1024</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#bb00ff">1024</font><font color="#ff0000"> </font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#ff0000">count</font><font color="#F3E651">=</font><font color="#ff0000">$[</font><font color="#ff0000"> </font><font color="#bb00ff">1024</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#ff0000"> </font><font color="#F3E651">]</font>
+<pre>sudo dnf install debootstrap
+<i><font color="silver"># 5g</font></i>
+dd <b><u><font color="#000000">if</font></u></b>=/dev/zero of=jessie.img bs=$[ <font color="#000000">1024</font> * <font color="#000000">1024</font> ] \
+ count=$[ <font color="#000000">1024</font> * <font color="#000000">5</font> ]
-<i><font color="#ababab"># Show used loop devices</font></i>
-<font color="#ff0000">sudo losetup -f</font>
-<i><font color="#ababab"># Store the next free one to $loop</font></i>
-<font color="#ff0000">loop</font><font color="#F3E651">=</font><font color="#ff0000">loopN</font>
-<font color="#ff0000">sudo losetup /dev</font><font color="#F3E651">/</font><font color="#ff0000">$loop</font><font color="#ff0000"> jessie</font><font color="#F3E651">.</font><font color="#ff0000">img</font>
+<i><font color="silver"># Show used loop devices</font></i>
+sudo losetup -f
+<i><font color="silver"># Store the next free one to $loop</font></i>
+loop=loopN
+sudo losetup /dev/$loop jessie.img
-<font color="#ff0000">mkdir jessie</font>
-<font color="#ff0000">sudo mkfs</font><font color="#F3E651">.</font><font color="#ff0000">ext4 /dev</font><font color="#F3E651">/</font><font color="#ff0000">$loop</font>
-<font color="#ff0000">sudo mount /dev</font><font color="#F3E651">/</font><font color="#ff0000">$loop</font><font color="#ff0000"> jessie</font>
-<font color="#ff0000">sudo debootstrap --foreign --variant</font><font color="#F3E651">=</font><font color="#ff0000">minbase </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --arch armel jessie jessie</font><font color="#F3E651">/</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> http</font><font color="#F3E651">:</font><font color="#ff0000">//http</font><font color="#F3E651">.</font><font color="#ff0000">debian</font><font color="#F3E651">.</font><font color="#ff0000">net/debian</font>
-<font color="#ff0000">sudo umount jessie</font>
+mkdir jessie
+sudo mkfs.ext4 /dev/$loop
+sudo mount /dev/$loop jessie
+sudo debootstrap --foreign --variant=minbase \
+ --arch armel jessie jessie/ \
+ http://http.debian.net/debian
+sudo umount jessie
</pre>
<br />
<h3 style='display: inline' id='copy-debian-image-to-the-phone'>Copy Debian image to the phone</h3><br />
@@ -81,42 +84,42 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">adb root </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> adb wait-for-device </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> adb shell</font>
-<font color="#ff0000">mkdir -p /storage/sdcard</font><font color="#bb00ff">1</font><font color="#ff0000">/Linux/jessie</font>
-<b><font color="#ffffff">exit</font></b>
+<pre>adb root &amp;&amp; adb wait-for-device &amp;&amp; adb shell
+mkdir -p /storage/sdcard<font color="#000000">1</font>/Linux/jessie
+<b><u><font color="#000000">exit</font></u></b>
-<i><font color="#ababab"># Sparse image problem, may be too big for copying otherwise</font></i>
-<font color="#ff0000">gzip jessie</font><font color="#F3E651">.</font><font color="#ff0000">img</font>
-<i><font color="#ababab"># Copy over</font></i>
-<font color="#ff0000">adb push jessie</font><font color="#F3E651">.</font><font color="#ff0000">img</font><font color="#F3E651">.</font><font color="#ff0000">gz /storage/sdcard</font><font color="#bb00ff">1</font><font color="#ff0000">/Linux/jessie</font><font color="#F3E651">.</font><font color="#ff0000">img</font><font color="#F3E651">.</font><font color="#ff0000">gz</font>
-<font color="#ff0000">adb shell</font>
-<font color="#ff0000">cd /storage/sdcard</font><font color="#bb00ff">1</font><font color="#ff0000">/Linux</font>
-<font color="#ff0000">gunzip jessie</font><font color="#F3E651">.</font><font color="#ff0000">img</font><font color="#F3E651">.</font><font color="#ff0000">gz</font>
+<i><font color="silver"># Sparse image problem, may be too big for copying otherwise</font></i>
+gzip jessie.img
+<i><font color="silver"># Copy over</font></i>
+adb push jessie.img.gz /storage/sdcard<font color="#000000">1</font>/Linux/jessie.img.gz
+adb shell
+cd /storage/sdcard<font color="#000000">1</font>/Linux
+gunzip jessie.img.gz
-<i><font color="#ababab"># Show used loop devices</font></i>
-<font color="#ff0000">losetup -f</font>
-<i><font color="#ababab"># Store the next free one to $loop</font></i>
-<font color="#ff0000">loop</font><font color="#F3E651">=</font><font color="#ff0000">loopN</font>
+<i><font color="silver"># Show used loop devices</font></i>
+losetup -f
+<i><font color="silver"># Store the next free one to $loop</font></i>
+loop=loopN
-<i><font color="#ababab"># Use the next free one (replace the loop number)</font></i>
-<font color="#ff0000">losetup /dev/block</font><font color="#F3E651">/</font><font color="#ff0000">$loop</font><font color="#ff0000"> </font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/jessie</font><font color="#F3E651">.</font><font color="#ff0000">img</font>
-<font color="#ff0000">mount -t ext4 /dev/block</font><font color="#F3E651">/</font><font color="#ff0000">$loop</font><font color="#ff0000"> </font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/jessie</font>
+<i><font color="silver"># Use the next free one (replace the loop number)</font></i>
+losetup /dev/block/$loop $(pwd)/jessie.img
+mount -t ext4 /dev/block/$loop $(pwd)/jessie
-<i><font color="#ababab"># Bind-Mound proc, dev, sys`</font></i>
-<font color="#ff0000">busybox mount --bind /proc </font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/jessie/proc</font>
-<font color="#ff0000">busybox mount --bind /dev </font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/jessie/dev</font>
-<font color="#ff0000">busybox mount --bind /dev/pts </font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/jessie/dev/pts</font>
-<font color="#ff0000">busybox mount --bind /sys </font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/jessie/sys</font>
+<i><font color="silver"># Bind-Mound proc, dev, sys`</font></i>
+busybox mount --bind /proc $(pwd)/jessie/proc
+busybox mount --bind /dev $(pwd)/jessie/dev
+busybox mount --bind /dev/pts $(pwd)/jessie/dev/pts
+busybox mount --bind /sys $(pwd)/jessie/sys
-<i><font color="#ababab"># Bind-Mound the rest of Android</font></i>
-<font color="#ff0000">mkdir -p </font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/jessie/storage/sdcard{</font><font color="#bb00ff">0</font><font color="#F3E651">,</font><font color="#bb00ff">1</font><font color="#ff0000">}</font>
-<font color="#ff0000">busybox mount --bind /storage/emulated </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/jessie/storage/sdcard</font><font color="#bb00ff">0</font>
-<font color="#ff0000">busybox mount --bind /storage/sdcard</font><font color="#bb00ff">1</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/jessie/storage/sdcard</font><font color="#bb00ff">1</font>
+<i><font color="silver"># Bind-Mound the rest of Android</font></i>
+mkdir -p $(pwd)/jessie/storage/sdcard{<font color="#000000">0</font>,<font color="#000000">1</font>}
+busybox mount --bind /storage/emulated \
+ $(pwd)/jessie/storage/sdcard<font color="#000000">0</font>
+busybox mount --bind /storage/sdcard<font color="#000000">1</font> \
+ $(pwd)/jessie/storage/sdcard<font color="#000000">1</font>
-<i><font color="#ababab"># Check mounts</font></i>
-<font color="#ff0000">mount </font><font color="#F3E651">|</font><font color="#ff0000"> grep jessie</font>
+<i><font color="silver"># Check mounts</font></i>
+mount | grep jessie
</pre>
<br />
<h3 style='display: inline' id='second-debootstrap-stage'>Second debootstrap stage</h3><br />
@@ -127,11 +130,11 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">chroot </font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/jessie /bin/bash -l</font>
-<b><font color="#ffffff">export</font></b><font color="#ff0000"> </font><font color="#ff0000">PATH</font><font color="#F3E651">=</font><font color="#ff0000">/bin</font><font color="#F3E651">:</font><font color="#ff0000">/usr/bin</font><font color="#F3E651">:</font><font color="#ff0000">/usr/local/bin</font><font color="#F3E651">:</font><font color="#ff0000">/sbin</font><font color="#F3E651">:</font><font color="#ff0000">/usr/sbin</font><font color="#F3E651">:</font><font color="#ff0000">/usr/local/sbin</font>
-<font color="#ff0000">/debootstrap/debootstrap --second-stage</font>
-<b><font color="#ffffff">exit</font></b><font color="#ff0000"> </font><i><font color="#ababab"># Leave chroot</font></i>
-<b><font color="#ffffff">exit</font></b><font color="#ff0000"> </font><i><font color="#ababab"># Leave adb shell</font></i>
+<pre>chroot $(pwd)/jessie /bin/bash -l
+<b><u><font color="#000000">export</font></u></b> PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin
+/debootstrap/debootstrap --second-stage
+<b><u><font color="#000000">exit</font></u></b> <i><font color="silver"># Leave chroot</font></i>
+<b><u><font color="#000000">exit</font></u></b> <i><font color="silver"># Leave adb shell</font></i>
</pre>
<br />
<h3 style='display: inline' id='setup-of-various-scripts'>Setup of various scripts</h3><br />
@@ -142,36 +145,36 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab"># Install script jessie.sh</font></i>
-<font color="#ff0000">adb push storage/sdcard</font><font color="#bb00ff">1</font><font color="#ff0000">/Linux/jessie</font><font color="#F3E651">.</font><font color="#ff0000">sh /storage/sdcard/Linux/jessie</font><font color="#F3E651">.</font><font color="#ff0000">sh</font>
-<font color="#ff0000">adb shell</font>
-<font color="#ff0000">cd /storage/sdcard</font><font color="#bb00ff">1</font><font color="#ff0000">/Linux</font>
-<font color="#ff0000">sh jessie</font><font color="#F3E651">.</font><font color="#ff0000">sh enter</font>
+<pre><i><font color="silver"># Install script jessie.sh</font></i>
+adb push storage/sdcard<font color="#000000">1</font>/Linux/jessie.sh /storage/sdcard/Linux/jessie.sh
+adb shell
+cd /storage/sdcard<font color="#000000">1</font>/Linux
+sh jessie.sh enter
-<i><font color="#ababab"># Bashrc</font></i>
-<font color="#ff0000">cat </font><font color="#F3E651">&lt;&lt;</font><font color="#ff0000">END </font><font color="#F3E651">&gt;~/.</font><font color="#ff0000">bashrc</font>
-<b><font color="#ffffff">export</font></b><font color="#ff0000"> </font><font color="#ff0000">PATH</font><font color="#F3E651">=</font><font color="#ff0000">/usr/local/sbin</font><font color="#F3E651">:</font><font color="#ff0000">/usr/local/bin</font><font color="#F3E651">:</font><font color="#ff0000">/usr/sbin</font><font color="#F3E651">:</font><font color="#ff0000">/usr/bin</font><font color="#F3E651">:</font><font color="#ff0000">/sbin</font><font color="#F3E651">:</font><font color="#ff0000">/bin</font><font color="#F3E651">:</font><font color="#ff0000">$PATH</font>
-<b><font color="#ffffff">export</font></b><font color="#ff0000"> </font><font color="#ff0000">EDITOR</font><font color="#F3E651">=</font><font color="#ff0000">vim</font>
-<font color="#ff0000">hostname </font><font color="#ff0000">$(</font><font color="#ff0000">cat /etc/hostname</font><font color="#F3E651">)</font>
-<font color="#ff0000">END</font>
+<i><font color="silver"># Bashrc</font></i>
+cat &lt;&lt;END &gt;~/.bashrc
+<b><u><font color="#000000">export</font></u></b> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH
+<b><u><font color="#000000">export</font></u></b> EDITOR=vim
+hostname $(cat /etc/hostname)
+END
-<i><font color="#ababab"># Fixing an error message while loading the profile</font></i>
-<font color="#ff0000">sed -i s</font><i><font color="#ababab">#id#/usr/bin/id# /etc/profile</font></i>
+<i><font color="silver"># Fixing an error message while loading the profile</font></i>
+sed -i s<i><font color="silver">#id#/usr/bin/id# /etc/profile</font></i>
-<i><font color="#ababab"># Setting the hostname</font></i>
-<font color="#ff0000">echo phobos </font><font color="#F3E651">&gt;</font><font color="#ff0000"> /etc/hostname</font>
-<font color="#ff0000">echo </font><font color="#bb00ff">127.0</font><font color="#F3E651">.</font><font color="#bb00ff">0.1</font><font color="#ff0000"> phobos </font><font color="#F3E651">&gt;</font><font color="#ff0000"> /etc/hosts</font>
-<font color="#ff0000">hostname phobos</font>
+<i><font color="silver"># Setting the hostname</font></i>
+echo phobos &gt; /etc/hostname
+echo <font color="#000000">127.0</font>.<font color="#000000">0.1</font> phobos &gt; /etc/hosts
+hostname phobos
-<i><font color="#ababab"># Apt-sources</font></i>
-<font color="#ff0000">cat </font><font color="#F3E651">&lt;&lt;</font><font color="#ff0000">END </font><font color="#F3E651">&gt;</font><font color="#ff0000"> sources</font><font color="#F3E651">.</font><font color="#ff0000">list</font>
-<font color="#ff0000">deb http</font><font color="#F3E651">:</font><font color="#ff0000">//ftp</font><font color="#F3E651">.</font><font color="#ff0000">uk</font><font color="#F3E651">.</font><font color="#ff0000">debian</font><font color="#F3E651">.</font><font color="#ff0000">org/debian</font><font color="#F3E651">/</font><font color="#ff0000"> jessie main contrib non-free</font>
-<font color="#ff0000">deb-src http</font><font color="#F3E651">:</font><font color="#ff0000">//ftp</font><font color="#F3E651">.</font><font color="#ff0000">uk</font><font color="#F3E651">.</font><font color="#ff0000">debian</font><font color="#F3E651">.</font><font color="#ff0000">org/debian</font><font color="#F3E651">/</font><font color="#ff0000"> jessie main contrib non-free</font>
-<font color="#ff0000">END</font>
-<font color="#ff0000">apt-get update</font>
-<font color="#ff0000">apt-get upgrade</font>
-<font color="#ff0000">apt-get dist-upgrade</font>
-<b><font color="#ffffff">exit</font></b><font color="#ff0000"> </font><i><font color="#ababab"># Exit chroot</font></i>
+<i><font color="silver"># Apt-sources</font></i>
+cat &lt;&lt;END &gt; sources.list
+deb http://ftp.uk.debian.org/debian/ jessie main contrib non-free
+deb-src http://ftp.uk.debian.org/debian/ jessie main contrib non-free
+END
+apt-get update
+apt-get upgrade
+apt-get dist-upgrade
+<b><u><font color="#000000">exit</font></u></b> <i><font color="silver"># Exit chroot</font></i>
</pre>
<br />
<h3 style='display: inline' id='entering-debroid-and-enable-a-service'>Entering Debroid and enable a service</h3><br />
@@ -182,19 +185,19 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">sh jessie</font><font color="#F3E651">.</font><font color="#ff0000">sh enter</font>
+<pre>sh jessie.sh enter
-<i><font color="#ababab"># Setup example serice uptimed</font></i>
-<font color="#ff0000">apt-get install uptimed</font>
-<font color="#ff0000">cat </font><font color="#F3E651">&lt;&lt;</font><font color="#ff0000">END </font><font color="#F3E651">&gt;</font><font color="#ff0000"> /etc/rc</font><font color="#F3E651">.</font><font color="#ff0000">debroid</font>
-<b><font color="#ffffff">export</font></b><font color="#ff0000"> </font><font color="#ff0000">PATH</font><font color="#F3E651">=</font><font color="#ff0000">/usr/local/sbin</font><font color="#F3E651">:</font><font color="#ff0000">/usr/local/bin</font><font color="#F3E651">:</font><font color="#ff0000">/usr/sbin</font><font color="#F3E651">:</font><font color="#ff0000">/usr/bin</font><font color="#F3E651">:</font><font color="#ff0000">/sbin</font><font color="#F3E651">:</font><font color="#ff0000">/bin</font><font color="#F3E651">:</font><font color="#ff0000">$PATH</font>
-<font color="#ff0000">service uptimed status </font><font color="#F3E651">&amp;&gt;</font><font color="#ff0000">/dev/null </font><font color="#F3E651">||</font><font color="#ff0000"> service uptimed start</font>
-<b><font color="#ffffff">exit</font></b><font color="#ff0000"> </font><font color="#bb00ff">0</font>
-<font color="#ff0000">END</font>
+<i><font color="silver"># Setup example serice uptimed</font></i>
+apt-get install uptimed
+cat &lt;&lt;END &gt; /etc/rc.debroid
+<b><u><font color="#000000">export</font></u></b> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH
+service uptimed status &amp;&gt;/dev/null || service uptimed start
+<b><u><font color="#000000">exit</font></u></b> <font color="#000000">0</font>
+END
-<font color="#ff0000">chmod </font><font color="#bb00ff">0755</font><font color="#ff0000"> /etc/rc</font><font color="#F3E651">.</font><font color="#ff0000">debroid</font>
-<b><font color="#ffffff">exit</font></b><font color="#ff0000"> </font><i><font color="#ababab"># Exit chroot</font></i>
-<b><font color="#ffffff">exit</font></b><font color="#ff0000"> </font><i><font color="#ababab"># Exit adb shell</font></i>
+chmod <font color="#000000">0755</font> /etc/rc.debroid
+<b><u><font color="#000000">exit</font></u></b> <i><font color="silver"># Exit chroot</font></i>
+<b><u><font color="#000000">exit</font></u></b> <i><font color="silver"># Exit adb shell</font></i>
</pre>
<br />
<h3 style='display: inline' id='include-to-android-startup'>Include to Android startup:</h3><br />
@@ -205,10 +208,10 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">adb push data/local/userinit</font><font color="#F3E651">.</font><font color="#ff0000">sh /data/local/userinit</font><font color="#F3E651">.</font><font color="#ff0000">sh</font>
-<font color="#ff0000">adb shell</font>
-<font color="#ff0000">chmod </font><font color="#F3E651">+</font><font color="#ff0000">x /data/local/userinit</font><font color="#F3E651">.</font><font color="#ff0000">sh</font>
-<b><font color="#ffffff">exit</font></b>
+<pre>adb push data/local/userinit.sh /data/local/userinit.sh
+adb shell
+chmod +x /data/local/userinit.sh
+<b><u><font color="#000000">exit</font></u></b>
</pre>
<br />
<span>Reboot &amp; test! Enjoy!</span><br />
@@ -217,7 +220,7 @@ http://www.gnu.org/software/src-highlite -->
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2016-04-03-offsite-backup-with-zfs.html b/gemfeed/2016-04-03-offsite-backup-with-zfs.html
index bace5800..1111f4c4 100644
--- a/gemfeed/2016-04-03-offsite-backup-with-zfs.html
+++ b/gemfeed/2016-04-03-offsite-backup-with-zfs.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2016-04-03-offsite-backup-with-zfs.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2016-04-03-offsite-backup-with-zfs.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='offsite-backup-with-zfs'>Offsite backup with ZFS</h1><br />
<br />
<span class='quote'>Published at 2016-04-03T22:43:42+01:00</span><br />
@@ -54,7 +57,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html b/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html
index 87f4d824..8ecc979a 100644
--- a/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html
+++ b/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='jails-and-zfs-with-puppet-on-freebsd'>Jails and ZFS with Puppet on FreeBSD</h1><br />
<br />
<span class='quote'>Published at 2016-04-09T18:29:47+01:00</span><br />
@@ -420,7 +423,7 @@ Notice: Finished catalog run in 206.09 seconds
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.html b/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.html
index 1fa3c0be..21732abb 100644
--- a/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.html
+++ b/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='offsite-backup-with-zfs-part-2'>Offsite backup with ZFS (Part 2)</h1><br />
<br />
<span class='quote'>Published at 2016-04-16T22:43:42+01:00</span><br />
@@ -40,7 +43,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.html b/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.html
index 741adbb6..b048f0a9 100644
--- a/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.html
+++ b/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='spinning-up-my-own-authoritative-dns-servers'>Spinning up my own authoritative DNS servers</h1><br />
<br />
<span class='quote'>Published at 2016-05-22T18:59:01+01:00</span><br />
@@ -258,7 +261,7 @@ apply Service "dig6" {
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2016-11-20-object-oriented-programming-with-ansi-c.html b/gemfeed/2016-11-20-object-oriented-programming-with-ansi-c.html
index 790e9fff..82871d58 100644
--- a/gemfeed/2016-11-20-object-oriented-programming-with-ansi-c.html
+++ b/gemfeed/2016-11-20-object-oriented-programming-with-ansi-c.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2016-11-20-object-oriented-programming-with-ansi-c.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2016-11-20-object-oriented-programming-with-ansi-c.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='object-oriented-programming-with-ansi-c'>Object oriented programming with ANSI C</h1><br />
<br />
<span class='quote'>Published at 2016-11-20T22:10:57+00:00; Updated at 2022-01-29</span><br />
@@ -31,37 +34,37 @@
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ababab">#include</font><font color="#ff0000"> </font><font color="#bb00ff">&lt;stdio.h&gt;</font>
+<pre><b><u><font color="#000000">#include</font></u></b> <font color="#808080">&lt;stdio.h&gt;</font>
-<b><font color="#ffffff">typedef</font></b><font color="#ff0000"> </font><b><font color="#ffffff">struct</font></b><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><b><font color="#F35E1E">double</font></b><font color="#ff0000"> </font><font color="#F3E651">(*</font><font color="#ff0000">calculate</font><font color="#F3E651">)(</font><b><font color="#ffffff">const</font></b><font color="#ff0000"> </font><b><font color="#F35E1E">double</font></b><font color="#F3E651">,</font><font color="#ff0000"> </font><b><font color="#ffffff">const</font></b><font color="#ff0000"> </font><b><font color="#F35E1E">double</font></b><font color="#F3E651">);</font>
-<font color="#ff0000"> </font><b><font color="#F35E1E">char</font></b><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000">name</font><font color="#F3E651">;</font>
-<font color="#F3E651">}</font><font color="#ff0000"> something_s</font><font color="#F3E651">;</font>
+<b><u><font color="#000000">typedef</font></u></b> <b><u><font color="#000000">struct</font></u></b> {
+ <b><font color="#000000">double</font></b> (*calculate)(<b><u><font color="#000000">const</font></u></b> <b><font color="#000000">double</font></b>, <b><u><font color="#000000">const</font></u></b> <b><font color="#000000">double</font></b>);
+ <b><font color="#000000">char</font></b> *name;
+} something_s;
-<b><font color="#F35E1E">double</font></b><font color="#ff0000"> </font><font color="#7bc710">multiplication</font><font color="#F3E651">(</font><b><font color="#ffffff">const</font></b><font color="#ff0000"> </font><b><font color="#F35E1E">double</font></b><font color="#ff0000"> a</font><font color="#F3E651">,</font><font color="#ff0000"> </font><b><font color="#ffffff">const</font></b><font color="#ff0000"> </font><b><font color="#F35E1E">double</font></b><font color="#ff0000"> b</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> a </font><font color="#F3E651">*</font><font color="#ff0000"> b</font><font color="#F3E651">;</font>
-<font color="#F3E651">}</font>
+<b><font color="#000000">double</font></b> multiplication(<b><u><font color="#000000">const</font></u></b> <b><font color="#000000">double</font></b> a, <b><u><font color="#000000">const</font></u></b> <b><font color="#000000">double</font></b> b) {
+ <b><u><font color="#000000">return</font></u></b> a * b;
+}
-<b><font color="#F35E1E">double</font></b><font color="#ff0000"> </font><font color="#7bc710">division</font><font color="#F3E651">(</font><b><font color="#ffffff">const</font></b><font color="#ff0000"> </font><b><font color="#F35E1E">double</font></b><font color="#ff0000"> a</font><font color="#F3E651">,</font><font color="#ff0000"> </font><b><font color="#ffffff">const</font></b><font color="#ff0000"> </font><b><font color="#F35E1E">double</font></b><font color="#ff0000"> b</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> a </font><font color="#F3E651">/</font><font color="#ff0000"> b</font><font color="#F3E651">;</font>
-<font color="#F3E651">}</font>
+<b><font color="#000000">double</font></b> division(<b><u><font color="#000000">const</font></u></b> <b><font color="#000000">double</font></b> a, <b><u><font color="#000000">const</font></u></b> <b><font color="#000000">double</font></b> b) {
+ <b><u><font color="#000000">return</font></u></b> a / b;
+}
-<b><font color="#F35E1E">int</font></b><font color="#ff0000"> </font><font color="#7bc710">main</font><font color="#F3E651">(</font><b><font color="#F35E1E">void</font></b><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#ff0000">something_s</font><font color="#ff0000"> mult </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">something_s</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#F3E651">.</font><font color="#ff0000">calculate </font><font color="#F3E651">=</font><font color="#ff0000"> multiplication</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#F3E651">.</font><font color="#ff0000">name </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">"Multiplication"</font>
-<font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#F3E651">;</font>
+<b><font color="#000000">int</font></b> main(<b><font color="#000000">void</font></b>) {
+ something_s mult = (something_s) {
+ .calculate = multiplication,
+ .name = <font color="#808080">"Multiplication"</font>
+ };
-<font color="#ff0000"> </font><font color="#ff0000">something_s</font><font color="#ff0000"> div </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">something_s</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#F3E651">.</font><font color="#ff0000">calculate </font><font color="#F3E651">=</font><font color="#ff0000"> division</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#F3E651">.</font><font color="#ff0000">name </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">"Division"</font>
-<font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#F3E651">;</font>
+ something_s div = (something_s) {
+ .calculate = division,
+ .name = <font color="#808080">"Division"</font>
+ };
-<font color="#ff0000"> </font><b><font color="#ffffff">const</font></b><font color="#ff0000"> </font><b><font color="#F35E1E">double</font></b><font color="#ff0000"> a </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">3</font><font color="#F3E651">,</font><font color="#ff0000"> b </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">2</font><font color="#F3E651">;</font>
+ <b><u><font color="#000000">const</font></u></b> <b><font color="#000000">double</font></b> a = <font color="#000000">3</font>, b = <font color="#000000">2</font>;
-<font color="#ff0000"> </font><font color="#7bc710">printf</font><font color="#F3E651">(</font><font color="#bb00ff">"%s(%f, %f) =&gt; %f</font><font color="#ffffff">\n</font><font color="#bb00ff">"</font><font color="#F3E651">,</font><font color="#ff0000"> mult</font><font color="#F3E651">.</font><font color="#ff0000">name</font><font color="#F3E651">,</font><font color="#ff0000"> a</font><font color="#F3E651">,</font><font color="#ff0000"> b</font><font color="#F3E651">,</font><font color="#ff0000"> mult</font><font color="#F3E651">.</font><font color="#7bc710">calculate</font><font color="#F3E651">(</font><font color="#ff0000">a</font><font color="#F3E651">,</font><font color="#ff0000">b</font><font color="#F3E651">));</font>
-<font color="#ff0000"> </font><font color="#7bc710">printf</font><font color="#F3E651">(</font><font color="#bb00ff">"%s(%f, %f) =&gt; %f</font><font color="#ffffff">\n</font><font color="#bb00ff">"</font><font color="#F3E651">,</font><font color="#ff0000"> div</font><font color="#F3E651">.</font><font color="#ff0000">name</font><font color="#F3E651">,</font><font color="#ff0000"> a</font><font color="#F3E651">,</font><font color="#ff0000"> b</font><font color="#F3E651">,</font><font color="#ff0000"> div</font><font color="#F3E651">.</font><font color="#7bc710">calculate</font><font color="#F3E651">(</font><font color="#ff0000">a</font><font color="#F3E651">,</font><font color="#ff0000">b</font><font color="#F3E651">));</font>
-<font color="#F3E651">}</font>
+ printf(<font color="#808080">"%s(%f, %f) =&gt; %f</font>\n<font color="#808080">"</font>, mult.name, a, b, mult.calculate(a,b));
+ printf(<font color="#808080">"%s(%f, %f) =&gt; %f</font>\n<font color="#808080">"</font>, div.name, a, b, div.calculate(a,b));
+}
</pre>
<br />
<span>As you can see, you can call the function (pointed by the function pointer) with the same syntax as in C++ or Java:</span><br />
@@ -70,8 +73,8 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#7bc710">printf</font><font color="#F3E651">(</font><font color="#bb00ff">"%s(%f, %f) =&gt; %f</font><font color="#ffffff">\n</font><font color="#bb00ff">"</font><font color="#F3E651">,</font><font color="#ff0000"> mult</font><font color="#F3E651">.</font><font color="#ff0000">name</font><font color="#F3E651">,</font><font color="#ff0000"> a</font><font color="#F3E651">,</font><font color="#ff0000"> b</font><font color="#F3E651">,</font><font color="#ff0000"> mult</font><font color="#F3E651">.</font><font color="#7bc710">calculate</font><font color="#F3E651">(</font><font color="#ff0000">a</font><font color="#F3E651">,</font><font color="#ff0000">b</font><font color="#F3E651">));</font>
-<font color="#7bc710">printf</font><font color="#F3E651">(</font><font color="#bb00ff">"%s(%f, %f) =&gt; %f</font><font color="#ffffff">\n</font><font color="#bb00ff">"</font><font color="#F3E651">,</font><font color="#ff0000"> div</font><font color="#F3E651">.</font><font color="#ff0000">name</font><font color="#F3E651">,</font><font color="#ff0000"> a</font><font color="#F3E651">,</font><font color="#ff0000"> b</font><font color="#F3E651">,</font><font color="#ff0000"> div</font><font color="#F3E651">.</font><font color="#7bc710">calculate</font><font color="#F3E651">(</font><font color="#ff0000">a</font><font color="#F3E651">,</font><font color="#ff0000">b</font><font color="#F3E651">));</font>
+<pre>printf(<font color="#808080">"%s(%f, %f) =&gt; %f</font>\n<font color="#808080">"</font>, mult.name, a, b, mult.calculate(a,b));
+printf(<font color="#808080">"%s(%f, %f) =&gt; %f</font>\n<font color="#808080">"</font>, div.name, a, b, div.calculate(a,b));
</pre>
<br />
<span>However, that&#39;s just syntactic sugar for:</span><br />
@@ -80,8 +83,8 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#7bc710">printf</font><font color="#F3E651">(</font><font color="#bb00ff">"%s(%f, %f) =&gt; %f</font><font color="#ffffff">\n</font><font color="#bb00ff">"</font><font color="#F3E651">,</font><font color="#ff0000"> mult</font><font color="#F3E651">.</font><font color="#ff0000">name</font><font color="#F3E651">,</font><font color="#ff0000"> a</font><font color="#F3E651">,</font><font color="#ff0000"> b</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#F3E651">(*</font><font color="#ff0000">mult</font><font color="#F3E651">.</font><font color="#ff0000">calculate</font><font color="#F3E651">)(</font><font color="#ff0000">a</font><font color="#F3E651">,</font><font color="#ff0000">b</font><font color="#F3E651">));</font>
-<font color="#7bc710">printf</font><font color="#F3E651">(</font><font color="#bb00ff">"%s(%f, %f) =&gt; %f</font><font color="#ffffff">\n</font><font color="#bb00ff">"</font><font color="#F3E651">,</font><font color="#ff0000"> div</font><font color="#F3E651">.</font><font color="#ff0000">name</font><font color="#F3E651">,</font><font color="#ff0000"> a</font><font color="#F3E651">,</font><font color="#ff0000"> b</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#F3E651">(*</font><font color="#ff0000">div</font><font color="#F3E651">.</font><font color="#ff0000">calculate</font><font color="#F3E651">)(</font><font color="#ff0000">a</font><font color="#F3E651">,</font><font color="#ff0000">b</font><font color="#F3E651">));</font>
+<pre>printf(<font color="#808080">"%s(%f, %f) =&gt; %f</font>\n<font color="#808080">"</font>, mult.name, a, b, (*mult.calculate)(a,b));
+printf(<font color="#808080">"%s(%f, %f) =&gt; %f</font>\n<font color="#808080">"</font>, div.name, a, b, (*div.calculate)(a,b));
</pre>
<br />
<span>Output:</span><br />
@@ -90,10 +93,10 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">pbuetow </font><font color="#F3E651">~</font><font color="#ff0000">/git/blog/source </font><font color="#F3E651">[</font><font color="#bb00ff">38268</font><font color="#F3E651">]%</font><font color="#ff0000"> gcc oop-c-example</font><font color="#F3E651">.</font><font color="#ff0000">c -o oop-c-example</font>
-<font color="#ff0000">pbuetow </font><font color="#F3E651">~</font><font color="#ff0000">/git/blog/source </font><font color="#F3E651">[</font><font color="#bb00ff">38269</font><font color="#F3E651">]%</font><font color="#ff0000"> </font><font color="#F3E651">.</font><font color="#ff0000">/oop-c-example</font>
-<font color="#ff0000">Multiplication</font><font color="#F3E651">(</font><font color="#bb00ff">3.000000</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">2.000000</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=&gt;</font><font color="#ff0000"> </font><font color="#bb00ff">6.000000</font>
-<font color="#ff0000">Division</font><font color="#F3E651">(</font><font color="#bb00ff">3.000000</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">2.000000</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=&gt;</font><font color="#ff0000"> </font><font color="#bb00ff">1.500000</font>
+<pre>pbuetow ~/git/blog/source [<font color="#000000">38268</font>]% gcc oop-c-example.c -o oop-c-example
+pbuetow ~/git/blog/source [<font color="#000000">38269</font>]% ./oop-c-example
+Multiplication(<font color="#000000">3.000000</font>, <font color="#000000">2.000000</font>) =&gt; <font color="#000000">6.000000</font>
+Division(<font color="#000000">3.000000</font>, <font color="#000000">2.000000</font>) =&gt; <font color="#000000">1.500000</font>
</pre>
<br />
<span>Not complicated at all, but nice to know and helps to make the code easier to read!</span><br />
@@ -106,7 +109,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">mult</font><font color="#F3E651">.</font><font color="#7bc710">calculate</font><font color="#F3E651">(</font><font color="#ff0000">mult</font><font color="#F3E651">,</font><font color="#ff0000">a</font><font color="#F3E651">,</font><font color="#ff0000">b</font><font color="#F3E651">));</font>
+<pre>mult.calculate(mult,a,b));
</pre>
<br />
<h2 style='display: inline' id='real-object-oriented-programming-with-c'>Real object oriented programming with C</h2><br />
@@ -127,7 +130,7 @@ http://www.gnu.org/software/src-highlite -->
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html b/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html
index 5c30cf80..5c5cfab7 100644
--- a/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html
+++ b/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='realistic-load-testing-with-io-riot-for-linux'>Realistic load testing with I/O Riot for Linux</h1><br />
<br />
<span class='quote'>Published at 2018-06-01T14:50:29+01:00; Updated at 2021-05-08</span><br />
@@ -215,7 +218,7 @@ Total time: 1213.00s
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html b/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html
index 381ec040..e02f2c2b 100644
--- a/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html
+++ b/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='dtail---the-distributed-log-tail-program'>DTail - The distributed log tail program</h1><br />
<br />
<span class='quote'>Published at 2021-04-22T19:28:41+01:00; Updated at 2021-04-26</span><br />
@@ -141,7 +144,7 @@ dtail –servers serverlist.txt –files ‘/var/log/*.log’ –regex ‘(?i:er
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2021-04-24-welcome-to-the-geminispace.html b/gemfeed/2021-04-24-welcome-to-the-geminispace.html
index 6f573463..8efc1f55 100644
--- a/gemfeed/2021-04-24-welcome-to-the-geminispace.html
+++ b/gemfeed/2021-04-24-welcome-to-the-geminispace.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2021-04-24-welcome-to-the-geminispace.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2021-04-24-welcome-to-the-geminispace.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='welcome-to-the-geminispace'>Welcome to the Geminispace</h1><br />
<br />
<span class='quote'>Published at 2021-04-24T19:28:41+01:00; Updated at 2021-06-18</span><br />
@@ -114,7 +117,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2021-05-16-personal-bash-coding-style-guide.html b/gemfeed/2021-05-16-personal-bash-coding-style-guide.html
index 4cb9071b..548a6ee2 100644
--- a/gemfeed/2021-05-16-personal-bash-coding-style-guide.html
+++ b/gemfeed/2021-05-16-personal-bash-coding-style-guide.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2021-05-16-personal-bash-coding-style-guide.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2021-05-16-personal-bash-coding-style-guide.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='personal-bash-coding-style-guide'>Personal Bash coding style guide</h1><br />
<br />
<span class='quote'>Published at 2021-05-16T14:51:57+01:00</span><br />
@@ -63,7 +66,7 @@
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/bin/bash </font></i>
+<pre><i><font color="silver">#!/bin/bash </font></i>
</pre>
<br />
<span>... as the shebang line, but that does not work on all Unix and Unix-like operating systems (e.g., the *BSDs don&#39;t have Bash installed to /bin/bash). Better is:</span><br />
@@ -72,7 +75,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
</pre>
<br />
<h3 style='display: inline' id='two-space-soft-tabs-indentation'>Two space soft-tabs indentation</h3><br />
@@ -93,14 +96,14 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab"># All fits on one line</font></i>
-<font color="#ff0000">command1 </font><font color="#F3E651">|</font><font color="#ff0000"> command2</font>
+<pre><i><font color="silver"># All fits on one line</font></i>
+command1 | command2
-<i><font color="#ababab"># Long commands</font></i>
-<font color="#ff0000">command1 </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> command2 </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> command3 </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> command4</font>
+<i><font color="silver"># Long commands</font></i>
+command1 \
+ | command2 \
+ | command3 \
+ | command4
</pre>
<br />
<span>I think there is a better way like the following, which is less noisy. The pipe | already indicates the Bash that another command is expected, thus making the explicit line breaks with \ obsolete:</span><br />
@@ -109,11 +112,11 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab"># Long commands</font></i>
-<font color="#ff0000">command1 </font><font color="#F3E651">|</font>
-<font color="#ff0000"> command2 </font><font color="#F3E651">|</font>
-<font color="#ff0000"> command3 </font><font color="#F3E651">|</font>
-<font color="#ff0000"> command4</font>
+<pre><i><font color="silver"># Long commands</font></i>
+command1 |
+ command2 |
+ command3 |
+ command4
</pre>
<br />
<span class='quote'>Update: It&#39;s 2023 now, and I have changed my mind. I think Google&#39;s way is the better one. It may be a bit more to type, but the leading <span class='inlinecode'>|</span> are a nice eye catcher, so you know immediately what is going on!</span><br />
@@ -126,11 +129,11 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#7bc710">greet ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">greeting</font><font color="#F3E651">=</font><font color="#bb00ff">"${1}"</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">name</font><font color="#F3E651">=</font><font color="#bb00ff">"${2}"</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"${greeting} ${name}!"</font>
-<font color="#ff0000">}</font>
+<pre>greet () {
+ <b><u><font color="#000000">local</font></u></b> -r greeting=<font color="#808080">"${1}"</font>
+ <b><u><font color="#000000">local</font></u></b> -r name=<font color="#808080">"${2}"</font>
+ echo <font color="#808080">"${greeting} ${name}!"</font>
+}
</pre>
<br />
<span>In this particular example, I agree that you should quote them as you don&#39;t know the input (are there, for example, whitespace characters?). But if you are sure that you are only using simple bare words, then I think that the code looks much cleaner when you do this instead:</span><br />
@@ -139,11 +142,11 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#7bc710">say_hello_to_paul ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">greeting</font><font color="#F3E651">=</font><font color="#ff0000">Hello</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">name</font><font color="#F3E651">=</font><font color="#ff0000">Paul</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"$greeting $name!"</font>
-<font color="#ff0000">}</font>
+<pre>say_hello_to_paul () {
+ <b><u><font color="#000000">local</font></u></b> -r greeting=Hello
+ <b><u><font color="#000000">local</font></u></b> -r name=Paul
+ echo <font color="#808080">"$greeting $name!"</font>
+}
</pre>
<br />
<span>You see, I also omitted the curly braces { } around the variables. I only use the curly braces around variables when it makes the code either easier/clearer to read or if it is necessary to use them:</span><br />
@@ -152,9 +155,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">declare</font></b><font color="#ff0000"> </font><font color="#ff0000">FOO</font><font color="#F3E651">=</font><font color="#ff0000">bar</font>
-<i><font color="#ababab"># Curly braces around FOO are necessary</font></i>
-<font color="#ff0000">echo </font><font color="#bb00ff">"foo${FOO}baz"</font>
+<pre><b><u><font color="#000000">declare</font></u></b> FOO=bar
+<i><font color="silver"># Curly braces around FOO are necessary</font></i>
+echo <font color="#808080">"foo${FOO}baz"</font>
</pre>
<br />
<span>A few more words on always quoting the variables: For the sake of consistency (and for making ShellCheck happy), I am not against quoting everything I encounter. I also think that the larger the Bash script becomes, the more critical it becomes always to quote variables. That&#39;s because it will be more likely that you might not remember that some of the functions don&#39;t work on values with spaces in them, for example. It&#39;s just that I won&#39;t quote everything in every small script I write. </span><br />
@@ -167,13 +170,13 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab"># Prefer this:</font></i>
-<font color="#ff0000">addition</font><font color="#F3E651">=</font><font color="#ff0000">$(</font><font color="#F3E651">(</font><font color="#ff0000"> X </font><font color="#F3E651">+</font><font color="#ff0000"> Y </font><font color="#F3E651">))</font>
-<font color="#ff0000">substitution</font><font color="#F3E651">=</font><font color="#bb00ff">"${string/#foo/bar}"</font>
+<pre><i><font color="silver"># Prefer this:</font></i>
+addition=$(( X + Y ))
+substitution=<font color="#808080">"${string/#foo/bar}"</font>
-<i><font color="#ababab"># Instead of this:</font></i>
-<font color="#ff0000">addition</font><font color="#F3E651">=</font><font color="#bb00ff">"$(expr "</font><font color="#ff0000">${X}</font><font color="#bb00ff">" + "</font><font color="#ff0000">${Y}</font><font color="#bb00ff">")"</font>
-<font color="#ff0000">substitution</font><font color="#F3E651">=</font><font color="#bb00ff">"$(echo "</font><font color="#ff0000">${string}</font><font color="#bb00ff">" | sed -e 's/^foo/bar/')"</font>
+<i><font color="silver"># Instead of this:</font></i>
+addition=<font color="#808080">"$(expr "</font>${X}<font color="#808080">" + "</font>${Y}<font color="#808080">")"</font>
+substitution=<font color="#808080">"$(echo "</font>${string}<font color="#808080">" | sed -e 's/^foo/bar/')"</font>
</pre>
<br />
<span>I can&#39;t entirely agree here. The external commands (especially sed) are much more sophisticated and powerful than the built-in Bash versions. Sed can do much more than the Bash can ever do by itself when it comes to text manipulation (the name "sed" stands for streaming editor, after all).</span><br />
@@ -194,20 +197,20 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">declare</font></b><font color="#ff0000"> -r </font><font color="#ff0000">SUGAR_FREE</font><font color="#F3E651">=</font><font color="#ff0000">yes</font>
-<b><font color="#ffffff">declare</font></b><font color="#ff0000"> -r </font><font color="#ff0000">I_NEED_THE_BUZZ</font><font color="#F3E651">=</font><font color="#ff0000">no</font>
+<pre><b><u><font color="#000000">declare</font></u></b> -r SUGAR_FREE=yes
+<b><u><font color="#000000">declare</font></u></b> -r I_NEED_THE_BUZZ=no
-<font color="#7bc710">buy_soda ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">sugar_free</font><font color="#F3E651">=</font><font color="#ff0000">$1</font>
+buy_soda () {
+ <b><u><font color="#000000">local</font></u></b> -r sugar_free=$1
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[[</font><font color="#ff0000"> </font><font color="#ff0000">$sugar_free</font><font color="#ff0000"> </font><font color="#F3E651">==</font><font color="#ff0000"> yes </font><font color="#F3E651">]];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo </font><font color="#bb00ff">'Diet Dr. Pepper'</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">else</font></b>
-<font color="#ff0000"> echo </font><font color="#bb00ff">'Pepsi Coke'</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
-<font color="#ff0000">}</font>
+ <b><u><font color="#000000">if</font></u></b> [[ $sugar_free == yes ]]; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">'Diet Dr. Pepper'</font>
+ <b><u><font color="#000000">else</font></u></b>
+ echo <font color="#808080">'Pepsi Coke'</font>
+ <b><u><font color="#000000">fi</font></u></b>
+}
-<font color="#ff0000">buy_soda </font><font color="#ff0000">$I_NEED_THE_BUZZ</font>
+buy_soda $I_NEED_THE_BUZZ
</pre>
<br />
<h3 style='display: inline' id='non-evil-alternative-to-variable-assignments-via-eval'>Non-evil alternative to variable assignments via eval</h3><br />
@@ -218,12 +221,12 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab"># What does this set?</font></i>
-<i><font color="#ababab"># Did it succeed? In part or whole?</font></i>
-<b><font color="#ffffff">eval</font></b><font color="#ff0000"> </font><font color="#ff0000">$(set_my_variables)</font>
+<pre><i><font color="silver"># What does this set?</font></i>
+<i><font color="silver"># Did it succeed? In part or whole?</font></i>
+<b><u><font color="#000000">eval</font></u></b> $(set_my_variables)
-<i><font color="#ababab"># What happens if one of the returned values has a space in it?</font></i>
-<font color="#ff0000">variable</font><font color="#F3E651">=</font><font color="#bb00ff">"$(eval some_function)"</font>
+<i><font color="silver"># What happens if one of the returned values has a space in it?</font></i>
+variable=<font color="#808080">"$(eval some_function)"</font>
</pre>
<br />
<span>However, if I want to read variables from another file, I don&#39;t have to use eval here. I only have to source the file:</span><br />
@@ -262,39 +265,39 @@ Hello paul, it is Sat 15 May 19:21:12 BST 2021
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#7bc710">filter_lines ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">'Start filtering lines in a fancy way!'</font><font color="#ff0000"> </font><font color="#F3E651">&gt;&amp;</font><font color="#bb00ff">2</font>
-<font color="#ff0000"> grep </font><font color="#F3E651">...</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> sed </font><font color="#F3E651">....</font>
-<font color="#ff0000">}</font>
+<pre>filter_lines () {
+ echo <font color="#808080">'Start filtering lines in a fancy way!'</font> &gt;&amp;<font color="#000000">2</font>
+ grep ... | sed ....
+}
-<font color="#7bc710">process_lines ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">'Start processing line by line!'</font><font color="#ff0000"> </font><font color="#F3E651">&gt;&amp;</font><font color="#bb00ff">2</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">while</font></b><font color="#ff0000"> </font><b><font color="#ffffff">read</font></b><font color="#ff0000"> -r line</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b>
-<font color="#ff0000"> </font><font color="#F3E651">...</font><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b><font color="#ff0000"> something and produce a result</font><font color="#F3E651">...</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"$result"</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">done</font></b><font color="#ff0000"> </font>
-<font color="#ff0000">}</font>
+process_lines () {
+ echo <font color="#808080">'Start processing line by line!'</font> &gt;&amp;<font color="#000000">2</font>
+ <b><u><font color="#000000">while</font></u></b> <b><u><font color="#000000">read</font></u></b> -r line; <b><u><font color="#000000">do</font></u></b>
+ ... <b><u><font color="#000000">do</font></u></b> something and produce a result...
+ echo <font color="#808080">"$result"</font>
+ <b><u><font color="#000000">done</font></u></b>
+}
-<i><font color="#ababab"># Do some post-processing of the data</font></i>
-<font color="#7bc710">postprocess_lines ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">'Start removing duplicates!'</font><font color="#ff0000"> </font><font color="#F3E651">&gt;&amp;</font><font color="#bb00ff">2</font>
-<font color="#ff0000"> sort -u</font>
-<font color="#ff0000">}</font>
+<i><font color="silver"># Do some post-processing of the data</font></i>
+postprocess_lines () {
+ echo <font color="#808080">'Start removing duplicates!'</font> &gt;&amp;<font color="#000000">2</font>
+ sort -u
+}
-<font color="#7bc710">genreate_report ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">'My boss wants to have a report!'</font><font color="#ff0000"> </font><font color="#F3E651">&gt;&amp;</font><font color="#bb00ff">2</font>
-<font color="#ff0000"> tee outfile</font><font color="#F3E651">.</font><font color="#ff0000">txt</font>
-<font color="#ff0000"> wc -l outfile</font><font color="#F3E651">.</font><font color="#ff0000">txt</font>
-<font color="#ff0000">}</font>
+genreate_report () {
+ echo <font color="#808080">'My boss wants to have a report!'</font> &gt;&amp;<font color="#000000">2</font>
+ tee outfile.txt
+ wc -l outfile.txt
+}
-<font color="#7bc710">main ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> filter_lines </font><font color="#F3E651">|</font>
-<font color="#ff0000"> process_lines </font><font color="#F3E651">|</font>
-<font color="#ff0000"> postprocess_lines </font><font color="#F3E651">|</font>
-<font color="#ff0000"> generate_report</font>
-<font color="#ff0000">}</font>
+main () {
+ filter_lines |
+ process_lines |
+ postprocess_lines |
+ generate_report
+}
-<font color="#ff0000">main</font>
+main
</pre>
<br />
<span>The stdout is always passed as a pipe to the next following stage. The stderr is used for info logging.</span><br />
@@ -309,13 +312,13 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#7bc710">some_function ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">param_foo</font><font color="#F3E651">=</font><font color="#bb00ff">"$1"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">param_baz</font><font color="#F3E651">=</font><font color="#bb00ff">"$1"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">param_bay</font><font color="#F3E651">=</font><font color="#bb00ff">"$1"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b>
+<pre>some_function () {
+ <b><u><font color="#000000">local</font></u></b> -r param_foo=<font color="#808080">"$1"</font>; <b><u><font color="#000000">shift</font></u></b>
+ <b><u><font color="#000000">local</font></u></b> -r param_baz=<font color="#808080">"$1"</font>; <b><u><font color="#000000">shift</font></u></b>
+ <b><u><font color="#000000">local</font></u></b> -r param_bay=<font color="#808080">"$1"</font>; <b><u><font color="#000000">shift</font></u></b>
-<font color="#ff0000"> </font><i><font color="#ababab"># ...</font></i>
-<font color="#ff0000">}</font>
+ <i><font color="silver"># ...</font></i>
+}
</pre>
<br />
<span>Want to add a param_baz? Just do this:</span><br />
@@ -324,14 +327,14 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#7bc710">some_function ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">param_foo</font><font color="#F3E651">=</font><font color="#bb00ff">"$1"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">param_bar</font><font color="#F3E651">=</font><font color="#bb00ff">"$1"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">param_baz</font><font color="#F3E651">=</font><font color="#bb00ff">"$1"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">param_bay</font><font color="#F3E651">=</font><font color="#bb00ff">"$1"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b>
+<pre>some_function () {
+ <b><u><font color="#000000">local</font></u></b> -r param_foo=<font color="#808080">"$1"</font>; <b><u><font color="#000000">shift</font></u></b>
+ <b><u><font color="#000000">local</font></u></b> -r param_bar=<font color="#808080">"$1"</font>; <b><u><font color="#000000">shift</font></u></b>
+ <b><u><font color="#000000">local</font></u></b> -r param_baz=<font color="#808080">"$1"</font>; <b><u><font color="#000000">shift</font></u></b>
+ <b><u><font color="#000000">local</font></u></b> -r param_bay=<font color="#808080">"$1"</font>; <b><u><font color="#000000">shift</font></u></b>
-<font color="#ff0000"> </font><i><font color="#ababab"># ...</font></i>
-<font color="#ff0000">}</font>
+ <i><font color="silver"># ...</font></i>
+}
</pre>
<br />
<span>Want to remove param_foo? Nothing easier than that:</span><br />
@@ -340,13 +343,13 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#7bc710">some_function ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">param_bar</font><font color="#F3E651">=</font><font color="#bb00ff">"$1"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">param_baz</font><font color="#F3E651">=</font><font color="#bb00ff">"$1"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">param_bay</font><font color="#F3E651">=</font><font color="#bb00ff">"$1"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b>
-<font color="#ff0000"> </font>
-<font color="#ff0000"> </font><i><font color="#ababab"># ...</font></i>
-<font color="#ff0000">}</font>
+<pre>some_function () {
+ <b><u><font color="#000000">local</font></u></b> -r param_bar=<font color="#808080">"$1"</font>; <b><u><font color="#000000">shift</font></u></b>
+ <b><u><font color="#000000">local</font></u></b> -r param_baz=<font color="#808080">"$1"</font>; <b><u><font color="#000000">shift</font></u></b>
+ <b><u><font color="#000000">local</font></u></b> -r param_bay=<font color="#808080">"$1"</font>; <b><u><font color="#000000">shift</font></u></b>
+
+ <i><font color="silver"># ...</font></i>
+}
</pre>
<br />
<span>As you can see, I didn&#39;t need to change any other assignments within the function. Of course, you would also need to change the function argument lists at every occasion where the function is invoked - you would do that within the same refactoring session.</span><br />
@@ -359,9 +362,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">set</font></b><font color="#ff0000"> -e</font>
-<font color="#ff0000">grep -q foo </font><font color="#F3E651">&lt;&lt;&lt;</font><font color="#ff0000"> bar</font>
-<font color="#ff0000">echo Jo</font>
+<pre><b><u><font color="#000000">set</font></u></b> -e
+grep -q foo &lt;&lt;&lt; bar
+echo Jo
</pre>
<br />
<span>Here &#39;Jo&#39; will never be printed out as the grep didn&#39;t find any match. It&#39;s unrealistic for most scripts to run in paranoid mode purely, so there must be a way to add exceptions. Critical Bash scripts of mine tend to look like this:</span><br />
@@ -370,26 +373,26 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
-<b><font color="#ffffff">set</font></b><font color="#ff0000"> -e</font>
+<b><u><font color="#000000">set</font></u></b> -e
-<font color="#7bc710">some_function ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><i><font color="#ababab"># .. some critical code</font></i>
-<font color="#ff0000"> </font><i><font color="#ababab"># ...</font></i>
+some_function () {
+ <i><font color="silver"># .. some critical code</font></i>
+ <i><font color="silver"># ...</font></i>
-<font color="#ff0000"> </font><b><font color="#ffffff">set</font></b><font color="#ff0000"> </font><font color="#F3E651">+</font><font color="#ff0000">e</font>
-<font color="#ff0000"> </font><i><font color="#ababab"># Grep might fail, but that's OK now</font></i>
-<font color="#ff0000"> grep </font><font color="#F3E651">....</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -i </font><font color="#ff0000">ec</font><font color="#F3E651">=</font><font color="#ff0000">$?</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">set</font></b><font color="#ff0000"> -e</font>
+ <b><u><font color="#000000">set</font></u></b> +e
+ <i><font color="silver"># Grep might fail, but that's OK now</font></i>
+ grep ....
+ <b><u><font color="#000000">local</font></u></b> -i ec=$?
+ <b><u><font color="#000000">set</font></u></b> -e
-<font color="#ff0000"> </font><i><font color="#ababab"># .. critical code continues ...</font></i>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[[</font><font color="#ff0000"> </font><font color="#ff0000">$ec</font><font color="#ff0000"> -ne </font><font color="#bb00ff">0</font><font color="#ff0000"> </font><font color="#F3E651">]];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> </font><font color="#F3E651">:</font><font color="#ff0000"> </font><i><font color="#ababab"># ...</font></i>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
-<font color="#ff0000"> </font><i><font color="#ababab"># ...</font></i>
-<font color="#ff0000">}</font>
+ <i><font color="silver"># .. critical code continues ...</font></i>
+ <b><u><font color="#000000">if</font></u></b> [[ $ec -ne <font color="#000000">0</font> ]]; <b><u><font color="#000000">then</font></u></b>
+ : <i><font color="silver"># ...</font></i>
+ <b><u><font color="#000000">fi</font></u></b>
+ <i><font color="silver"># ...</font></i>
+}
</pre>
<br />
<h2 style='display: inline' id='learned'>Learned</h2><br />
@@ -404,10 +407,10 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[[</font><font color="#ff0000"> </font><font color="#bb00ff">"${my_var}"</font><font color="#ff0000"> </font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#bb00ff">3</font><font color="#ff0000"> </font><font color="#F3E651">]];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> </font><i><font color="#ababab"># True for 4, false for 22.</font></i>
-<font color="#ff0000"> do_something</font>
-<b><font color="#ffffff">fi</font></b>
+<pre><b><u><font color="#000000">if</font></u></b> [[ <font color="#808080">"${my_var}"</font> &gt; <font color="#000000">3</font> ]]; <b><u><font color="#000000">then</font></u></b>
+ <i><font color="silver"># True for 4, false for 22.</font></i>
+ do_something
+<b><u><font color="#000000">fi</font></u></b>
</pre>
<br />
<span>... but it is probably an unintended lexicographical comparison. A correct way would be:</span><br />
@@ -416,9 +419,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">((</font><font color="#ff0000"> my_var </font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#bb00ff">3</font><font color="#ff0000"> </font><font color="#F3E651">));</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> do_something</font>
-<b><font color="#ffffff">fi</font></b>
+<pre><b><u><font color="#000000">if</font></u></b> (( my_var &gt; <font color="#000000">3</font> )); <b><u><font color="#000000">then</font></u></b>
+ do_something
+<b><u><font color="#000000">fi</font></u></b>
</pre>
<br />
<span>or</span><br />
@@ -427,9 +430,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[[</font><font color="#ff0000"> </font><font color="#bb00ff">"${my_var}"</font><font color="#ff0000"> -gt </font><font color="#bb00ff">3</font><font color="#ff0000"> </font><font color="#F3E651">]];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> do_something</font>
-<b><font color="#ffffff">fi</font></b>
+<pre><b><u><font color="#000000">if</font></u></b> [[ <font color="#808080">"${my_var}"</font> -gt <font color="#000000">3</font> ]]; <b><u><font color="#000000">then</font></u></b>
+ do_something
+<b><u><font color="#000000">fi</font></u></b>
</pre>
<br />
<h3 style='display: inline' id='pipestatus'>PIPESTATUS</h3><br />
@@ -442,10 +445,10 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">tar -cf - </font><font color="#F3E651">./*</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000"> cd </font><font color="#bb00ff">"${dir}"</font><font color="#ff0000"> </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> tar -xf - </font><font color="#F3E651">)</font>
-<b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">((</font><font color="#ff0000"> PIPESTATUS</font><font color="#F3E651">[</font><font color="#bb00ff">0</font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">!=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#ff0000"> </font><font color="#F3E651">||</font><font color="#ff0000"> PIPESTATUS</font><font color="#F3E651">[</font><font color="#bb00ff">1</font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">!=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#ff0000"> </font><font color="#F3E651">));</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"Unable to tar files to ${dir}"</font><font color="#ff0000"> </font><font color="#F3E651">&gt;&amp;</font><font color="#bb00ff">2</font>
-<b><font color="#ffffff">fi</font></b>
+<pre>tar -cf - ./* | ( cd <font color="#808080">"${dir}"</font> &amp;&amp; tar -xf - )
+<b><u><font color="#000000">if</font></u></b> (( PIPESTATUS[<font color="#000000">0</font>] != <font color="#000000">0</font> || PIPESTATUS[<font color="#000000">1</font>] != <font color="#000000">0</font> )); <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"Unable to tar files to ${dir}"</font> &gt;&amp;<font color="#000000">2</font>
+<b><u><font color="#000000">fi</font></u></b>
</pre>
<br />
<span>However, as PIPESTATUS will be overwritten as soon as you do any other command, if you need to act differently on errors based on where it happened in the pipe, you&#39;ll need to assign PIPESTATUS to another variable immediately after running the command (don&#39;t forget that [ is a command and will wipe out PIPESTATUS).</span><br />
@@ -454,14 +457,14 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">tar -cf - </font><font color="#F3E651">./*</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000"> cd </font><font color="#bb00ff">"${DIR}"</font><font color="#ff0000"> </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> tar -xf - </font><font color="#F3E651">)</font>
-<font color="#ff0000">return_codes</font><font color="#F3E651">=(</font><font color="#ff0000"> </font><font color="#bb00ff">"${PIPESTATUS[@]}"</font><font color="#ff0000"> </font><font color="#F3E651">)</font>
-<b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">((</font><font color="#ff0000"> return_codes</font><font color="#F3E651">[</font><font color="#bb00ff">0</font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">!=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#ff0000"> </font><font color="#F3E651">));</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> do_something</font>
-<b><font color="#ffffff">fi</font></b>
-<b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">((</font><font color="#ff0000"> return_codes</font><font color="#F3E651">[</font><font color="#bb00ff">1</font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">!=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#ff0000"> </font><font color="#F3E651">));</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> do_something_else</font>
-<b><font color="#ffffff">fi</font></b>
+<pre>tar -cf - ./* | ( cd <font color="#808080">"${DIR}"</font> &amp;&amp; tar -xf - )
+return_codes=( <font color="#808080">"${PIPESTATUS[@]}"</font> )
+<b><u><font color="#000000">if</font></u></b> (( return_codes[<font color="#000000">0</font>] != <font color="#000000">0</font> )); <b><u><font color="#000000">then</font></u></b>
+ do_something
+<b><u><font color="#000000">fi</font></u></b>
+<b><u><font color="#000000">if</font></u></b> (( return_codes[<font color="#000000">1</font>] != <font color="#000000">0</font> )); <b><u><font color="#000000">then</font></u></b>
+ do_something_else
+<b><u><font color="#000000">fi</font></u></b>
</pre>
<br />
<h2 style='display: inline' id='use-common-sense-and-be-consistent'>Use common sense and BE CONSISTENT.</h2><br />
@@ -491,7 +494,7 @@ http://www.gnu.org/software/src-highlite -->
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html b/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html
index 74021510..9d1bc660 100644
--- a/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html
+++ b/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='gemtexter---one-bash-script-to-rule-it-all'>Gemtexter - One Bash script to rule it all</h1><br />
<br />
<span class='quote'>Published at 2021-06-05T19:03:32+01:00</span><br />
@@ -111,18 +114,18 @@
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">paul </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> uranus </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> gemtexter on 🌱 main</font>
-<font color="#ff0000">❯ wc -l gemtexter lib</font><font color="#F3E651">/*</font>
-<font color="#ff0000"> </font><font color="#bb00ff">117</font><font color="#ff0000"> gemtexter</font>
-<font color="#ff0000"> </font><font color="#bb00ff">59</font><font color="#ff0000"> lib/assert</font><font color="#F3E651">.</font><b><font color="#ffffff">source</font></b><font color="#F3E651">.</font><font color="#ff0000">sh</font>
-<font color="#ff0000"> </font><font color="#bb00ff">128</font><font color="#ff0000"> lib/atomfeed</font><font color="#F3E651">.</font><b><font color="#ffffff">source</font></b><font color="#F3E651">.</font><font color="#ff0000">sh</font>
-<font color="#ff0000"> </font><font color="#bb00ff">64</font><font color="#ff0000"> lib/gemfeed</font><font color="#F3E651">.</font><b><font color="#ffffff">source</font></b><font color="#F3E651">.</font><font color="#ff0000">sh</font>
-<font color="#ff0000"> </font><font color="#bb00ff">161</font><font color="#ff0000"> lib/generate</font><font color="#F3E651">.</font><b><font color="#ffffff">source</font></b><font color="#F3E651">.</font><font color="#ff0000">sh</font>
-<font color="#ff0000"> </font><font color="#bb00ff">50</font><font color="#ff0000"> lib/git</font><font color="#F3E651">.</font><b><font color="#ffffff">source</font></b><font color="#F3E651">.</font><font color="#ff0000">sh</font>
-<font color="#ff0000"> </font><font color="#bb00ff">162</font><font color="#ff0000"> lib/html</font><font color="#F3E651">.</font><b><font color="#ffffff">source</font></b><font color="#F3E651">.</font><font color="#ff0000">sh</font>
-<font color="#ff0000"> </font><font color="#bb00ff">30</font><font color="#ff0000"> lib/log</font><font color="#F3E651">.</font><b><font color="#ffffff">source</font></b><font color="#F3E651">.</font><font color="#ff0000">sh</font>
-<font color="#ff0000"> </font><font color="#bb00ff">63</font><font color="#ff0000"> lib/md</font><font color="#F3E651">.</font><b><font color="#ffffff">source</font></b><font color="#F3E651">.</font><font color="#ff0000">sh</font>
-<font color="#ff0000"> </font><font color="#bb00ff">834</font><font color="#ff0000"> total</font>
+<pre>paul <b><u><font color="#000000">in</font></u></b> uranus <b><u><font color="#000000">in</font></u></b> gemtexter on 🌱 main
+❯ wc -l gemtexter lib/*
+ <font color="#000000">117</font> gemtexter
+ <font color="#000000">59</font> lib/assert.<b><u><font color="#000000">source</font></u></b>.sh
+ <font color="#000000">128</font> lib/atomfeed.<b><u><font color="#000000">source</font></u></b>.sh
+ <font color="#000000">64</font> lib/gemfeed.<b><u><font color="#000000">source</font></u></b>.sh
+ <font color="#000000">161</font> lib/generate.<b><u><font color="#000000">source</font></u></b>.sh
+ <font color="#000000">50</font> lib/git.<b><u><font color="#000000">source</font></u></b>.sh
+ <font color="#000000">162</font> lib/html.<b><u><font color="#000000">source</font></u></b>.sh
+ <font color="#000000">30</font> lib/log.<b><u><font color="#000000">source</font></u></b>.sh
+ <font color="#000000">63</font> lib/md.<b><u><font color="#000000">source</font></u></b>.sh
+ <font color="#000000">834</font> total
</pre>
<br />
<span>This way, the script could grow far beyond 1000 lines of code and still be maintainable. With more features, execution speed may slowly become a problem, though. I already notice that Gemtexter doesn&#39;t produce results instantly but requires few seconds of runtime already. That&#39;s not a problem yet, though. </span><br />
@@ -157,9 +160,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">gemtext</font><font color="#F3E651">=</font><font color="#bb00ff">'=&gt; http://example.org Description of the link'</font>
-<font color="#ff0000">assert</font><font color="#F3E651">::</font><font color="#ff0000">equals </font><font color="#bb00ff">"$(generate::make_link html "</font><font color="#ff0000">$gemtext</font><font color="#bb00ff">")"</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#bb00ff">'&lt;a class="textlink" href="http://example.org"&gt;Description of the link&lt;/a&gt;&lt;br /&gt;'</font>
+<pre>gemtext=<font color="#808080">'=&gt; http://example.org Description of the link'</font>
+assert::equals <font color="#808080">"$(generate::make_link html "</font>$gemtext<font color="#808080">")"</font> \
+ <font color="#808080">'&lt;a class="textlink" href="http://example.org"&gt;Description of the link&lt;/a&gt;&lt;br /&gt;'</font>
</pre>
<br />
<h3 style='display: inline' id='markdown-unit-test-example'>Markdown unit test example</h3><br />
@@ -168,9 +171,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">gemtext</font><font color="#F3E651">=</font><font color="#bb00ff">'=&gt; http://example.org Description of the link'</font>
-<font color="#ff0000">assert</font><font color="#F3E651">::</font><font color="#ff0000">equals </font><font color="#bb00ff">"$(generate::make_link md "</font><font color="#ff0000">$gemtext</font><font color="#bb00ff">")"</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#bb00ff">'[Description of the link](http://example.org) '</font>
+<pre>gemtext=<font color="#808080">'=&gt; http://example.org Description of the link'</font>
+assert::equals <font color="#808080">"$(generate::make_link md "</font>$gemtext<font color="#808080">")"</font> \
+ <font color="#808080">'[Description of the link](http://example.org) '</font>
</pre>
<br />
<h2 style='display: inline' id='handcrafted-html-styles'>Handcrafted HTML styles</h2><br />
@@ -218,7 +221,7 @@ http://www.gnu.org/software/src-highlite -->
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2021-07-04-the-well-grounded-rubyist.html b/gemfeed/2021-07-04-the-well-grounded-rubyist.html
index 8770f079..cdadc104 100644
--- a/gemfeed/2021-07-04-the-well-grounded-rubyist.html
+++ b/gemfeed/2021-07-04-the-well-grounded-rubyist.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2021-07-04-the-well-grounded-rubyist.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2021-07-04-the-well-grounded-rubyist.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='the-well-grounded-rubyist'>The Well-Grounded Rubyist</h1><br />
<br />
<span class='quote'>Published at 2021-07-04T10:51:23+01:00</span><br />
@@ -132,7 +135,7 @@ Hello World
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2021-08-01-on-being-pedantic-about-open-source.html b/gemfeed/2021-08-01-on-being-pedantic-about-open-source.html
index c6df05d1..5b1e1ff7 100644
--- a/gemfeed/2021-08-01-on-being-pedantic-about-open-source.html
+++ b/gemfeed/2021-08-01-on-being-pedantic-about-open-source.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2021-08-01-on-being-pedantic-about-open-source.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2021-08-01-on-being-pedantic-about-open-source.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='on-being-pedantic-about-open-source'>On being Pedantic about Open-Source</h1><br />
<br />
<span class='quote'>Published at 2021-08-01T10:37:58+03:00; Updated at 2023-01-23</span><br />
@@ -148,7 +151,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2021-09-12-keep-it-simple-and-stupid.html b/gemfeed/2021-09-12-keep-it-simple-and-stupid.html
index e41b81a9..7a64cff0 100644
--- a/gemfeed/2021-09-12-keep-it-simple-and-stupid.html
+++ b/gemfeed/2021-09-12-keep-it-simple-and-stupid.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2021-09-12-keep-it-simple-and-stupid.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2021-09-12-keep-it-simple-and-stupid.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='keep-it-simple-and-stupid'>Keep it simple and stupid</h1><br />
<br />
<span class='quote'>Published at 2021-09-12T09:39:20+03:00; Updated at 2023-03-23</span><br />
@@ -135,7 +138,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2021-10-22-defensive-devops.html b/gemfeed/2021-10-22-defensive-devops.html
index 2f8eac19..eeee37aa 100644
--- a/gemfeed/2021-10-22-defensive-devops.html
+++ b/gemfeed/2021-10-22-defensive-devops.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2021-10-22-defensive-devops.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2021-10-22-defensive-devops.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='defensive-devops'>Defensive DevOps</h1><br />
<br />
<span class='quote'>Published at 2021-10-22T10:02:46+03:00</span><br />
@@ -128,7 +131,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2021-11-29-bash-golf-part-1.html b/gemfeed/2021-11-29-bash-golf-part-1.html
index 0eed4ba7..dbdc2670 100644
--- a/gemfeed/2021-11-29-bash-golf-part-1.html
+++ b/gemfeed/2021-11-29-bash-golf-part-1.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2021-11-29-bash-golf-part-1.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2021-11-29-bash-golf-part-1.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='bash-golf-part-1'>Bash Golf Part 1</h1><br />
<br />
<span class='quote'>Published at 2021-11-29T14:06:14+00:00; Updated at 2022-01-05</span><br />
@@ -499,7 +502,7 @@ bash: line 1: 1/10.0 : syntax error: invalid arithmetic operator (error token is
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html b/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html
index f3982efa..cb6d7940 100644
--- a/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html
+++ b/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='how-to-stay-sane-as-a-devops-person-'>How to stay sane as a DevOps person </h1><br />
<br />
<span class='quote'>Published at 2021-12-26T12:02:02+00:00; Updated at 2022-01-12</span><br />
@@ -157,7 +160,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2022-01-01-bash-golf-part-2.html b/gemfeed/2022-01-01-bash-golf-part-2.html
index 20856d40..3b66d2b8 100644
--- a/gemfeed/2022-01-01-bash-golf-part-2.html
+++ b/gemfeed/2022-01-01-bash-golf-part-2.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2022-01-01-bash-golf-part-2.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2022-01-01-bash-golf-part-2.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='bash-golf-part-2'>Bash Golf Part 2</h1><br />
<br />
<span class='quote'>Published at 2022-01-01T23:36:15+00:00; Updated at 2022-01-05</span><br />
@@ -518,7 +521,7 @@ PAUL:X:1000:1000:PAUL BUETOW:/HOME/PAUL:/BIN/BASH
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2022-01-23-welcome-to-the-foo.zone.html b/gemfeed/2022-01-23-welcome-to-the-foo.zone.html
index dcca2e70..46cc9ade 100644
--- a/gemfeed/2022-01-23-welcome-to-the-foo.zone.html
+++ b/gemfeed/2022-01-23-welcome-to-the-foo.zone.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2022-01-23-welcome-to-the-foo.zone.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2022-01-23-welcome-to-the-foo.zone.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='welcome-to-the-foozone'>Welcome to the foo.zone</h1><br />
<br />
<span class='quote'>Published at 2022-01-23T16:42:04+00:00</span><br />
@@ -59,7 +62,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2022-02-04-computer-operating-systems-i-use.html b/gemfeed/2022-02-04-computer-operating-systems-i-use.html
index b18747a4..dea2363d 100644
--- a/gemfeed/2022-02-04-computer-operating-systems-i-use.html
+++ b/gemfeed/2022-02-04-computer-operating-systems-i-use.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2022-02-04-computer-operating-systems-i-use.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2022-02-04-computer-operating-systems-i-use.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='computer-operating-systems-i-used'>Computer operating systems I use(d)</h1><br />
<br />
<span class='quote'>Published at 2022-02-04T09:58:22+00:00; Updated at 2022-02-18</span><br />
@@ -266,7 +269,7 @@ GNU/kFreeBSD rhea.buetow.org 8.0-RELEASE-p5 FreeBSD 8.0-RELEASE-p5 #2: Sat Nov 2
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2022-03-06-the-release-of-dtail-4.0.0.html b/gemfeed/2022-03-06-the-release-of-dtail-4.0.0.html
index f1e08c60..548c5d17 100644
--- a/gemfeed/2022-03-06-the-release-of-dtail-4.0.0.html
+++ b/gemfeed/2022-03-06-the-release-of-dtail-4.0.0.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2022-03-06-the-release-of-dtail-4.0.0.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2022-03-06-the-release-of-dtail-4.0.0.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='the-release-of-dtail-400'>The release of DTail 4.0.0</h1><br />
<br />
<span class='quote'>Published at 2022-03-06T18:11:39+00:00</span><br />
@@ -333,7 +336,7 @@ exec /usr/local/bin/dtailhealth --server localhost:2222
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2022-04-10-creative-universe.html b/gemfeed/2022-04-10-creative-universe.html
index 764c7fa9..275c2929 100644
--- a/gemfeed/2022-04-10-creative-universe.html
+++ b/gemfeed/2022-04-10-creative-universe.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2022-04-10-creative-universe.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2022-04-10-creative-universe.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='creative-universe'>Creative universe</h1><br />
<br />
<span class='quote'>Published at 2022-04-10T10:09:11+01:00; Updated at 2022-04-18</span><br />
@@ -165,7 +168,7 @@ learn () {
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2022-05-27-perl-is-still-a-great-choice.html b/gemfeed/2022-05-27-perl-is-still-a-great-choice.html
index 220a3575..b8b871c1 100644
--- a/gemfeed/2022-05-27-perl-is-still-a-great-choice.html
+++ b/gemfeed/2022-05-27-perl-is-still-a-great-choice.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2022-05-27-perl-is-still-a-great-choice.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2022-05-27-perl-is-still-a-great-choice.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='perl-is-still-a-great-choice'>Perl is still a great choice</h1><br />
<br />
<span class='quote'>Published at 2022-05-27T07:50:12+01:00; Updated at 2023-01-28</span><br />
@@ -170,7 +173,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2022-06-15-sweating-the-small-stuff.html b/gemfeed/2022-06-15-sweating-the-small-stuff.html
index 3e014683..eb4f1dba 100644
--- a/gemfeed/2022-06-15-sweating-the-small-stuff.html
+++ b/gemfeed/2022-06-15-sweating-the-small-stuff.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2022-06-15-sweating-the-small-stuff.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2022-06-15-sweating-the-small-stuff.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='sweating-the-small-stuff---tiny-projects-of-mine'>Sweating the small stuff - Tiny projects of mine</h1><br />
<br />
<span class='quote'>Published at 2022-06-15T08:47:44+01:00; Updated at 2022-06-18</span><br />
@@ -364,7 +367,7 @@ v = 008 [v = p*c*(s != c ? 2 : 1)] Total logical CPUs
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.html b/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.html
index aa1280b6..29074c4a 100644
--- a/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.html
+++ b/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='let-s-encrypt-with-openbsd-and-rex'>Let&#39;s Encrypt with OpenBSD and Rex</h1><br />
<br />
<span class='quote'>Published at 2022-07-30T12:14:31+01:00</span><br />
@@ -699,7 +702,7 @@ rex commons
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2022-08-27-gemtexter-1.1.0-lets-gemtext-again.html b/gemfeed/2022-08-27-gemtexter-1.1.0-lets-gemtext-again.html
index d6150170..9087dbec 100644
--- a/gemfeed/2022-08-27-gemtexter-1.1.0-lets-gemtext-again.html
+++ b/gemfeed/2022-08-27-gemtexter-1.1.0-lets-gemtext-again.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2022-08-27-gemtexter-1.1.0-lets-gemtext-again.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2022-08-27-gemtexter-1.1.0-lets-gemtext-again.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='gemtexter-110---let-s-gemtext-again'>Gemtexter 1.1.0 - Let&#39;s Gemtext again</h1><br />
<br />
<span class='quote'>Published at 2022-08-27T18:25:57+01:00</span><br />
@@ -54,23 +57,23 @@
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#7bc710">check_dependencies ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><i><font color="#ababab"># At least, Bash 5 is required</font></i>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -i </font><font color="#ff0000">required_version</font><font color="#F3E651">=</font><font color="#bb00ff">5</font>
-<font color="#ff0000"> </font><font color="#ff0000">IFS</font><font color="#F3E651">=.</font><font color="#ff0000"> </font><b><font color="#ffffff">read</font></b><font color="#ff0000"> -ra version </font><font color="#F3E651">&lt;&lt;&lt;</font><font color="#ff0000"> </font><font color="#bb00ff">"$BASH_VERSION"</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#bb00ff">"${version[0]}"</font><font color="#ff0000"> -lt </font><font color="#ff0000">$required_version</font><font color="#ff0000"> </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> log ERROR </font><font color="#bb00ff">"ERROR, </font><font color="#ffffff">\"</font><font color="#bb00ff">bash</font><font color="#ffffff">\"</font><font color="#bb00ff"> must be at least at major version $required_version!"</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">exit</font></b><font color="#ff0000"> </font><font color="#bb00ff">2</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
+<pre>check_dependencies () {
+ <i><font color="silver"># At least, Bash 5 is required</font></i>
+ <b><u><font color="#000000">local</font></u></b> -i required_version=<font color="#000000">5</font>
+ IFS=. <b><u><font color="#000000">read</font></u></b> -ra version &lt;&lt;&lt; <font color="#808080">"$BASH_VERSION"</font>
+ <b><u><font color="#000000">if</font></u></b> [ <font color="#808080">"${version[0]}"</font> -lt $required_version ]; <b><u><font color="#000000">then</font></u></b>
+ log ERROR <font color="#808080">"ERROR, </font>\"<font color="#808080">bash</font>\"<font color="#808080"> must be at least at major version $required_version!"</font>
+ <b><u><font color="#000000">exit</font></u></b> <font color="#000000">2</font>
+ <b><u><font color="#000000">fi</font></u></b>
-<font color="#ff0000"> </font><i><font color="#ababab"># These must be the GNU versions of the commands</font></i>
-<font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> tool </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> </font><font color="#ff0000">$DATE</font><font color="#ff0000"> </font><font color="#ff0000">$SED</font><font color="#ff0000"> </font><font color="#ff0000">$GREP</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">!</font><font color="#ff0000"> </font><font color="#ff0000">$tool</font><font color="#ff0000"> --version </font><font color="#F3E651">|</font><font color="#ff0000"> grep -q GNU</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> log ERROR </font><font color="#bb00ff">"ERROR, </font><font color="#ffffff">\"</font><font color="#bb00ff">$tool</font><font color="#ffffff">\"</font><font color="#bb00ff"> command is not the GNU version, please install!"</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">exit</font></b><font color="#ff0000"> </font><font color="#bb00ff">2</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">done</font></b>
-<font color="#ff0000">}</font>
+ <i><font color="silver"># These must be the GNU versions of the commands</font></i>
+ <b><u><font color="#000000">for</font></u></b> tool <b><u><font color="#000000">in</font></u></b> $DATE $SED $GREP; <b><u><font color="#000000">do</font></u></b>
+ <b><u><font color="#000000">if</font></u></b> ! $tool --version | grep -q GNU; <b><u><font color="#000000">then</font></u></b>
+ log ERROR <font color="#808080">"ERROR, </font>\"<font color="#808080">$tool</font>\"<font color="#808080"> command is not the GNU version, please install!"</font>
+ <b><u><font color="#000000">exit</font></u></b> <font color="#000000">2</font>
+ <b><u><font color="#000000">fi</font></u></b>
+ <b><u><font color="#000000">done</font></u></b>
+}
</pre>
<br />
<span>Especially macOS users didn&#39;t read the <span class='inlinecode'>README</span> carefully enough to install GNU Grep, GNU Sed and GNU Date before using Gemtexter.</span><br />
@@ -91,7 +94,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">.</font><font color="#ff0000">/gemtexter --generate </font><font color="#bb00ff">'.*hello.*'</font>
+<pre>./gemtexter --generate <font color="#808080">'.*hello.*'</font>
</pre>
<br />
<h3 style='display: inline' id='revamped-git-support'>Revamped <span class='inlinecode'>git</span> support</h3><br />
@@ -128,7 +131,7 @@ http://www.gnu.org/software/src-highlite -->
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2022-09-30-after-a-bad-nights-sleep.html b/gemfeed/2022-09-30-after-a-bad-nights-sleep.html
index 6248eb06..4370abd5 100644
--- a/gemfeed/2022-09-30-after-a-bad-nights-sleep.html
+++ b/gemfeed/2022-09-30-after-a-bad-nights-sleep.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2022-09-30-after-a-bad-nights-sleep.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2022-09-30-after-a-bad-nights-sleep.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='after-a-bad-night-s-sleep'>After a bad night&#39;s sleep</h1><br />
<br />
<span class='quote'>Published at 2022-09-30T09:53:23+03:00; Updated at 2022-10-12</span><br />
@@ -128,7 +131,7 @@ jgs (________\ \
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2022-10-30-installing-dtail-on-openbsd.html b/gemfeed/2022-10-30-installing-dtail-on-openbsd.html
index e55abea9..59e1b57b 100644
--- a/gemfeed/2022-10-30-installing-dtail-on-openbsd.html
+++ b/gemfeed/2022-10-30-installing-dtail-on-openbsd.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2022-10-30-installing-dtail-on-openbsd.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2022-10-30-installing-dtail-on-openbsd.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='installing-dtail-on-openbsd'>Installing DTail on OpenBSD</h1><br />
<br />
<span class='quote'>Published at 2022-10-30T11:03:19+02:00</span><br />
@@ -375,7 +378,7 @@ REMOTE|fishfinger|100|7|fstab|093f510ec5c0f512.h /usr/local ffs rw,wxallowed,nod
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2022-11-24-i-tried-emacs-but-i-switched-back-to-neovim.html b/gemfeed/2022-11-24-i-tried-emacs-but-i-switched-back-to-neovim.html
index b322bfa8..71fb253f 100644
--- a/gemfeed/2022-11-24-i-tried-emacs-but-i-switched-back-to-neovim.html
+++ b/gemfeed/2022-11-24-i-tried-emacs-but-i-switched-back-to-neovim.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2022-11-24-i-tried-emacs-but-i-switched-back-to-neovim.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2022-11-24-i-tried-emacs-but-i-switched-back-to-neovim.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='i-tried-doom-emacs-but-i-switched-back-to-neovim'>I tried (Doom) Emacs, but I switched back to (Neo)Vim</h1><br />
<br />
<span class='quote'>Published at 2022-11-24T11:17:15+02:00; Updated at 2022-11-26</span><br />
@@ -91,10 +94,10 @@ Art by \ \_! / __!
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">" Clipboard</font></i>
-<font color="#ff0000">vnoremap ,</font><b><font color="#ffffff">y</font></b><font color="#ff0000"> !pbcopy</font><font color="#ff0000">&lt;CR&gt;</font><font color="#ff0000">ugv</font>
-<font color="#ff0000">vnoremap ,</font><b><font color="#ffffff">i</font></b><font color="#ff0000"> !pbpaste</font><font color="#ff0000">&lt;CR&gt;</font>
-<font color="#ff0000">nmap ,</font><b><font color="#ffffff">i</font></b><font color="#ff0000"> !wpbpaste</font><font color="#ff0000">&lt;CR&gt;</font>
+<pre><i><font color="silver">" Clipboard</font></i>
+vnoremap ,<b><u><font color="#000000">y</font></u></b> !pbcopy&lt;CR&gt;ugv
+vnoremap ,<b><u><font color="#000000">i</font></u></b> !pbpaste&lt;CR&gt;
+nmap ,<b><u><font color="#000000">i</font></u></b> !wpbpaste&lt;CR&gt;
</pre>
<br />
<span>That&#39;s only a very few lines and does precisely what I want. It&#39;s quick and dirty but get&#39;s the job done! If VimScript becomes too cumbersome, I can use Lua for NeoVim scripting.</span><br />
@@ -139,7 +142,7 @@ http://www.gnu.org/software/src-highlite -->
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2022-12-24-ultrarelearning-java-my-takeaways.html b/gemfeed/2022-12-24-ultrarelearning-java-my-takeaways.html
index 86a56785..1e968e63 100644
--- a/gemfeed/2022-12-24-ultrarelearning-java-my-takeaways.html
+++ b/gemfeed/2022-12-24-ultrarelearning-java-my-takeaways.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2022-12-24-ultrarelearning-java-my-takeaways.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2022-12-24-ultrarelearning-java-my-takeaways.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='relearning-java---my-takeaways'>(Re)learning Java - My takeaways</h1><br />
<br />
<span class='quote'>Published at 2022-12-24T23:18:40+02:00</span><br />
@@ -134,7 +137,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2023-01-23-why-grapheneos-rox.html b/gemfeed/2023-01-23-why-grapheneos-rox.html
index 4b8c8c01..be597159 100644
--- a/gemfeed/2023-01-23-why-grapheneos-rox.html
+++ b/gemfeed/2023-01-23-why-grapheneos-rox.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2023-01-23-why-grapheneos-rox.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2023-01-23-why-grapheneos-rox.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='why-grapheneos-rox'>Why GrapheneOS rox</h1><br />
<br />
<span class='quote'>Published at 2023-01-23T15:31:52+02:00</span><br />
@@ -164,7 +167,7 @@ Art by Joan Stark
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2023-02-26-how-to-shut-down-after-work.html b/gemfeed/2023-02-26-how-to-shut-down-after-work.html
index 94604065..c0e35389 100644
--- a/gemfeed/2023-02-26-how-to-shut-down-after-work.html
+++ b/gemfeed/2023-02-26-how-to-shut-down-after-work.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2023-02-26-how-to-shut-down-after-work.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2023-02-26-how-to-shut-down-after-work.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='how-to-shut-down-after-work'>How to shut down after work</h1><br />
<br />
<span class='quote'>Published at 2023-02-26T23:48:01+02:00</span><br />
@@ -100,7 +103,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.html b/gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.html
index 36e5b2f0..5e7e4e72 100644
--- a/gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.html
+++ b/gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='the-pragmatic-programmer-book-notes'>"The Pragmatic Programmer" book notes</h1><br />
<br />
<span class='quote'>Published at 2023-03-16T00:55:20+02:00</span><br />
@@ -106,7 +109,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.html b/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.html
index b778825c..d84eea88 100644
--- a/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.html
+++ b/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='gemtexter-200---let-s-gemtext-again'>Gemtexter 2.0.0 - Let&#39;s Gemtext again²</h1><br />
<br />
<span class='quote'>Published at 2023-03-25T17:50:32+02:00</span><br />
@@ -120,8 +123,8 @@ Blablabla...
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">declare</font></b><font color="#ff0000"> -xr </font><font color="#ff0000">PRE_GENERATE_HOOK</font><font color="#F3E651">=.</font><font color="#ff0000">/pre_generate_hook</font><font color="#F3E651">.</font><font color="#ff0000">sh</font>
-<b><font color="#ffffff">declare</font></b><font color="#ff0000"> -xr </font><font color="#ff0000">POST_PUBLISH_HOOK</font><font color="#F3E651">=.</font><font color="#ff0000">/post_publish_hook</font><font color="#F3E651">.</font><font color="#ff0000">sh</font>
+<pre><b><u><font color="#000000">declare</font></u></b> -xr PRE_GENERATE_HOOK=./pre_generate_hook.sh
+<b><u><font color="#000000">declare</font></u></b> -xr POST_PUBLISH_HOOK=./post_publish_hook.sh
</pre>
<br />
<h2 style='display: inline' id='use-of-safer-bash-options'>Use of safer Bash options</h2><br />
@@ -138,10 +141,10 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> cat gemfeed</font><font color="#F3E651">/</font><font color="#bb00ff">2023</font><font color="#ff0000">-</font><font color="#bb00ff">02</font><font color="#ff0000">-</font><font color="#bb00ff">26</font><font color="#ff0000">-title-here</font><font color="#F3E651">.</font><font color="#ff0000">gmi</font>
-<i><font color="#ababab"># Title here</font></i>
+<pre>% cat gemfeed/<font color="#000000">2023</font>-<font color="#000000">02</font>-<font color="#000000">26</font>-title-here.gmi
+<i><font color="silver"># Title here</font></i>
-<font color="#ff0000">The remaining content of the Gemtext file</font><font color="#F3E651">...</font>
+The remaining content of the Gemtext file...
</pre>
<br />
<span>Gemtexter will add a line starting with <span class='inlinecode'>&gt; Published at ...</span> now. Any subsequent Atom feed generation will then use that date.</span><br />
@@ -150,12 +153,12 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> cat gemfeed</font><font color="#F3E651">/</font><font color="#bb00ff">2023</font><font color="#ff0000">-</font><font color="#bb00ff">02</font><font color="#ff0000">-</font><font color="#bb00ff">26</font><font color="#ff0000">-title-here</font><font color="#F3E651">.</font><font color="#ff0000">gmi</font>
-<i><font color="#ababab"># Title here</font></i>
+<pre>% cat gemfeed/<font color="#000000">2023</font>-<font color="#000000">02</font>-<font color="#000000">26</font>-title-here.gmi
+<i><font color="silver"># Title here</font></i>
-<font color="#F3E651">&gt;</font><font color="#ff0000"> Published at </font><font color="#bb00ff">2023</font><font color="#ff0000">-</font><font color="#bb00ff">02</font><font color="#ff0000">-26T21</font><font color="#F3E651">:</font><font color="#bb00ff">43</font><font color="#F3E651">:</font><font color="#bb00ff">51</font><font color="#F3E651">+</font><font color="#bb00ff">01</font><font color="#F3E651">:</font><font color="#bb00ff">00</font>
+&gt; Published at <font color="#000000">2023</font>-<font color="#000000">02</font>-26T21:<font color="#000000">43</font>:<font color="#000000">51</font>+<font color="#000000">01</font>:<font color="#000000">00</font>
-<font color="#ff0000">The remaining content of the Gemtext file</font><font color="#F3E651">...</font>
+The remaining content of the Gemtext file...
</pre>
<br />
<h2 style='display: inline' id='xmllint-support'>XMLLint support</h2><br />
@@ -179,7 +182,7 @@ http://www.gnu.org/software/src-highlite -->
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2023-04-01-never-split-the-difference-book-notes.html b/gemfeed/2023-04-01-never-split-the-difference-book-notes.html
index fd09e4ad..ba22edfb 100644
--- a/gemfeed/2023-04-01-never-split-the-difference-book-notes.html
+++ b/gemfeed/2023-04-01-never-split-the-difference-book-notes.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2023-04-01-never-split-the-difference-book-notes.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2023-04-01-never-split-the-difference-book-notes.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='never-split-the-difference-book-notes'>"Never split the difference" book notes</h1><br />
<br />
<span class='quote'>Published at 2023-04-01T20:00:17+03:00</span><br />
@@ -169,7 +172,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2023-05-01-unveiling-guprecords:-uptime-records-with-raku.html b/gemfeed/2023-05-01-unveiling-guprecords:-uptime-records-with-raku.html
index 5a68b133..0bfe2bb9 100644
--- a/gemfeed/2023-05-01-unveiling-guprecords:-uptime-records-with-raku.html
+++ b/gemfeed/2023-05-01-unveiling-guprecords:-uptime-records-with-raku.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2023-05-01-unveiling-guprecords:-uptime-records-with-raku.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2023-05-01-unveiling-guprecords:-uptime-records-with-raku.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='unveiling-guprecordsraku-global-uptime-records-with-raku'>Unveiling <span class='inlinecode'>guprecords.raku</span>: Global Uptime Records with Raku</h1><br />
<br />
<span class='quote'>Published at 2023-04-30T13:10:26+03:00</span><br />
@@ -74,7 +77,7 @@
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">$ raku guprecords</font><font color="#F3E651">.</font><font color="#ff0000">raku --stats</font><font color="#F3E651">=</font><font color="#ff0000">dir</font><font color="#F3E651">=</font><font color="#ff0000">$HOME</font><font color="#ff0000">/git/uprecords/stats --all</font>
+<pre>$ raku guprecords.raku --stats=dir=$HOME/git/uprecords/stats --all
</pre>
<br />
<span>This command will generate a comprehensive uptime report from the collected statistics, making it easy to review and enjoy the data.</span><br />
@@ -185,7 +188,7 @@ no1 in 455 days, 18:52:44 | at Sun Jul 21 07:37:51 2024
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2023-05-06-the-obstacle-is-the-way-book-notes.html b/gemfeed/2023-05-06-the-obstacle-is-the-way-book-notes.html
index 3ee7dec8..91b05819 100644
--- a/gemfeed/2023-05-06-the-obstacle-is-the-way-book-notes.html
+++ b/gemfeed/2023-05-06-the-obstacle-is-the-way-book-notes.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2023-05-06-the-obstacle-is-the-way-book-notes.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2023-05-06-the-obstacle-is-the-way-book-notes.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='the-obstacle-is-the-way-book-notes'>"The Obstacle is the Way" book notes</h1><br />
<br />
<span class='quote'>Published at 2023-05-06T17:23:16+03:00</span><br />
@@ -122,7 +125,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2023-06-01-kiss-server-monitoring-with-gogios.html b/gemfeed/2023-06-01-kiss-server-monitoring-with-gogios.html
index b99e41fd..46eaf3f3 100644
--- a/gemfeed/2023-06-01-kiss-server-monitoring-with-gogios.html
+++ b/gemfeed/2023-06-01-kiss-server-monitoring-with-gogios.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2023-06-01-kiss-server-monitoring-with-gogios.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2023-06-01-kiss-server-monitoring-with-gogios.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='kiss-server-monitoring-with-gogios'>KISS server monitoring with Gogios</h1><br />
<br />
<span class='quote'>Published at 2023-06-01T21:10:17+03:00</span><br />
@@ -114,11 +117,11 @@ Have a nice day!
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">git clone https</font><font color="#F3E651">:</font><font color="#ff0000">//codeberg</font><font color="#F3E651">.</font><font color="#ff0000">org/snonux/gogios</font><font color="#F3E651">.</font><font color="#ff0000">git</font>
-<font color="#ff0000">cd gogios</font>
-<font color="#ff0000">go build -o gogios cmd/gogios/main</font><font color="#F3E651">.</font><font color="#ff0000">go</font>
-<font color="#ff0000">doas cp gogios /usr/local/bin/gogios</font>
-<font color="#ff0000">doas chmod </font><font color="#bb00ff">755</font><font color="#ff0000"> /usr/local/bin/gogios</font>
+<pre>git clone https://codeberg.org/snonux/gogios.git
+cd gogios
+go build -o gogios cmd/gogios/main.go
+doas cp gogios /usr/local/bin/gogios
+doas chmod <font color="#000000">755</font> /usr/local/bin/gogios
</pre>
<br />
<span>You can use cross-compilation if you want to compile Gogios for OpenBSD on a Linux system without installing the Go compiler on OpenBSD. Follow these steps:</span><br />
@@ -127,9 +130,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">export</font></b><font color="#ff0000"> </font><font color="#ff0000">GOOS</font><font color="#F3E651">=</font><font color="#ff0000">openbsd</font>
-<b><font color="#ffffff">export</font></b><font color="#ff0000"> </font><font color="#ff0000">GOARCH</font><font color="#F3E651">=</font><font color="#ff0000">amd64</font>
-<font color="#ff0000">go build -o gogios cmd/gogios/main</font><font color="#F3E651">.</font><font color="#ff0000">go</font>
+<pre><b><u><font color="#000000">export</font></u></b> GOOS=openbsd
+<b><u><font color="#000000">export</font></u></b> GOARCH=amd64
+go build -o gogios cmd/gogios/main.go
</pre>
<br />
<span>On your OpenBSD system, copy the binary to <span class='inlinecode'>/usr/local/bin/gogios</span> and set the correct permissions as described in the previous section. All steps described here you could automate with your configuration management system of choice. I use Rexify, the friendly configuration management system, to automate the installation, but that is out of the scope of this document.</span><br />
@@ -144,11 +147,11 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">doas adduser -group _gogios -batch _gogios</font>
-<font color="#ff0000">doas usermod -d /var/run/gogios _gogios</font>
-<font color="#ff0000">doas mkdir -p /var/run/gogios</font>
-<font color="#ff0000">doas chown _gogios</font><font color="#F3E651">:</font><font color="#ff0000">_gogios /var/run/gogios</font>
-<font color="#ff0000">doas chmod </font><font color="#bb00ff">750</font><font color="#ff0000"> /var/run/gogios</font>
+<pre>doas adduser -group _gogios -batch _gogios
+doas usermod -d /var/run/gogios _gogios
+doas mkdir -p /var/run/gogios
+doas chown _gogios:_gogios /var/run/gogios
+doas chmod <font color="#000000">750</font> /var/run/gogios
</pre>
<br />
<span>Please note that creating a user and group might differ depending on your operating system. For other operating systems, consult their documentation for creating system users and groups.</span><br />
@@ -161,8 +164,8 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">doas pkg_add monitoring-plugins</font>
-<font color="#ff0000">doas pkg_add nrpe </font><i><font color="#ababab"># If you want to execute checks remotely via NRPE.</font></i>
+<pre>doas pkg_add monitoring-plugins
+doas pkg_add nrpe <i><font color="silver"># If you want to execute checks remotely via NRPE.</font></i>
</pre>
<br />
<span>Once the installation is complete, you can find the monitoring plugins in the <span class='inlinecode'>/usr/local/libexec/nagios</span> directory, which then can be configured to be used in <span class='inlinecode'>gogios.json</span>.</span><br />
@@ -189,41 +192,41 @@ echo &#39;This is a test email from OpenBSD.&#39; | mail -s &#39;Test Email&#39;
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">EmailTo</font><font color="#ff0000">"</font><font color="#ff0000">:</font><font color="#ff0000"> "</font><font color="#bb00ff">paul@dev.buetow.org</font><font color="#ff0000">"</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">EmailFrom</font><font color="#ff0000">"</font><font color="#ff0000">:</font><font color="#ff0000"> "</font><font color="#bb00ff">gogios@buetow.org</font><font color="#ff0000">"</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">CheckTimeoutS</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#bb00ff">10</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">CheckConcurrency</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#bb00ff">2</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">StateDir</font><font color="#ff0000">"</font><font color="#ff0000">:</font><font color="#ff0000"> "</font><font color="#bb00ff">/var/run/gogios</font><font color="#ff0000">"</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Checks</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Check ICMP4 www.foo.zone</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Plugin</font><font color="#ff0000">"</font><font color="#ff0000">:</font><font color="#ff0000"> "</font><font color="#bb00ff">/usr/local/libexec/nagios/check_ping</font><font color="#ff0000">"</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Args</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-H</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">www.foo.zone</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-4</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-w</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">50,10%</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-c</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">100,15%</font><font color="#ff0000">"</font><font color="#ff0000"> </font><font color="#F3E651">],</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Retries</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#bb00ff">3</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">RetryInterval</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#bb00ff">10</font>
-<font color="#ff0000"> </font><font color="#F3E651">},</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Check ICMP6 www.foo.zone</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Plugin</font><font color="#ff0000">"</font><font color="#ff0000">:</font><font color="#ff0000"> "</font><font color="#bb00ff">/usr/local/libexec/nagios/check_ping</font><font color="#ff0000">"</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Args</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-H</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">www.foo.zone</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-6</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-w</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">50,10%</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-c</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">100,15%</font><font color="#ff0000">"</font><font color="#ff0000"> </font><font color="#F3E651">],</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Retries</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#bb00ff">3</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">RetryInterval</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#bb00ff">10</font>
-<font color="#ff0000"> </font><font color="#F3E651">},</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">www.foo.zone HTTP IPv4</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Plugin</font><font color="#ff0000">"</font><font color="#ff0000">:</font><font color="#ff0000"> "</font><font color="#bb00ff">/usr/local/libexec/nagios/check_http</font><font color="#ff0000">"</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Args</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">[</font><font color="#ff0000">"</font><font color="#ff0000">www.foo.zone</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-4</font><font color="#ff0000">"</font><font color="#F3E651">],</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">DependsOn</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">[</font><font color="#ff0000">"</font><font color="#ff0000">Check ICMP4 www.foo.zone</font><font color="#ff0000">"</font><font color="#F3E651">]</font>
-<font color="#ff0000"> </font><font color="#F3E651">},</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">www.foo.zone HTTP IPv6</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Plugin</font><font color="#ff0000">"</font><font color="#ff0000">:</font><font color="#ff0000"> "</font><font color="#bb00ff">/usr/local/libexec/nagios/check_http</font><font color="#ff0000">"</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Args</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">[</font><font color="#ff0000">"</font><font color="#ff0000">www.foo.zone</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-6</font><font color="#ff0000">"</font><font color="#F3E651">],</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">DependsOn</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">[</font><font color="#ff0000">"</font><font color="#ff0000">Check ICMP6 www.foo.zone</font><font color="#ff0000">"</font><font color="#F3E651">]</font>
-<font color="#ff0000"> </font><font color="#F3E651">}</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Check NRPE Disk Usage foo.zone</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Plugin</font><font color="#ff0000">"</font><font color="#ff0000">:</font><font color="#ff0000"> "</font><font color="#bb00ff">/usr/local/libexec/nagios/check_nrpe</font><font color="#ff0000">"</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Args</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">[</font><font color="#ff0000">"</font><font color="#ff0000">-H</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">foo.zone</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-c</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">check_disk</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-p</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">5666</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-4</font><font color="#ff0000">"</font><font color="#F3E651">]</font>
-<font color="#ff0000"> </font><font color="#F3E651">}</font>
-<font color="#ff0000"> </font><font color="#F3E651">}</font>
-<font color="#F3E651">}</font>
+<pre>{
+ "EmailTo": "<font color="#808080">paul@dev.buetow.org</font>",
+ "EmailFrom": "<font color="#808080">gogios@buetow.org</font>",
+ "CheckTimeoutS": <font color="#000000">10</font>,
+ "CheckConcurrency": <font color="#000000">2</font>,
+ "StateDir": "<font color="#808080">/var/run/gogios</font>",
+ "Checks": {
+ "Check ICMP4 www.foo.zone": {
+ "Plugin": "<font color="#808080">/usr/local/libexec/nagios/check_ping</font>",
+ "Args": [ "-H", "www.foo.zone", "-4", "-w", "50,10%", "-c", "100,15%" ],
+ "Retries": <font color="#000000">3</font>,
+ "RetryInterval": <font color="#000000">10</font>
+ },
+ "Check ICMP6 www.foo.zone": {
+ "Plugin": "<font color="#808080">/usr/local/libexec/nagios/check_ping</font>",
+ "Args": [ "-H", "www.foo.zone", "-6", "-w", "50,10%", "-c", "100,15%" ],
+ "Retries": <font color="#000000">3</font>,
+ "RetryInterval": <font color="#000000">10</font>
+ },
+ "www.foo.zone HTTP IPv4": {
+ "Plugin": "<font color="#808080">/usr/local/libexec/nagios/check_http</font>",
+ "Args": ["www.foo.zone", "-4"],
+ "DependsOn": ["Check ICMP4 www.foo.zone"]
+ },
+ "www.foo.zone HTTP IPv6": {
+ "Plugin": "<font color="#808080">/usr/local/libexec/nagios/check_http</font>",
+ "Args": ["www.foo.zone", "-6"],
+ "DependsOn": ["Check ICMP6 www.foo.zone"]
+ }
+ "Check NRPE Disk Usage foo.zone": {
+ "Plugin": "<font color="#808080">/usr/local/libexec/nagios/check_nrpe</font>",
+ "Args": ["-H", "foo.zone", "-c", "check_disk", "-p", "5666", "-4"]
+ }
+ }
+}
</pre>
<br />
<ul>
@@ -252,7 +255,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">doas -u _gogios /usr/local/bin/gogios -cfg /etc/gogios</font><font color="#F3E651">.</font><font color="#ff0000">json</font>
+<pre>doas -u _gogios /usr/local/bin/gogios -cfg /etc/gogios.json
</pre>
<br />
<span>To run Gogios via CRON on OpenBSD as the <span class='inlinecode'>gogios</span> user and check all services once per minute, follow these steps:</span><br />
@@ -294,7 +297,7 @@ http://www.gnu.org/software/src-highlite -->
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2023-07-17-career-guide-and-soft-skills-book-notes.html b/gemfeed/2023-07-17-career-guide-and-soft-skills-book-notes.html
index 55e8b720..5efea299 100644
--- a/gemfeed/2023-07-17-career-guide-and-soft-skills-book-notes.html
+++ b/gemfeed/2023-07-17-career-guide-and-soft-skills-book-notes.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2023-07-17-career-guide-and-soft-skills-book-notes.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2023-07-17-career-guide-and-soft-skills-book-notes.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='software-developmers-career-guide-and-soft-skills-book-notes'>"Software Developmers Career Guide and Soft Skills" book notes</h1><br />
<br />
<span class='quote'>Published at 2023-07-17T04:56:20+03:00</span><br />
@@ -354,7 +357,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.html b/gemfeed/2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.html
index ae5ca1aa..f1530b18 100644
--- a/gemfeed/2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.html
+++ b/gemfeed/2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='gemtexter-210---let-s-gemtext-again'>Gemtexter 2.1.0 - Let&#39;s Gemtext again³</h1><br />
<br />
<span class='quote'>Published at 2023-07-21T10:19:31+03:00</span><br />
@@ -69,9 +72,9 @@
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> -n </font><font color="#bb00ff">"$foo"</font><font color="#ff0000"> </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"$foo"</font>
-<b><font color="#ffffff">fi</font></b>
+<pre><b><u><font color="#000000">if</font></u></b> [ -n <font color="#808080">"$foo"</font> ]; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"$foo"</font>
+<b><u><font color="#000000">fi</font></u></b>
</pre>
<br />
<span>Please run <span class='inlinecode'>source-highlight --lang-list</span> for a list of all supported languages.</span><br />
@@ -100,7 +103,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">declare</font></b><font color="#ff0000"> -xr </font><font color="#ff0000">MASTODON_URI</font><font color="#F3E651">=</font><font color="#bb00ff">'https://fosstodon.org/@snonux'</font>
+<pre><b><u><font color="#000000">declare</font></u></b> -xr MASTODON_URI=<font color="#808080">'https://fosstodon.org/@snonux'</font>
</pre>
<br />
<span>and add the following into your <span class='inlinecode'>index.gmi</span>:</span><br />
@@ -115,7 +118,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">&lt;a</font></b><font color="#ff0000"> </font><b><font color="#F35E1E">href</font></b><font color="#F3E651">=</font><font color="#bb00ff">'https://fosstodon.org/@snonux'</font><font color="#ff0000"> </font><b><font color="#F35E1E">rel</font></b><font color="#F3E651">=</font><font color="#bb00ff">'me'</font><b><font color="#ffffff">&gt;</font></b><font color="#ff0000">Me at Mastodon</font><b><font color="#ffffff">&lt;/a&gt;</font></b>
+<pre><b><u><font color="#000000">&lt;a</font></u></b> <b><font color="#000000">href</font></b>=<font color="#808080">'https://fosstodon.org/@snonux'</font> <b><font color="#000000">rel</font></b>=<font color="#808080">'me'</font><b><u><font color="#000000">&gt;</font></u></b>Me at Mastodon<b><u><font color="#000000">&lt;/a&gt;</font></u></b>
</pre>
<br />
<h2 style='display: inline' id='more'>More</h2><br />
@@ -135,7 +138,7 @@ http://www.gnu.org/software/src-highlite -->
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2023-08-18-site-reliability-engineering-part-1.html b/gemfeed/2023-08-18-site-reliability-engineering-part-1.html
index c1ecb384..c0a52ecd 100644
--- a/gemfeed/2023-08-18-site-reliability-engineering-part-1.html
+++ b/gemfeed/2023-08-18-site-reliability-engineering-part-1.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2023-08-18-site-reliability-engineering-part-1.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2023-08-18-site-reliability-engineering-part-1.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='site-reliability-engineering---part-1-sre-and-organizational-culture'>Site Reliability Engineering - Part 1: SRE and Organizational Culture</h1><br />
<br />
<span class='quote'>Published at 2023-08-18T22:43:47+03:00</span><br />
@@ -69,7 +72,7 @@ DC on fire:
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2023-09-25-dtail-usage-examples.html b/gemfeed/2023-09-25-dtail-usage-examples.html
index 8392bcfe..c3d31b71 100644
--- a/gemfeed/2023-09-25-dtail-usage-examples.html
+++ b/gemfeed/2023-09-25-dtail-usage-examples.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2023-09-25-dtail-usage-examples.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2023-09-25-dtail-usage-examples.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='dtail-usage-examples'>DTail usage examples</h1><br />
<br />
<span class='quote'>Published at 2023-09-25T14:57:42+03:00</span><br />
@@ -67,7 +70,7 @@
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dtail --servers serverlist</font><font color="#F3E651">.</font><font color="#ff0000">txt --grep INFO --files </font><font color="#bb00ff">"/var/log/dserver/*.log"</font>
+<pre>% dtail --servers serverlist.txt --grep INFO --files <font color="#808080">"/var/log/dserver/*.log"</font>
</pre>
<br />
<span>Hint: you can also provide a comma separated server list, e.g.: <span class='inlinecode'>servers server1.example.org,server2.example.org:PORT,...</span></span><br />
@@ -80,7 +83,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dtail --servers serverlist</font><font color="#F3E651">.</font><font color="#ff0000">txt --grep INFO </font><font color="#bb00ff">"/var/log/dserver/*.log"</font>
+<pre>% dtail --servers serverlist.txt --grep INFO <font color="#808080">"/var/log/dserver/*.log"</font>
</pre>
<br />
<h2 style='display: inline' id='aggregating-logs'>Aggregating logs</h2><br />
@@ -93,10 +96,10 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dtail --servers serverlist</font><font color="#F3E651">.</font><font color="#ff0000">txt </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --files </font><font color="#bb00ff">'/var/log/dserver/*.log'</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --query </font><font color="#bb00ff">'from STATS select sum($goroutines),sum($cgocalls),</font>
-<font color="#bb00ff"> last($time),max(lifetimeConnections)'</font>
+<pre>% dtail --servers serverlist.txt \
+ --files <font color="#808080">'/var/log/dserver/*.log'</font> \
+ --query <font color="#808080">'from STATS select sum($goroutines),sum($cgocalls),</font>
+<font color="#808080"> last($time),max(lifetimeConnections)'</font>
</pre>
<br />
<span>Beware: For map-reduce queries to work, you have to ensure that DTail supports your log format. Check out the documentaiton of the DTail query language and the DTail log formats on the DTail homepage for more information.</span><br />
@@ -109,10 +112,10 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dtail --servers serverlist</font><font color="#F3E651">.</font><font color="#ff0000">txt </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --files </font><font color="#bb00ff">'/var/log/dserver/*.log'</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#bb00ff">'from STATS select sum($goroutines),sum($cgocalls),</font>
-<font color="#bb00ff"> last($time),max(lifetimeConnections)'</font>
+<pre>% dtail --servers serverlist.txt \
+ --files <font color="#808080">'/var/log/dserver/*.log'</font> \
+ <font color="#808080">'from STATS select sum($goroutines),sum($cgocalls),</font>
+<font color="#808080"> last($time),max(lifetimeConnections)'</font>
</pre>
<br />
<span>Here is another example:</span><br />
@@ -121,10 +124,10 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dtail --servers serverlist</font><font color="#F3E651">.</font><font color="#ff0000">txt </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --files </font><font color="#bb00ff">'/var/log/dserver/*.log'</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --query </font><font color="#bb00ff">'from STATS select $hostname,max($goroutines),max($cgocalls),$loadavg,</font>
-<font color="#bb00ff"> lifetimeConnections group by $hostname order by max($cgocalls)'</font>
+<pre>% dtail --servers serverlist.txt \
+ --files <font color="#808080">'/var/log/dserver/*.log'</font> \
+ --query <font color="#808080">'from STATS select $hostname,max($goroutines),max($cgocalls),$loadavg,</font>
+<font color="#808080"> lifetimeConnections group by $hostname order by max($cgocalls)'</font>
</pre>
<br />
<a href='./dtail-usage-examples/dtail-map2.gif'><img alt='Tail map-reduce example 2' title='Tail map-reduce example 2' src='./dtail-usage-examples/dtail-map2.gif' /></a><br />
@@ -135,9 +138,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dtail --servers serverlist</font><font color="#F3E651">.</font><font color="#ff0000">txt </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --files </font><font color="#bb00ff">'/var/log/dserver/*.log'</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --query </font><font color="#bb00ff">'from STATS select ... outfile append result.csv'</font>
+<pre>% dtail --servers serverlist.txt \
+ --files <font color="#808080">'/var/log/dserver/*.log'</font> \
+ --query <font color="#808080">'from STATS select ... outfile append result.csv'</font>
</pre>
<br />
<h2 style='display: inline' id='how-to-use-dcat'>How to use <span class='inlinecode'>dcat</span></h2><br />
@@ -150,7 +153,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dcat --servers serverlist</font><font color="#F3E651">.</font><font color="#ff0000">txt --files /etc/hostname</font>
+<pre>% dcat --servers serverlist.txt --files /etc/hostname
</pre>
<br />
<a href='./dtail-usage-examples/dcat.gif'><img alt='Cat example' title='Cat example' src='./dtail-usage-examples/dcat.gif' /></a><br />
@@ -161,7 +164,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dcat --servers serverlist</font><font color="#F3E651">.</font><font color="#ff0000">txt /etc/hostname</font>
+<pre>% dcat --servers serverlist.txt /etc/hostname
</pre>
<br />
<h2 style='display: inline' id='how-to-use-dgrep'>How to use <span class='inlinecode'>dgrep</span></h2><br />
@@ -172,9 +175,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dgrep --servers server1</font><font color="#F3E651">.</font><font color="#ff0000">example</font><font color="#F3E651">.</font><font color="#ff0000">org</font><font color="#F3E651">:</font><font color="#bb00ff">2223</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --files /etc/passwd </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --regex nologin</font>
+<pre>% dgrep --servers server1.example.org:<font color="#000000">2223</font> \
+ --files /etc/passwd \
+ --regex nologin
</pre>
<br />
<span>Generally, <span class='inlinecode'>dgrep</span> is also a very useful way to search historic application logs for certain content.</span><br />
@@ -191,10 +194,10 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dmap --servers serverlist</font><font color="#F3E651">.</font><font color="#ff0000">txt </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --files </font><font color="#bb00ff">'/var/log/dserver/*.log'</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --query </font><font color="#bb00ff">'from STATS select $hostname,max($goroutines),max($cgocalls),$loadavg,</font>
-<font color="#bb00ff"> lifetimeConnections group by $hostname order by max($cgocalls)'</font>
+<pre>% dmap --servers serverlist.txt \
+ --files <font color="#808080">'/var/log/dserver/*.log'</font> \
+ --query <font color="#808080">'from STATS select $hostname,max($goroutines),max($cgocalls),$loadavg,</font>
+<font color="#808080"> lifetimeConnections group by $hostname order by max($cgocalls)'</font>
</pre>
<br />
<span>Remember: For that to work, you have to make sure that DTail supports your log format. You can either use the ones already defined in <span class='inlinecode'>internal/mapr/logformat</span> or add an extension to support a custom log format. The example here works out of the box though, as DTail understands its own log format already. </span><br />
@@ -217,9 +220,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dmap --files /var/log/dserver/dserver</font><font color="#F3E651">.</font><font color="#ff0000">log</font>
-<font color="#ff0000"> --query </font><font color="#bb00ff">'from STATS select $hostname,max($goroutines),max($cgocalls),$loadavg,</font>
-<font color="#bb00ff"> lifetimeConnections group by $hostname order by max($cgocalls)'</font>
+<pre>% dmap --files /var/log/dserver/dserver.log
+ --query <font color="#808080">'from STATS select $hostname,max($goroutines),max($cgocalls),$loadavg,</font>
+<font color="#808080"> lifetimeConnections group by $hostname order by max($cgocalls)'</font>
</pre>
<br />
<span>As a shorthand version the following command can be used:</span><br />
@@ -228,9 +231,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dmap </font><font color="#bb00ff">'from STATS select $hostname,max($goroutines),max($cgocalls),$loadavg,</font>
-<font color="#bb00ff"> lifetimeConnections group by $hostname order by max($cgocalls)'</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> /var/log/dsever/dserver</font><font color="#F3E651">.</font><font color="#ff0000">log</font>
+<pre>% dmap <font color="#808080">'from STATS select $hostname,max($goroutines),max($cgocalls),$loadavg,</font>
+<font color="#808080"> lifetimeConnections group by $hostname order by max($cgocalls)'</font> \
+ /var/log/dsever/dserver.log
</pre>
<br />
<span>You can also use a file input pipe as follows:</span><br />
@@ -239,9 +242,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> cat /var/log/dserver/dserver</font><font color="#F3E651">.</font><font color="#ff0000">log </font><font color="#F3E651">|</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> dmap </font><font color="#bb00ff">'from STATS select $hostname,max($goroutines),max($cgocalls),$loadavg,</font>
-<font color="#bb00ff"> lifetimeConnections group by $hostname order by max($cgocalls)'</font>
+<pre>% cat /var/log/dserver/dserver.log | \
+ dmap <font color="#808080">'from STATS select $hostname,max($goroutines),max($cgocalls),$loadavg,</font>
+<font color="#808080"> lifetimeConnections group by $hostname order by max($cgocalls)'</font>
</pre>
<br />
<h3 style='display: inline' id='aggregating-csv-files'>Aggregating CSV files</h3><br />
@@ -252,16 +255,16 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> cat example</font><font color="#F3E651">.</font><font color="#ff0000">csv</font>
-<font color="#ff0000">name</font><font color="#F3E651">,</font><font color="#ff0000">lastname</font><font color="#F3E651">,</font><font color="#ff0000">age</font><font color="#F3E651">,</font><font color="#ff0000">profession</font>
-<font color="#ff0000">Michael</font><font color="#F3E651">,</font><font color="#ff0000">Jordan</font><font color="#F3E651">,</font><font color="#bb00ff">40</font><font color="#F3E651">,</font><font color="#ff0000">Basketball player</font>
-<font color="#ff0000">Michael</font><font color="#F3E651">,</font><font color="#ff0000">Jackson</font><font color="#F3E651">,</font><font color="#bb00ff">100</font><font color="#F3E651">,</font><font color="#ff0000">Singer</font>
-<font color="#ff0000">Albert</font><font color="#F3E651">,</font><font color="#ff0000">Einstein</font><font color="#F3E651">,</font><font color="#bb00ff">200</font><font color="#F3E651">,</font><font color="#ff0000">Physician</font>
-<font color="#F3E651">%</font><font color="#ff0000"> dmap --query </font><font color="#bb00ff">'select lastname,name where age &gt; 40 logformat csv outfile result.csv'</font><font color="#ff0000"> example</font><font color="#F3E651">.</font><font color="#ff0000">csv</font>
-<font color="#F3E651">%</font><font color="#ff0000"> cat result</font><font color="#F3E651">.</font><font color="#ff0000">csv</font>
-<font color="#ff0000">lastname</font><font color="#F3E651">,</font><font color="#ff0000">name</font>
-<font color="#ff0000">Jackson</font><font color="#F3E651">,</font><font color="#ff0000">Michael</font>
-<font color="#ff0000">Einstein</font><font color="#F3E651">,</font><font color="#ff0000">Albert</font>
+<pre>% cat example.csv
+name,lastname,age,profession
+Michael,Jordan,<font color="#000000">40</font>,Basketball player
+Michael,Jackson,<font color="#000000">100</font>,Singer
+Albert,Einstein,<font color="#000000">200</font>,Physician
+% dmap --query <font color="#808080">'select lastname,name where age &gt; 40 logformat csv outfile result.csv'</font> example.csv
+% cat result.csv
+lastname,name
+Jackson,Michael
+Einstein,Albert
</pre>
<br />
<span>DMap can also be used to query and aggregate CSV files from remote servers.</span><br />
@@ -274,44 +277,44 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dtail /var/log/dserver/dserver</font><font color="#F3E651">.</font><font color="#ff0000">log</font>
+<pre>% dtail /var/log/dserver/dserver.log
</pre>
<br />
<!-- Generator: GNU source-highlight 3.1.9
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dtail --logLevel trace /var/log/dserver/dserver</font><font color="#F3E651">.</font><font color="#ff0000">log</font>
+<pre>% dtail --logLevel trace /var/log/dserver/dserver.log
</pre>
<br />
<!-- Generator: GNU source-highlight 3.1.9
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dcat /etc/passwd</font>
+<pre>% dcat /etc/passwd
</pre>
<br />
<!-- Generator: GNU source-highlight 3.1.9
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dcat --plain /etc/passwd </font><font color="#F3E651">&gt;</font><font color="#ff0000"> /etc/test</font>
-<i><font color="#ababab"># Should show no differences.</font></i>
-<font color="#ff0000">diff /etc/test /etc/passwd </font>
+<pre>% dcat --plain /etc/passwd &gt; /etc/test
+<i><font color="silver"># Should show no differences.</font></i>
+diff /etc/test /etc/passwd
</pre>
<br />
<!-- Generator: GNU source-highlight 3.1.9
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dgrep --regex ERROR --files /var/log/dserver/dsever</font><font color="#F3E651">.</font><font color="#ff0000">log</font>
+<pre>% dgrep --regex ERROR --files /var/log/dserver/dsever.log
</pre>
<br />
<!-- Generator: GNU source-highlight 3.1.9
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dgrep --before </font><font color="#bb00ff">10</font><font color="#ff0000"> --after </font><font color="#bb00ff">10</font><font color="#ff0000"> --max </font><font color="#bb00ff">10</font><font color="#ff0000"> --grep ERROR /var/log/dserver/dsever</font><font color="#F3E651">.</font><font color="#ff0000">log</font>
+<pre>% dgrep --before <font color="#000000">10</font> --after <font color="#000000">10</font> --max <font color="#000000">10</font> --grep ERROR /var/log/dserver/dsever.log
</pre>
<br />
<span>Use <span class='inlinecode'>--help</span> for more available options. Or go to the DTail page for more information! Hope you find DTail useful!</span><br />
@@ -331,7 +334,7 @@ http://www.gnu.org/software/src-highlite -->
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2023-10-29-kiss-static-web-photo-albums-with-photoalbum.sh.html b/gemfeed/2023-10-29-kiss-static-web-photo-albums-with-photoalbum.sh.html
index b0433fcd..9bf239df 100644
--- a/gemfeed/2023-10-29-kiss-static-web-photo-albums-with-photoalbum.sh.html
+++ b/gemfeed/2023-10-29-kiss-static-web-photo-albums-with-photoalbum.sh.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2023-10-29-kiss-static-web-photo-albums-with-photoalbum.sh.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2023-10-29-kiss-static-web-photo-albums-with-photoalbum.sh.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='kiss-static-web-photo-albums-with-photoalbumsh'>KISS static web photo albums with <span class='inlinecode'>photoalbum.sh</span></h1><br />
<br />
<span class='quote'>Published at 2023-10-29T22:25:04+02:00</span><br />
@@ -127,42 +130,42 @@ photoalbum makemake
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> photoalbum makemake</font>
-<font color="#ff0000">You may now customize </font><font color="#F3E651">.</font><font color="#ff0000">/photoalbumrc and run make</font>
+<pre>% photoalbum makemake
+You may now customize ./photoalbumrc and run make
-<font color="#F3E651">%</font><font color="#ff0000"> cat Makefile</font>
-<font color="#ff0000">all</font><font color="#F3E651">:</font>
-<font color="#ff0000"> photoalbum generate photoalbumrc</font>
-<font color="#ff0000">clean</font><font color="#F3E651">:</font>
-<font color="#ff0000"> photoalbum clean photoalbumrc</font>
+% cat Makefile
+all:
+ photoalbum generate photoalbumrc
+clean:
+ photoalbum clean photoalbumrc
-<font color="#F3E651">%</font><font color="#ff0000"> cat photoalbumrc</font>
-<i><font color="#ababab"># The title of the photoalbum</font></i>
-<font color="#ff0000">TITLE</font><font color="#F3E651">=</font><font color="#bb00ff">'A simple Photoalbum'</font>
+% cat photoalbumrc
+<i><font color="silver"># The title of the photoalbum</font></i>
+TITLE=<font color="#808080">'A simple Photoalbum'</font>
-<i><font color="#ababab"># Thumbnail height geometry</font></i>
-<font color="#ff0000">THUMBHEIGHT</font><font color="#F3E651">=</font><font color="#bb00ff">300</font>
-<i><font color="#ababab"># Normal geometry height (when viewing photo). Uncomment, to keep original size.</font></i>
-<font color="#ff0000">HEIGHT</font><font color="#F3E651">=</font><font color="#bb00ff">1200</font>
-<i><font color="#ababab"># Max previews per page.</font></i>
-<font color="#ff0000">MAXPREVIEWS</font><font color="#F3E651">=</font><font color="#bb00ff">40</font>
-<i><font color="#ababab"># Randomly shuffle all previews.</font></i>
-<i><font color="#ababab"># SHUFFLE=yes</font></i>
+<i><font color="silver"># Thumbnail height geometry</font></i>
+THUMBHEIGHT=<font color="#000000">300</font>
+<i><font color="silver"># Normal geometry height (when viewing photo). Uncomment, to keep original size.</font></i>
+HEIGHT=<font color="#000000">1200</font>
+<i><font color="silver"># Max previews per page.</font></i>
+MAXPREVIEWS=<font color="#000000">40</font>
+<i><font color="silver"># Randomly shuffle all previews.</font></i>
+<i><font color="silver"># SHUFFLE=yes</font></i>
-<i><font color="#ababab"># Diverse directories, need to be full paths, not relative!</font></i>
-<font color="#ff0000">INCOMING_DIR</font><font color="#F3E651">=</font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/incoming</font>
-<font color="#ff0000">DIST_DIR</font><font color="#F3E651">=</font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/dist</font>
-<font color="#ff0000">TEMPLATE_DIR</font><font color="#F3E651">=</font><font color="#ff0000">/usr/share/photoalbum/templates/default</font>
-<i><font color="#ababab">#TEMPLATE_DIR=/usr/share/photoalbum/templates/minimal</font></i>
+<i><font color="silver"># Diverse directories, need to be full paths, not relative!</font></i>
+INCOMING_DIR=$(pwd)/incoming
+DIST_DIR=$(pwd)/dist
+TEMPLATE_DIR=/usr/share/photoalbum/templates/default
+<i><font color="silver">#TEMPLATE_DIR=/usr/share/photoalbum/templates/minimal</font></i>
-<i><font color="#ababab"># Includes a .tar of the incoming dir in the dist, can be yes or no</font></i>
-<font color="#ff0000">TARBALL_INCLUDE</font><font color="#F3E651">=</font><font color="#ff0000">yes</font>
-<font color="#ff0000">TARBALL_SUFFIX</font><font color="#F3E651">=.</font><font color="#ff0000">tar</font>
-<font color="#ff0000">TAR_OPTS</font><font color="#F3E651">=</font><font color="#bb00ff">'-c'</font>
+<i><font color="silver"># Includes a .tar of the incoming dir in the dist, can be yes or no</font></i>
+TARBALL_INCLUDE=yes
+TARBALL_SUFFIX=.tar
+TAR_OPTS=<font color="#808080">'-c'</font>
-<i><font color="#ababab"># Some debugging options</font></i>
-<i><font color="#ababab">#set -e</font></i>
-<i><font color="#ababab">#set -x</font></i>
+<i><font color="silver"># Some debugging options</font></i>
+<i><font color="silver">#set -e</font></i>
+<i><font color="silver">#set -x</font></i>
</pre>
<br />
<span>In the case for <span class='inlinecode'>irregular.ninja</span>, I changed the defaults to the following:</span><br />
@@ -171,38 +174,38 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">--- photoalbumrc 2023-10-29 21:42:00.894202045 +0200</font>
-<font color="#ff0000">+++ photoalbumrc.new 2023-06-04 10:40:08.030994440 +0300</font>
-<font color="#ff0000">@@ -1,23 +1,24 @@</font>
-<font color="#ff0000"> # The title of the photoalbum</font>
-<font color="#ff0000">-TITLE='A simple Photoalbum'</font>
-<font color="#ff0000">+TITLE='Irregular.Ninja'</font>
+<pre>--- photoalbumrc 2023-10-29 21:42:00.894202045 +0200
++++ photoalbumrc.new 2023-06-04 10:40:08.030994440 +0300
+@@ -1,23 +1,24 @@
+ # The title of the photoalbum
+-TITLE='A simple Photoalbum'
++TITLE='Irregular.Ninja'
-<font color="#ff0000"> # Thumbnail height geometry</font>
-<font color="#ff0000">-THUMBHEIGHT=300</font>
-<font color="#ff0000">+THUMBHEIGHT=400</font>
-<font color="#ff0000"> # Normal geometry height (when viewing photo). Uncomment, to keep original size.</font>
-<font color="#ff0000">-HEIGHT=1200</font>
-<font color="#ff0000">+HEIGHT=1800</font>
-<font color="#ff0000"> # Max previews per page.</font>
-<font color="#ff0000"> MAXPREVIEWS=40</font>
-<font color="#ff0000">-# Randomly shuffle all previews.</font>
-<font color="#ff0000">-# SHUFFLE=yes</font>
-<font color="#ff0000">+# Randomly shuffle</font>
-<font color="#ff0000">+SHUFFLE=yes</font>
+ # Thumbnail height geometry
+-THUMBHEIGHT=300
++THUMBHEIGHT=400
+ # Normal geometry height (when viewing photo). Uncomment, to keep original size.
+-HEIGHT=1200
++HEIGHT=1800
+ # Max previews per page.
+ MAXPREVIEWS=40
+-# Randomly shuffle all previews.
+-# SHUFFLE=yes
++# Randomly shuffle
++SHUFFLE=yes
-<font color="#ff0000"> # Diverse directories, need to be full paths, not relative!</font>
-<font color="#ff0000">-INCOMING_DIR=$(pwd)/incoming</font>
-<font color="#ff0000">+INCOMING_DIR=~/Nextcloud/Photos/irregular.ninja</font>
-<font color="#ff0000"> DIST_DIR=$(pwd)/dist</font>
-<font color="#ff0000"> TEMPLATE_DIR=/usr/share/photoalbum/templates/default</font>
-<font color="#ff0000"> #TEMPLATE_DIR=/usr/share/photoalbum/templates/minimal</font>
+ # Diverse directories, need to be full paths, not relative!
+-INCOMING_DIR=$(pwd)/incoming
++INCOMING_DIR=~/Nextcloud/Photos/irregular.ninja
+ DIST_DIR=$(pwd)/dist
+ TEMPLATE_DIR=/usr/share/photoalbum/templates/default
+ #TEMPLATE_DIR=/usr/share/photoalbum/templates/minimal
-<font color="#ff0000"> # Includes a .tar of the incoming dir in the dist, can be yes or no</font>
-<font color="#ff0000">-TARBALL_INCLUDE=yes</font>
-<font color="#ff0000">+TARBALL_INCLUDE=no</font>
-<font color="#ff0000"> TARBALL_SUFFIX=.tar</font>
-<font color="#ff0000"> TAR_OPTS='-c'</font>
+ # Includes a .tar of the incoming dir in the dist, can be yes or no
+-TARBALL_INCLUDE=yes
++TARBALL_INCLUDE=no
+ TARBALL_SUFFIX=.tar
+ TAR_OPTS='-c'
</pre>
<br />
<span>So I changed the album title, adjusted some image and thumbnail dimensions, and I want all images to be randomly shuffled every time the album is generated! I also have all my photos in my Nextcloud Photo directory and don&#39;t want to copy them to the local <span class='inlinecode'>incoming</span> directory. Also, a tarball containing the whole album as a download isn&#39;t provided.</span><br />
@@ -302,7 +305,7 @@ blurs html index.html photos thumbs
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2023-11-11-mind-management-book-notes.html b/gemfeed/2023-11-11-mind-management-book-notes.html
index 6cf8305b..485ed367 100644
--- a/gemfeed/2023-11-11-mind-management-book-notes.html
+++ b/gemfeed/2023-11-11-mind-management-book-notes.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2023-11-11-mind-management-book-notes.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2023-11-11-mind-management-book-notes.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='mind-management-book-notes'>"Mind Management" book notes</h1><br />
<br />
<span class='quote'>Published at 2023-11-11T22:21:47+02:00</span><br />
@@ -139,7 +142,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2023-11-19-site-reliability-engineering-part-2.html b/gemfeed/2023-11-19-site-reliability-engineering-part-2.html
index fc50e5c6..360e7284 100644
--- a/gemfeed/2023-11-19-site-reliability-engineering-part-2.html
+++ b/gemfeed/2023-11-19-site-reliability-engineering-part-2.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2023-11-19-site-reliability-engineering-part-2.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2023-11-19-site-reliability-engineering-part-2.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='site-reliability-engineering---part-2-operational-balance'>Site Reliability Engineering - Part 2: Operational Balance</h1><br />
<br />
<span class='quote'>Published at 2023-11-19T00:18:18+03:00</span><br />
@@ -59,7 +62,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2023-12-10-bash-golf-part-3.html b/gemfeed/2023-12-10-bash-golf-part-3.html
index 47b507a4..afd2f951 100644
--- a/gemfeed/2023-12-10-bash-golf-part-3.html
+++ b/gemfeed/2023-12-10-bash-golf-part-3.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2023-12-10-bash-golf-part-3.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2023-12-10-bash-golf-part-3.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='bash-golf-part-3'>Bash Golf Part 3</h1><br />
<br />
<span class='quote'>Published at 2023-12-10T11:35:54+02:00</span><br />
@@ -52,24 +55,24 @@ jgs^^^^^^^`^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
-<font color="#7bc710">log ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">level</font><font color="#F3E651">=</font><font color="#bb00ff">"$1"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">message</font><font color="#F3E651">=</font><font color="#bb00ff">"$1"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -i </font><font color="#ff0000">pid</font><font color="#F3E651">=</font><font color="#bb00ff">"$$"</font>
+log () {
+ <b><u><font color="#000000">local</font></u></b> -r level=<font color="#808080">"$1"</font>; <b><u><font color="#000000">shift</font></u></b>
+ <b><u><font color="#000000">local</font></u></b> -r message=<font color="#808080">"$1"</font>; <b><u><font color="#000000">shift</font></u></b>
+ <b><u><font color="#000000">local</font></u></b> -i pid=<font color="#808080">"$$"</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">callee</font><font color="#F3E651">=</font><font color="#ff0000">${FUNCNAME[1]}</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">stamp</font><font color="#F3E651">=</font><font color="#ff0000">$(</font><font color="#ff0000">date </font><font color="#F3E651">+%</font><font color="#ff0000">Y</font><font color="#F3E651">%</font><font color="#ff0000">m</font><font color="#F3E651">%</font><font color="#ff0000">d-</font><font color="#F3E651">%</font><font color="#ff0000">H</font><font color="#F3E651">%</font><font color="#ff0000">M</font><font color="#F3E651">%</font><font color="#ff0000">S</font><font color="#F3E651">)</font>
+ <b><u><font color="#000000">local</font></u></b> -r callee=${FUNCNAME[1]}
+ <b><u><font color="#000000">local</font></u></b> -r stamp=$(date +%Y%m%d-%H%M%S)
-<font color="#ff0000"> echo </font><font color="#bb00ff">"$level|$stamp|$pid|$callee|$message"</font><font color="#ff0000"> </font><font color="#F3E651">&gt;&amp;</font><font color="#bb00ff">2</font>
-<font color="#ff0000">}</font>
+ echo <font color="#808080">"$level|$stamp|$pid|$callee|$message"</font> &gt;&amp;<font color="#000000">2</font>
+}
-<font color="#7bc710">at_home_friday_evening ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> log INFO </font><font color="#bb00ff">'One Peperoni Pizza, please'</font>
-<font color="#ff0000">}</font>
+at_home_friday_evening () {
+ log INFO <font color="#808080">'One Peperoni Pizza, please'</font>
+}
-<font color="#ff0000">at_home_friday_evening</font>
+at_home_friday_evening
</pre>
<br />
<span>The output is as follows:</span><br />
@@ -78,8 +81,8 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">❯ </font><font color="#F3E651">.</font><font color="#ff0000">/logexample</font><font color="#F3E651">.</font><font color="#ff0000">sh</font>
-<font color="#ff0000">INFO</font><font color="#F3E651">|</font><font color="#bb00ff">20231210</font><font color="#ff0000">-</font><font color="#bb00ff">082732</font><font color="#F3E651">|</font><font color="#bb00ff">123002</font><font color="#F3E651">|</font><font color="#ff0000">at_home_friday_evening</font><font color="#F3E651">|</font><font color="#ff0000">One Peperoni Pizza</font><font color="#F3E651">,</font><font color="#ff0000"> please</font>
+<pre>❯ ./logexample.sh
+INFO|<font color="#000000">20231210</font>-<font color="#000000">082732</font>|<font color="#000000">123002</font>|at_home_friday_evening|One Peperoni Pizza, please
</pre>
<br />
<h2 style='display: inline' id='--'><span class='inlinecode'>:(){ :|:&amp; };:</span></h2><br />
@@ -113,18 +116,18 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
-
-<font color="#7bc710">outer()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><font color="#7bc710">inner()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">'Intel inside!'</font>
-<font color="#ff0000"> }</font>
-<font color="#ff0000"> inner</font>
-<font color="#ff0000">}</font>
-
-<font color="#ff0000">inner</font>
-<font color="#ff0000">outer</font>
-<font color="#ff0000">inner</font>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
+
+outer() {
+ inner() {
+ echo <font color="#808080">'Intel inside!'</font>
+ }
+ inner
+}
+
+inner
+outer
+inner
</pre>
<br />
<span>And let&#39;s execute it:</span><br />
@@ -142,26 +145,26 @@ Intel inside!
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
-
-<font color="#7bc710">outer1()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><font color="#7bc710">inner()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">'Intel inside!'</font>
-<font color="#ff0000"> }</font>
-<font color="#ff0000"> inner</font>
-<font color="#ff0000">}</font>
-
-<font color="#7bc710">outer2()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><font color="#7bc710">inner()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">'Wintel inside!'</font>
-<font color="#ff0000"> }</font>
-<font color="#ff0000"> inner</font>
-<font color="#ff0000">}</font>
-
-<font color="#ff0000">outer1</font>
-<font color="#ff0000">inner</font>
-<font color="#ff0000">outer2</font>
-<font color="#ff0000">inner</font>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
+
+outer1() {
+ inner() {
+ echo <font color="#808080">'Intel inside!'</font>
+ }
+ inner
+}
+
+outer2() {
+ inner() {
+ echo <font color="#808080">'Wintel inside!'</font>
+ }
+ inner
+}
+
+outer1
+inner
+outer2
+inner
</pre>
<br />
<span>And let&#39;s run it:</span><br />
@@ -182,14 +185,14 @@ Wintel inside!
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
-<font color="#7bc710">some_expensive_operations()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"Doing expensive operations with '$1' from pid $$"</font>
-<font color="#ff0000">}</font>
+some_expensive_operations() {
+ echo <font color="#808080">"Doing expensive operations with '$1' from pid $$"</font>
+}
-<b><font color="#ffffff">for</font></b><font color="#ff0000"> i </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> {</font><font color="#bb00ff">0</font><font color="#F3E651">..</font><font color="#bb00ff">9</font><font color="#ff0000">}</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b><font color="#ff0000"> echo </font><font color="#ff0000">$i</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">done</font></b><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> xargs -P</font><font color="#bb00ff">10</font><font color="#ff0000"> -I{} bash -c </font><font color="#bb00ff">'some_expensive_operations "{}"'</font>
+<b><u><font color="#000000">for</font></u></b> i <b><u><font color="#000000">in</font></u></b> {<font color="#000000">0</font>..<font color="#000000">9</font>}; <b><u><font color="#000000">do</font></u></b> echo $i; <b><u><font color="#000000">done</font></u></b> \
+ | xargs -P<font color="#000000">10</font> -I{} bash -c <font color="#808080">'some_expensive_operations "{}"'</font>
</pre>
<br />
<span>We try here to run ten parallel processes; each of them should run the <span class='inlinecode'>some_expensive_operations</span> function with a different argument. The arguments are provided to <span class='inlinecode'>xargs</span> through <span class='inlinecode'>STDIN</span> one per line. When executed, we get this:</span><br />
@@ -214,15 +217,15 @@ bash: line 1: some_expensive_operations: command not found
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
-<font color="#7bc710">some_expensive_operations()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"Doing expensive operations with '$1' from pid $$"</font>
-<font color="#ff0000">}</font>
-<b><font color="#ffffff">export</font></b><font color="#ff0000"> -f some_expensive_operations</font>
+some_expensive_operations() {
+ echo <font color="#808080">"Doing expensive operations with '$1' from pid $$"</font>
+}
+<b><u><font color="#000000">export</font></u></b> -f some_expensive_operations
-<b><font color="#ffffff">for</font></b><font color="#ff0000"> i </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> {</font><font color="#bb00ff">0</font><font color="#F3E651">..</font><font color="#bb00ff">9</font><font color="#ff0000">}</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b><font color="#ff0000"> echo </font><font color="#ff0000">$i</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">done</font></b><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> xargs -P</font><font color="#bb00ff">10</font><font color="#ff0000"> -I{} bash -c </font><font color="#bb00ff">'some_expensive_operations "{}"'</font>
+<b><u><font color="#000000">for</font></u></b> i <b><u><font color="#000000">in</font></u></b> {<font color="#000000">0</font>..<font color="#000000">9</font>}; <b><u><font color="#000000">do</font></u></b> echo $i; <b><u><font color="#000000">done</font></u></b> \
+ | xargs -P<font color="#000000">10</font> -I{} bash -c <font color="#808080">'some_expensive_operations "{}"'</font>
</pre>
<br />
<span>When we run this now, we get:</span><br />
@@ -247,19 +250,19 @@ Doing expensive operations with &#39;9&#39; from pid 132840
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
-<font color="#7bc710">some_other_function()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"$1"</font>
-<font color="#ff0000">}</font>
+some_other_function() {
+ echo <font color="#808080">"$1"</font>
+}
-<font color="#7bc710">some_expensive_operations()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> some_other_function </font><font color="#bb00ff">"Doing expensive operations with '$1' from pid $$"</font>
-<font color="#ff0000">}</font>
-<b><font color="#ffffff">export</font></b><font color="#ff0000"> -f some_expensive_operations</font>
+some_expensive_operations() {
+ some_other_function <font color="#808080">"Doing expensive operations with '$1' from pid $$"</font>
+}
+<b><u><font color="#000000">export</font></u></b> -f some_expensive_operations
-<b><font color="#ffffff">for</font></b><font color="#ff0000"> i </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> {</font><font color="#bb00ff">0</font><font color="#F3E651">..</font><font color="#bb00ff">9</font><font color="#ff0000">}</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b><font color="#ff0000"> echo </font><font color="#ff0000">$i</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">done</font></b><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> xargs -P</font><font color="#bb00ff">10</font><font color="#ff0000"> -I{} bash -c </font><font color="#bb00ff">'some_expensive_operations "{}"'</font>
+<b><u><font color="#000000">for</font></u></b> i <b><u><font color="#000000">in</font></u></b> {<font color="#000000">0</font>..<font color="#000000">9</font>}; <b><u><font color="#000000">do</font></u></b> echo $i; <b><u><font color="#000000">done</font></u></b> \
+ | xargs -P<font color="#000000">10</font> -I{} bash -c <font color="#808080">'some_expensive_operations "{}"'</font>
</pre>
<br />
<span>... because <span class='inlinecode'>some_other_function</span> isn&#39;t exported! You will also need to add an <span class='inlinecode'>export -f some_other_function</span>!</span><br />
@@ -272,22 +275,22 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
-
-<font color="#7bc710">foo()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> </font><font color="#ff0000">foo</font><font color="#F3E651">=</font><font color="#ff0000">bar </font><i><font color="#ababab"># Declare local/dynamic variable</font></i>
-<font color="#ff0000"> bar</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"$foo"</font>
-<font color="#ff0000">}</font>
-
-<font color="#7bc710">bar()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"$foo"</font>
-<font color="#ff0000"> </font><font color="#ff0000">foo</font><font color="#F3E651">=</font><font color="#ff0000">baz</font>
-<font color="#ff0000">}</font>
-
-<font color="#ff0000">foo</font><font color="#F3E651">=</font><font color="#ff0000">foo </font><i><font color="#ababab"># Declare global variable</font></i>
-<font color="#ff0000">foo </font><i><font color="#ababab"># Call function foo</font></i>
-<font color="#ff0000">echo </font><font color="#bb00ff">"$foo"</font>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
+
+foo() {
+ <b><u><font color="#000000">local</font></u></b> foo=bar <i><font color="silver"># Declare local/dynamic variable</font></i>
+ bar
+ echo <font color="#808080">"$foo"</font>
+}
+
+bar() {
+ echo <font color="#808080">"$foo"</font>
+ foo=baz
+}
+
+foo=foo <i><font color="silver"># Declare global variable</font></i>
+foo <i><font color="silver"># Call function foo</font></i>
+echo <font color="#808080">"$foo"</font>
</pre>
<br />
<span>Let&#39;s pause a minute. What do you think the output would be?</span><br />
@@ -312,34 +315,34 @@ foo
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
-<b><font color="#ffffff">declare</font></b><font color="#ff0000"> -r </font><font color="#ff0000">foo</font><font color="#F3E651">=</font><font color="#ff0000">foo</font>
-<b><font color="#ffffff">declare</font></b><font color="#ff0000"> -r </font><font color="#ff0000">bar</font><font color="#F3E651">=</font><font color="#ff0000">bar</font>
+<b><u><font color="#000000">declare</font></u></b> -r foo=foo
+<b><u><font color="#000000">declare</font></u></b> -r bar=bar
-<b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#bb00ff">"$foo"</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> foo </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#bb00ff">"$bar"</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> bar </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo ok1</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
-<b><font color="#ffffff">fi</font></b>
+<b><u><font color="#000000">if</font></u></b> [ <font color="#808080">"$foo"</font> = foo ]; <b><u><font color="#000000">then</font></u></b>
+ <b><u><font color="#000000">if</font></u></b> [ <font color="#808080">"$bar"</font> = bar ]; <b><u><font color="#000000">then</font></u></b>
+ echo ok1
+ <b><u><font color="#000000">fi</font></u></b>
+<b><u><font color="#000000">fi</font></u></b>
-<b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#bb00ff">"$foo"</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> foo </font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#bb00ff">"$bar"</font><font color="#ff0000"> </font><font color="#F3E651">==</font><font color="#ff0000"> bar </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo ok2a</font>
-<b><font color="#ffffff">fi</font></b>
+<b><u><font color="#000000">if</font></u></b> [ <font color="#808080">"$foo"</font> = foo ] &amp;&amp; [ <font color="#808080">"$bar"</font> == bar ]; <b><u><font color="#000000">then</font></u></b>
+ echo ok2a
+<b><u><font color="#000000">fi</font></u></b>
-<font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#bb00ff">"$foo"</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> foo </font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#bb00ff">"$bar"</font><font color="#ff0000"> </font><font color="#F3E651">==</font><font color="#ff0000"> bar </font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> echo ok2b</font>
+[ <font color="#808080">"$foo"</font> = foo ] &amp;&amp; [ <font color="#808080">"$bar"</font> == bar ] &amp;&amp; echo ok2b
-<b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[[</font><font color="#ff0000"> </font><font color="#bb00ff">"$foo"</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> foo </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> </font><font color="#bb00ff">"$bar"</font><font color="#ff0000"> </font><font color="#F3E651">==</font><font color="#ff0000"> bar </font><font color="#F3E651">]];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo ok3a</font>
-<b><font color="#ffffff">fi</font></b>
+<b><u><font color="#000000">if</font></u></b> [[ <font color="#808080">"$foo"</font> = foo &amp;&amp; <font color="#808080">"$bar"</font> == bar ]]; <b><u><font color="#000000">then</font></u></b>
+ echo ok3a
+<b><u><font color="#000000">fi</font></u></b>
-<font color="#ff0000"> </font><font color="#F3E651">[[</font><font color="#ff0000"> </font><font color="#bb00ff">"$foo"</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> foo </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> </font><font color="#bb00ff">"$bar"</font><font color="#ff0000"> </font><font color="#F3E651">==</font><font color="#ff0000"> bar </font><font color="#F3E651">]]</font><font color="#ff0000"> </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> echo ok3b</font>
+ [[ <font color="#808080">"$foo"</font> = foo &amp;&amp; <font color="#808080">"$bar"</font> == bar ]] &amp;&amp; echo ok3b
-<b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><b><font color="#ffffff">test</font></b><font color="#ff0000"> </font><font color="#bb00ff">"$foo"</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> foo </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> </font><b><font color="#ffffff">test</font></b><font color="#ff0000"> </font><font color="#bb00ff">"$bar"</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> bar</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo ok4a</font>
-<b><font color="#ffffff">fi</font></b>
+<b><u><font color="#000000">if</font></u></b> <b><u><font color="#000000">test</font></u></b> <font color="#808080">"$foo"</font> = foo &amp;&amp; <b><u><font color="#000000">test</font></u></b> <font color="#808080">"$bar"</font> = bar; <b><u><font color="#000000">then</font></u></b>
+ echo ok4a
+<b><u><font color="#000000">fi</font></u></b>
-<b><font color="#ffffff">test</font></b><font color="#ff0000"> </font><font color="#bb00ff">"$foo"</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> foo </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> </font><b><font color="#ffffff">test</font></b><font color="#ff0000"> </font><font color="#bb00ff">"$bar"</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> bar </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> echo ok4b</font>
+<b><u><font color="#000000">test</font></u></b> <font color="#808080">"$foo"</font> = foo &amp;&amp; <b><u><font color="#000000">test</font></u></b> <font color="#808080">"$bar"</font> = bar &amp;&amp; echo ok4b
</pre>
<br />
<span>The output we get is:</span><br />
@@ -363,18 +366,18 @@ ok4b
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
-<i><font color="#ababab"># Single line comment</font></i>
+<i><font color="silver"># Single line comment</font></i>
-<i><font color="#ababab"># These are two single line</font></i>
-<i><font color="#ababab"># comments one after another</font></i>
+<i><font color="silver"># These are two single line</font></i>
+<i><font color="silver"># comments one after another</font></i>
-<font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#F3E651">&lt;&lt;</font><font color="#ff0000">COMMENT</font>
-<font color="#ff0000">This is another way a</font>
-<font color="#ff0000">multi line comment</font>
-<font color="#ff0000">could be written</font><font color="#F3E651">!</font>
-<font color="#ff0000">COMMENT</font>
+: &lt;&lt;COMMENT
+This is another way a
+multi line comment
+could be written!
+COMMENT
</pre>
<br />
<span>I will not demonstrate the execution of this script, as it won&#39;t print anything! It&#39;s obviously not the most pretty way of commenting on your code, but it could sometimes be handy!</span><br />
@@ -387,11 +390,11 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
-<font color="#ff0000">echo foo</font>
-<font color="#ff0000">echo echo baz </font><font color="#F3E651">&gt;&gt;</font><font color="#ff0000"> </font><font color="#ff0000">$0</font>
-<font color="#ff0000">echo bar</font>
+echo foo
+echo echo baz &gt;&gt; $0
+echo bar
</pre>
<br />
<span>When it is run, it will do:</span><br />
@@ -424,7 +427,7 @@ echo baz
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2024-01-09-site-reliability-engineering-part-3.html b/gemfeed/2024-01-09-site-reliability-engineering-part-3.html
index 04c490e9..8862c371 100644
--- a/gemfeed/2024-01-09-site-reliability-engineering-part-3.html
+++ b/gemfeed/2024-01-09-site-reliability-engineering-part-3.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2024-01-09-site-reliability-engineering-part-3.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2024-01-09-site-reliability-engineering-part-3.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='site-reliability-engineering---part-3-on-call-culture'>Site Reliability Engineering - Part 3: On-Call Culture</h1><br />
<br />
<span class='quote'>Published at 2024-01-09T18:35:48+02:00</span><br />
@@ -73,7 +76,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.html b/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.html
index 72dfdfac..78dbbd63 100644
--- a/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.html
+++ b/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='one-reason-why-i-love-openbsd'>One reason why I love OpenBSD</h1><br />
<br />
<span class='quote'>Published at 2024-01-13T22:55:33+02:00</span><br />
@@ -36,8 +39,8 @@ SSFISHKISSFISHKISSFISHKISSFISHKIS SFIS
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">$ doas installboot sd0 </font><i><font color="#ababab"># Update the bootloader (not for every upgrade required)</font></i>
-<font color="#ff0000">$ doas sysupgrade </font><i><font color="#ababab"># Update all binaries (including Kernel)</font></i>
+<pre>$ doas installboot sd0 <i><font color="silver"># Update the bootloader (not for every upgrade required)</font></i>
+$ doas sysupgrade <i><font color="silver"># Update all binaries (including Kernel)</font></i>
</pre>
<br />
<span><span class='inlinecode'>sysupgrade</span> downloaded and upgraded to the next release and rebooted the system. After the reboot, I run:</span><br />
@@ -46,9 +49,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">$ doas sysmerge </font><i><font color="#ababab"># Update system configuration files</font></i>
-<font color="#ff0000">$ doas pkg_add -u </font><i><font color="#ababab"># Update all packages</font></i>
-<font color="#ff0000">$ doas reboot </font><i><font color="#ababab"># Just in case, reboot one more time</font></i>
+<pre>$ doas sysmerge <i><font color="silver"># Update system configuration files</font></i>
+$ doas pkg_add -u <i><font color="silver"># Update all packages</font></i>
+$ doas reboot <i><font color="silver"># Just in case, reboot one more time</font></i>
</pre>
<br />
<span>That&#39;s it! Took me around 5 minutes in total! No issues, only these few comands, only 5 minutes! It just works! No problems, no conflicts, no tons (actually none) config file merge conflicts.</span><br />
@@ -77,7 +80,7 @@ http://www.gnu.org/software/src-highlite -->
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2024-02-04-from-babylon5.buetow.org-to-.cloud.html b/gemfeed/2024-02-04-from-babylon5.buetow.org-to-.cloud.html
index de587117..0524c87d 100644
--- a/gemfeed/2024-02-04-from-babylon5.buetow.org-to-.cloud.html
+++ b/gemfeed/2024-02-04-from-babylon5.buetow.org-to-.cloud.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2024-02-04-from-babylon5.buetow.org-to-.cloud.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2024-02-04-from-babylon5.buetow.org-to-.cloud.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='from-babylon5buetoworg-to-buetowcloud'>From <span class='inlinecode'>babylon5.buetow.org</span> to <span class='inlinecode'>*.buetow.cloud</span></h1><br />
<br />
<span class='quote'>Published at 2024-02-04T00:50:50+02:00</span><br />
@@ -194,7 +197,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2024-03-03-a-fine-fyne-android-app-for-quickly-logging-ideas-programmed-in-golang.html b/gemfeed/2024-03-03-a-fine-fyne-android-app-for-quickly-logging-ideas-programmed-in-golang.html
index 359f19a6..a9f1cae7 100644
--- a/gemfeed/2024-03-03-a-fine-fyne-android-app-for-quickly-logging-ideas-programmed-in-golang.html
+++ b/gemfeed/2024-03-03-a-fine-fyne-android-app-for-quickly-logging-ideas-programmed-in-golang.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2024-03-03-a-fine-fyne-android-app-for-quickly-logging-ideas-programmed-in-golang.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2024-03-03-a-fine-fyne-android-app-for-quickly-logging-ideas-programmed-in-golang.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='a-fine-fyne-android-app-for-quickly-logging-ideas-programmed-in-go'>A fine Fyne Android app for quickly logging ideas programmed in Go</h1><br />
<br />
<span class='quote'>Published at 2024-03-03T00:07:21+02:00</span><br />
@@ -69,7 +72,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.html b/gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.html
index 7f59200c..0c17ce74 100644
--- a/gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.html
+++ b/gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='kiss-high-availability-with-openbsd'>KISS high-availability with OpenBSD</h1><br />
<br />
<span class='quote'>Published at 2024-03-30T22:12:56+02:00</span><br />
@@ -95,38 +98,38 @@ _____|_:_:_| (o)-(o) |_:_:_|--&#39;`-. ,--. ksh under-water (((\&#39;/
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/bin/ksh</font></i>
+<pre><i><font color="silver">#!/bin/ksh</font></i>
-<font color="#ff0000">ZONES_DIR</font><font color="#F3E651">=</font><font color="#ff0000">/var/nsd/zones/master</font><font color="#F3E651">/</font>
-<font color="#ff0000">DEFAULT_MASTER</font><font color="#F3E651">=</font><font color="#ff0000">fishfinger</font><font color="#F3E651">.</font><font color="#ff0000">buetow</font><font color="#F3E651">.</font><font color="#ff0000">org</font>
-<font color="#ff0000">DEFAULT_STANDBY</font><font color="#F3E651">=</font><font color="#ff0000">blowfish</font><font color="#F3E651">.</font><font color="#ff0000">buetow</font><font color="#F3E651">.</font><font color="#ff0000">org</font>
+ZONES_DIR=/var/nsd/zones/master/
+DEFAULT_MASTER=fishfinger.buetow.org
+DEFAULT_STANDBY=blowfish.buetow.org
-<font color="#7bc710">determine_master_and_standby ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> </font><font color="#ff0000">master</font><font color="#F3E651">=</font><font color="#ff0000">$DEFAULT_MASTER</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> </font><font color="#ff0000">standby</font><font color="#F3E651">=</font><font color="#ff0000">$DEFAULT_STANDBY</font>
+determine_master_and_standby () {
+ <b><u><font color="#000000">local</font></u></b> master=$DEFAULT_MASTER
+ <b><u><font color="#000000">local</font></u></b> standby=$DEFAULT_STANDBY
-<font color="#ff0000"> </font><font color="#F3E651">.</font>
-<font color="#ff0000"> </font><font color="#F3E651">.</font>
-<font color="#ff0000"> </font><font color="#F3E651">.</font>
-<font color="#ff0000"> </font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -i </font><font color="#ff0000">health_ok</font><font color="#F3E651">=</font><font color="#bb00ff">1</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">!</font><font color="#ff0000"> ftp -</font><font color="#bb00ff">4</font><font color="#ff0000"> -o - https</font><font color="#F3E651">://</font><font color="#ff0000">$master</font><font color="#ff0000">/index</font><font color="#F3E651">.</font><font color="#ff0000">txt </font><font color="#F3E651">|</font><font color="#ff0000"> grep -q </font><font color="#bb00ff">"Welcome to $master"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"https://$master/index.txt IPv4 health check failed"</font>
-<font color="#ff0000"> </font><font color="#ff0000">health_ok</font><font color="#F3E651">=</font><font color="#bb00ff">0</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">elif</font></b><font color="#ff0000"> </font><font color="#F3E651">!</font><font color="#ff0000"> ftp -</font><font color="#bb00ff">6</font><font color="#ff0000"> -o - https</font><font color="#F3E651">://</font><font color="#ff0000">$master</font><font color="#ff0000">/index</font><font color="#F3E651">.</font><font color="#ff0000">txt </font><font color="#F3E651">|</font><font color="#ff0000"> grep -q </font><font color="#bb00ff">"Welcome to $master"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"https://$master/index.txt IPv6 health check failed"</font>
-<font color="#ff0000"> </font><font color="#ff0000">health_ok</font><font color="#F3E651">=</font><font color="#bb00ff">0</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#ff0000">$health_ok</font><font color="#ff0000"> -eq </font><font color="#bb00ff">0</font><font color="#ff0000"> </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> </font><font color="#ff0000">tmp</font><font color="#F3E651">=</font><font color="#ff0000">$master</font>
-<font color="#ff0000"> </font><font color="#ff0000">master</font><font color="#F3E651">=</font><font color="#ff0000">$standby</font>
-<font color="#ff0000"> </font><font color="#ff0000">standby</font><font color="#F3E651">=</font><font color="#ff0000">$tmp</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
+ .
+ .
+ .
+
+ <b><u><font color="#000000">local</font></u></b> -i health_ok=<font color="#000000">1</font>
+ <b><u><font color="#000000">if</font></u></b> ! ftp -<font color="#000000">4</font> -o - https://$master/index.txt | grep -q <font color="#808080">"Welcome to $master"</font>; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"https://$master/index.txt IPv4 health check failed"</font>
+ health_ok=<font color="#000000">0</font>
+ <b><u><font color="#000000">elif</font></u></b> ! ftp -<font color="#000000">6</font> -o - https://$master/index.txt | grep -q <font color="#808080">"Welcome to $master"</font>; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"https://$master/index.txt IPv6 health check failed"</font>
+ health_ok=<font color="#000000">0</font>
+ <b><u><font color="#000000">fi</font></u></b>
+ <b><u><font color="#000000">if</font></u></b> [ $health_ok -eq <font color="#000000">0</font> ]; <b><u><font color="#000000">then</font></u></b>
+ <b><u><font color="#000000">local</font></u></b> tmp=$master
+ master=$standby
+ standby=$tmp
+ <b><u><font color="#000000">fi</font></u></b>
-<font color="#ff0000"> </font><font color="#F3E651">.</font>
-<font color="#ff0000"> </font><font color="#F3E651">.</font>
-<font color="#ff0000"> </font><font color="#F3E651">.</font>
-<font color="#ff0000">}</font>
+ .
+ .
+ .
+}
</pre>
<br />
<span>The failover scripts looks for the <span class='inlinecode'> ; Enable failover</span> string in the DNS zone files and swaps the <span class='inlinecode'>A</span> and <span class='inlinecode'>AAAA</span> records of the DNS entries accordingly:</span><br />
@@ -135,42 +138,42 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">fishfinger$ grep failover /var/nsd/zones/master/foo</font><font color="#F3E651">.</font><font color="#ff0000">zone</font><font color="#F3E651">.</font><font color="#ff0000">zone</font>
-<font color="#ff0000"> </font><font color="#bb00ff">300</font><font color="#ff0000"> IN A </font><font color="#bb00ff">46.23</font><font color="#F3E651">.</font><font color="#bb00ff">94.99</font><font color="#ff0000"> </font><font color="#F3E651">;</font><font color="#ff0000"> Enable failover</font>
-<font color="#ff0000"> </font><font color="#bb00ff">300</font><font color="#ff0000"> IN AAAA 2a03</font><font color="#F3E651">:</font><font color="#bb00ff">6000</font><font color="#F3E651">:</font><font color="#ff0000">6f67</font><font color="#F3E651">:</font><font color="#bb00ff">624</font><font color="#F3E651">::</font><font color="#bb00ff">99</font><font color="#ff0000"> </font><font color="#F3E651">;</font><font color="#ff0000"> Enable failover</font>
-<font color="#ff0000">www </font><font color="#bb00ff">300</font><font color="#ff0000"> IN A </font><font color="#bb00ff">46.23</font><font color="#F3E651">.</font><font color="#bb00ff">94.99</font><font color="#ff0000"> </font><font color="#F3E651">;</font><font color="#ff0000"> Enable failover</font>
-<font color="#ff0000">www </font><font color="#bb00ff">300</font><font color="#ff0000"> IN AAAA 2a03</font><font color="#F3E651">:</font><font color="#bb00ff">6000</font><font color="#F3E651">:</font><font color="#ff0000">6f67</font><font color="#F3E651">:</font><font color="#bb00ff">624</font><font color="#F3E651">::</font><font color="#bb00ff">99</font><font color="#ff0000"> </font><font color="#F3E651">;</font><font color="#ff0000"> Enable failover</font>
-<font color="#ff0000">standby </font><font color="#bb00ff">300</font><font color="#ff0000"> IN A </font><font color="#bb00ff">23.88</font><font color="#F3E651">.</font><font color="#bb00ff">35.144</font><font color="#ff0000"> </font><font color="#F3E651">;</font><font color="#ff0000"> Enable failover</font>
-<font color="#ff0000">standby </font><font color="#bb00ff">300</font><font color="#ff0000"> IN AAAA 2a01</font><font color="#F3E651">:</font><font color="#ff0000">4f8</font><font color="#F3E651">:</font><font color="#ff0000">c17</font><font color="#F3E651">:</font><font color="#ff0000">20f1</font><font color="#F3E651">::</font><font color="#bb00ff">42</font><font color="#ff0000"> </font><font color="#F3E651">;</font><font color="#ff0000"> Enable failover</font>
+<pre>fishfinger$ grep failover /var/nsd/zones/master/foo.zone.zone
+ <font color="#000000">300</font> IN A <font color="#000000">46.23</font>.<font color="#000000">94.99</font> ; Enable failover
+ <font color="#000000">300</font> IN AAAA 2a03:<font color="#000000">6000</font>:6f67:<font color="#000000">624</font>::<font color="#000000">99</font> ; Enable failover
+www <font color="#000000">300</font> IN A <font color="#000000">46.23</font>.<font color="#000000">94.99</font> ; Enable failover
+www <font color="#000000">300</font> IN AAAA 2a03:<font color="#000000">6000</font>:6f67:<font color="#000000">624</font>::<font color="#000000">99</font> ; Enable failover
+standby <font color="#000000">300</font> IN A <font color="#000000">23.88</font>.<font color="#000000">35.144</font> ; Enable failover
+standby <font color="#000000">300</font> IN AAAA 2a01:4f8:c17:20f1::<font color="#000000">42</font> ; Enable failover
</pre>
<br />
<!-- Generator: GNU source-highlight 3.1.9
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#7bc710">transform ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> sed -E </font><font color="#bb00ff">'</font>
-<font color="#bb00ff"> /IN A .*; Enable failover/ {</font>
-<font color="#bb00ff"> /^standby/! {</font>
-<font color="#bb00ff"> s/^(.*) 300 IN A (.*) ; (.*)/</font><font color="#ffffff">\1</font><font color="#bb00ff"> 300 IN A '</font><font color="#ff0000">$(</font><font color="#ff0000">cat /var/nsd/run/master_a</font><font color="#F3E651">)</font><font color="#bb00ff">' ; </font><font color="#ffffff">\3</font><font color="#bb00ff">/;</font>
-<font color="#bb00ff"> }</font>
-<font color="#bb00ff"> /^standby/ {</font>
-<font color="#bb00ff"> s/^(.*) 300 IN A (.*) ; (.*)/</font><font color="#ffffff">\1</font><font color="#bb00ff"> 300 IN A '</font><font color="#ff0000">$(</font><font color="#ff0000">cat /var/nsd/run/standby_a</font><font color="#F3E651">)</font><font color="#bb00ff">' ; </font><font color="#ffffff">\3</font><font color="#bb00ff">/;</font>
-<font color="#bb00ff"> }</font>
-<font color="#bb00ff"> }</font>
-<font color="#bb00ff"> /IN AAAA .*; Enable failover/ {</font>
-<font color="#bb00ff"> /^standby/! {</font>
-<font color="#bb00ff"> s/^(.*) 300 IN AAAA (.*) ; (.*)/</font><font color="#ffffff">\1</font><font color="#bb00ff"> 300 IN AAAA '</font><font color="#ff0000">$(</font><font color="#ff0000">cat /var/nsd/run/master_aaaa</font><font color="#F3E651">)</font><font color="#bb00ff">' ; </font><font color="#ffffff">\3</font><font color="#bb00ff">/;</font>
-<font color="#bb00ff"> }</font>
-<font color="#bb00ff"> /^standby/ {</font>
-<font color="#bb00ff"> s/^(.*) 300 IN AAAA (.*) ; (.*)/</font><font color="#ffffff">\1</font><font color="#bb00ff"> 300 IN AAAA '</font><font color="#ff0000">$(</font><font color="#ff0000">cat /var/nsd/run/standby_aaaa</font><font color="#F3E651">)</font><font color="#bb00ff">' ; </font><font color="#ffffff">\3</font><font color="#bb00ff">/;</font>
-<font color="#bb00ff"> }</font>
-<font color="#bb00ff"> }</font>
-<font color="#bb00ff"> / ; serial/ {</font>
-<font color="#bb00ff"> s/^( +) ([0-9]+) .*; (.*)/</font><font color="#ffffff">\1</font><font color="#bb00ff"> '</font><font color="#ff0000">$(</font><font color="#ff0000">date </font><font color="#F3E651">+%</font><font color="#ff0000">s</font><font color="#F3E651">)</font><font color="#bb00ff">' ; </font><font color="#ffffff">\3</font><font color="#bb00ff">/;</font>
-<font color="#bb00ff"> }</font>
-<font color="#bb00ff"> '</font>
-<font color="#ff0000">}</font>
+<pre>transform () {
+ sed -E <font color="#808080">'</font>
+<font color="#808080"> /IN A .*; Enable failover/ {</font>
+<font color="#808080"> /^standby/! {</font>
+<font color="#808080"> s/^(.*) 300 IN A (.*) ; (.*)/</font>\1<font color="#808080"> 300 IN A '</font>$(cat /var/nsd/run/master_a)<font color="#808080">' ; </font>\3<font color="#808080">/;</font>
+<font color="#808080"> }</font>
+<font color="#808080"> /^standby/ {</font>
+<font color="#808080"> s/^(.*) 300 IN A (.*) ; (.*)/</font>\1<font color="#808080"> 300 IN A '</font>$(cat /var/nsd/run/standby_a)<font color="#808080">' ; </font>\3<font color="#808080">/;</font>
+<font color="#808080"> }</font>
+<font color="#808080"> }</font>
+<font color="#808080"> /IN AAAA .*; Enable failover/ {</font>
+<font color="#808080"> /^standby/! {</font>
+<font color="#808080"> s/^(.*) 300 IN AAAA (.*) ; (.*)/</font>\1<font color="#808080"> 300 IN AAAA '</font>$(cat /var/nsd/run/master_aaaa)<font color="#808080">' ; </font>\3<font color="#808080">/;</font>
+<font color="#808080"> }</font>
+<font color="#808080"> /^standby/ {</font>
+<font color="#808080"> s/^(.*) 300 IN AAAA (.*) ; (.*)/</font>\1<font color="#808080"> 300 IN AAAA '</font>$(cat /var/nsd/run/standby_aaaa)<font color="#808080">' ; </font>\3<font color="#808080">/;</font>
+<font color="#808080"> }</font>
+<font color="#808080"> }</font>
+<font color="#808080"> / ; serial/ {</font>
+<font color="#808080"> s/^( +) ([0-9]+) .*; (.*)/</font>\1<font color="#808080"> '</font>$(date +%s)<font color="#808080">' ; </font>\3<font color="#808080">/;</font>
+<font color="#808080"> }</font>
+<font color="#808080"> '</font>
+}
</pre>
<br />
<span>After the failover, the script reloads <span class='inlinecode'>nsd</span> and performs a sanity check to see if DNS still works. If not, a rollback will be performed:</span><br />
@@ -179,48 +182,48 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#! Race condition !#</font></i>
-<font color="#ff0000"> </font>
-<b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> -f </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">bak </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> mv </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">bak </font><font color="#ff0000">$zone_file</font>
-<b><font color="#ffffff">fi</font></b>
+<pre><i><font color="silver">#! Race condition !#</font></i>
+
+<b><u><font color="#000000">if</font></u></b> [ -f $zone_file.bak ]; <b><u><font color="#000000">then</font></u></b>
+ mv $zone_file.bak $zone_file
+<b><u><font color="#000000">fi</font></u></b>
-<font color="#ff0000">cat </font><font color="#ff0000">$zone_file</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> transform </font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">new</font><font color="#F3E651">.</font><font color="#ff0000">tmp </font>
+cat $zone_file | transform &gt; $zone_file.new.tmp
-<font color="#ff0000">grep -v </font><font color="#bb00ff">' ; serial'</font><font color="#ff0000"> </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">new</font><font color="#F3E651">.</font><font color="#ff0000">tmp </font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">new</font><font color="#F3E651">.</font><font color="#ff0000">noserial</font><font color="#F3E651">.</font><font color="#ff0000">tmp</font>
-<font color="#ff0000">grep -v </font><font color="#bb00ff">' ; serial'</font><font color="#ff0000"> </font><font color="#ff0000">$zone_file</font><font color="#ff0000"> </font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">old</font><font color="#F3E651">.</font><font color="#ff0000">noserial</font><font color="#F3E651">.</font><font color="#ff0000">tmp</font>
+grep -v <font color="#808080">' ; serial'</font> $zone_file.new.tmp &gt; $zone_file.new.noserial.tmp
+grep -v <font color="#808080">' ; serial'</font> $zone_file &gt; $zone_file.old.noserial.tmp
-<font color="#ff0000">echo </font><font color="#bb00ff">"Has zone $zone_file changed?"</font>
-<b><font color="#ffffff">if</font></b><font color="#ff0000"> diff -u </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">old</font><font color="#F3E651">.</font><font color="#ff0000">noserial</font><font color="#F3E651">.</font><font color="#ff0000">tmp </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">new</font><font color="#F3E651">.</font><font color="#ff0000">noserial</font><font color="#F3E651">.</font><font color="#ff0000">tmp</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"The zone $zone_file hasn't changed"</font>
-<font color="#ff0000"> rm </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.*.</font><font color="#ff0000">tmp</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><font color="#bb00ff">0</font>
-<b><font color="#ffffff">fi</font></b>
+echo <font color="#808080">"Has zone $zone_file changed?"</font>
+<b><u><font color="#000000">if</font></u></b> diff -u $zone_file.old.noserial.tmp $zone_file.new.noserial.tmp; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"The zone $zone_file hasn't changed"</font>
+ rm $zone_file.*.tmp
+ <b><u><font color="#000000">return</font></u></b> <font color="#000000">0</font>
+<b><u><font color="#000000">fi</font></u></b>
-<font color="#ff0000">cp </font><font color="#ff0000">$zone_file</font><font color="#ff0000"> </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">bak</font>
-<font color="#ff0000">mv </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">new</font><font color="#F3E651">.</font><font color="#ff0000">tmp </font><font color="#ff0000">$zone_file</font>
-<font color="#ff0000">rm </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.*.</font><font color="#ff0000">tmp</font>
-<font color="#ff0000">echo </font><font color="#bb00ff">"Reloading nsd"</font>
-<font color="#ff0000">nsd-control reload</font>
+cp $zone_file $zone_file.bak
+mv $zone_file.new.tmp $zone_file
+rm $zone_file.*.tmp
+echo <font color="#808080">"Reloading nsd"</font>
+nsd-control reload
-<b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">!</font><font color="#ff0000"> zone_is_ok </font><font color="#ff0000">$zone</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"Rolling back $zone_file changes"</font>
-<font color="#ff0000"> cp </font><font color="#ff0000">$zone_file</font><font color="#ff0000"> </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">invalid</font>
-<font color="#ff0000"> mv </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">bak </font><font color="#ff0000">$zone_file</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"Reloading nsd"</font>
-<font color="#ff0000"> nsd-control reload</font>
-<font color="#ff0000"> zone_is_ok </font><font color="#ff0000">$zone</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><font color="#bb00ff">3</font>
-<b><font color="#ffffff">fi</font></b>
+<b><u><font color="#000000">if</font></u></b> ! zone_is_ok $zone; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"Rolling back $zone_file changes"</font>
+ cp $zone_file $zone_file.invalid
+ mv $zone_file.bak $zone_file
+ echo <font color="#808080">"Reloading nsd"</font>
+ nsd-control reload
+ zone_is_ok $zone
+ <b><u><font color="#000000">return</font></u></b> <font color="#000000">3</font>
+<b><u><font color="#000000">fi</font></u></b>
-<b><font color="#ffffff">for</font></b><font color="#ff0000"> cleanup </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> invalid bak</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> -f </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">$cleanup</font><font color="#ff0000"> </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> rm </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">$cleanup</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
-<b><font color="#ffffff">done</font></b>
+<b><u><font color="#000000">for</font></u></b> cleanup <b><u><font color="#000000">in</font></u></b> invalid bak; <b><u><font color="#000000">do</font></u></b>
+ <b><u><font color="#000000">if</font></u></b> [ -f $zone_file.$cleanup ]; <b><u><font color="#000000">then</font></u></b>
+ rm $zone_file.$cleanup
+ <b><u><font color="#000000">fi</font></u></b>
+<b><u><font color="#000000">done</font></u></b>
-<font color="#ff0000">echo </font><font color="#bb00ff">"Failover of zone $zone to $MASTER completed"</font>
-<b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><font color="#bb00ff">1</font>
+echo <font color="#808080">"Failover of zone $zone to $MASTER completed"</font>
+<b><u><font color="#000000">return</font></u></b> <font color="#000000">1</font>
</pre>
<br />
<span>A non-zero return code (here, 3 when a rollback and 1 when a DNS failover was performed) will cause CRON to send an E-Mail with the whole script output.</span><br />
@@ -277,13 +280,13 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab"># Weekly auto-failover for Let's Encrypt automation</font></i>
-<b><font color="#ffffff">local</font></b><font color="#ff0000"> -i -r </font><font color="#ff0000">week_of_the_year</font><font color="#F3E651">=</font><font color="#ff0000">$(</font><font color="#ff0000">date </font><font color="#F3E651">+%</font><font color="#ff0000">U</font><font color="#F3E651">)</font>
-<b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#ff0000">$(</font><font color="#F3E651">(</font><font color="#ff0000"> week_of_the_year </font><font color="#F3E651">%</font><font color="#ff0000"> </font><font color="#bb00ff">2</font><font color="#ff0000"> </font><font color="#F3E651">))</font><font color="#ff0000"> -eq </font><font color="#bb00ff">0</font><font color="#ff0000"> </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> </font><font color="#ff0000">tmp</font><font color="#F3E651">=</font><font color="#ff0000">$master</font>
-<font color="#ff0000"> </font><font color="#ff0000">master</font><font color="#F3E651">=</font><font color="#ff0000">$standby</font>
-<font color="#ff0000"> </font><font color="#ff0000">standby</font><font color="#F3E651">=</font><font color="#ff0000">$tmp</font>
-<b><font color="#ffffff">fi</font></b>
+<pre><i><font color="silver"># Weekly auto-failover for Let's Encrypt automation</font></i>
+<b><u><font color="#000000">local</font></u></b> -i -r week_of_the_year=$(date +%U)
+<b><u><font color="#000000">if</font></u></b> [ $(( week_of_the_year % <font color="#000000">2</font> )) -eq <font color="#000000">0</font> ]; <b><u><font color="#000000">then</font></u></b>
+ <b><u><font color="#000000">local</font></u></b> tmp=$master
+ master=$standby
+ standby=$tmp
+<b><u><font color="#000000">fi</font></u></b>
</pre>
<br />
<span>This way, a DNS failover is performed weekly so that the ACME automation can update the Let&#39;s Encrypt certificates (for master and standby) before they expire on each VM.</span><br />
@@ -340,7 +343,7 @@ http://www.gnu.org/software/src-highlite -->
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2024-05-01-slow-productivity-book-notes.html b/gemfeed/2024-05-01-slow-productivity-book-notes.html
index d7a7e854..fd485faf 100644
--- a/gemfeed/2024-05-01-slow-productivity-book-notes.html
+++ b/gemfeed/2024-05-01-slow-productivity-book-notes.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2024-05-01-slow-productivity-book-notes.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2024-05-01-slow-productivity-book-notes.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='slow-productivity-book-notes'>"Slow Productivity" book notes</h1><br />
<br />
<span class='quote'>Published at 2024-04-27T14:18:51+03:00</span><br />
@@ -165,7 +168,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2024-05-03-projects-i-currently-dont-have-time-for.html b/gemfeed/2024-05-03-projects-i-currently-dont-have-time-for.html
index 0d6af9d6..2dafe38a 100644
--- a/gemfeed/2024-05-03-projects-i-currently-dont-have-time-for.html
+++ b/gemfeed/2024-05-03-projects-i-currently-dont-have-time-for.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2024-05-03-projects-i-currently-dont-have-time-for.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2024-05-03-projects-i-currently-dont-have-time-for.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='projects-i-currently-don-t-have-time-for'>Projects I currently don&#39;t have time for</h1><br />
<br />
<span class='quote'>Published at 2024-05-03T16:23:03+03:00</span><br />
@@ -217,12 +220,12 @@ Art by Laura Brown
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">Cluster </font><font color="#F3E651">:</font><font color="#ff0000">UK</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#F3E651">:</font><font color="#ff0000">uk01 </font><b><font color="#ffffff">do</font></b>
-<font color="#ff0000"> Customer</font><font color="#F3E651">.</font><font color="#ff0000">C1A1</font><font color="#F3E651">.</font><font color="#ff0000">segments</font><font color="#F3E651">.</font><font color="#ff0000">volumes</font><font color="#F3E651">.</font><font color="#ff0000">each </font><b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000">volume</font><font color="#F3E651">|</font>
-<font color="#ff0000"> puts volume</font><font color="#F3E651">.</font><font color="#ff0000">usage_stats</font>
-<font color="#ff0000"> volume</font><font color="#F3E651">.</font><font color="#ff0000">move_off! </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> volume</font><font color="#F3E651">.</font><font color="#ff0000">over_subscribed?</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">end</font></b>
-<b><font color="#ffffff">end</font></b>
+<pre>Cluster :UK, :uk01 <b><u><font color="#000000">do</font></u></b>
+ Customer.C1A1.segments.volumes.each <b><u><font color="#000000">do</font></u></b> |volume|
+ puts volume.usage_stats
+ volume.move_off! <b><u><font color="#000000">if</font></u></b> volume.over_subscribed?
+ <b><u><font color="#000000">end</font></u></b>
+<b><u><font color="#000000">end</font></u></b>
</pre>
<br />
<span>I am abandoning this project because my workplace has stopped the annual pet project competition, and I have other more important projects to work on at the moment.</span><br />
@@ -324,7 +327,7 @@ http://www.gnu.org/software/src-highlite -->
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2024-06-23-terminal-multiplexing-with-tmux.html b/gemfeed/2024-06-23-terminal-multiplexing-with-tmux.html
index de746573..68052256 100644
--- a/gemfeed/2024-06-23-terminal-multiplexing-with-tmux.html
+++ b/gemfeed/2024-06-23-terminal-multiplexing-with-tmux.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2024-06-23-terminal-multiplexing-with-tmux.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2024-06-23-terminal-multiplexing-with-tmux.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='terminal-multiplexing-with-tmux'>Terminal multiplexing with <span class='inlinecode'>tmux</span></h1><br />
<br />
<span class='quote'>Published at 2024-06-23T22:41:59+03:00</span><br />
@@ -83,13 +86,13 @@ jgs `-=========-`()
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">tm</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">tl</font><font color="#F3E651">=</font><font color="#bb00ff">'tmux list-sessions'</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">tn</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#ff0000">new</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">ta</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#ff0000">attach</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">tx</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#ff0000">remote</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">ts</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#ff0000">search</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">tssh</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#ff0000">cluster_ssh</font>
+<pre><b><u><font color="#000000">alias</font></u></b> tm=tmux
+<b><u><font color="#000000">alias</font></u></b> tl=<font color="#808080">'tmux list-sessions'</font>
+<b><u><font color="#000000">alias</font></u></b> tn=tmux::new
+<b><u><font color="#000000">alias</font></u></b> ta=tmux::attach
+<b><u><font color="#000000">alias</font></u></b> tx=tmux::remote
+<b><u><font color="#000000">alias</font></u></b> ts=tmux::search
+<b><u><font color="#000000">alias</font></u></b> tssh=tmux::cluster_ssh
</pre>
<br />
<span>Note all <span class='inlinecode'>tmux::...</span>; those are custom shell functions doing certain things, and they aren&#39;t part of the Tmux distribution. But let&#39;s run through every aliases one by one. </span><br />
@@ -104,23 +107,23 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab"># Create new session and if alread exists attach to it</font></i>
-<font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#7bc710">new ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">readonly</font></b><font color="#ff0000"> </font><font color="#ff0000">session</font><font color="#F3E651">=</font><font color="#ff0000">$1</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> </font><font color="#ff0000">date</font><font color="#F3E651">=</font><font color="#ff0000">date</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> where gdate </font><font color="#F3E651">&amp;&gt;</font><font color="#ff0000">/dev/null</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> </font><font color="#ff0000">date</font><font color="#F3E651">=</font><font color="#ff0000">gdate</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
+<pre><i><font color="silver"># Create new session and if alread exists attach to it</font></i>
+tmux::new () {
+ <b><u><font color="#000000">readonly</font></u></b> session=$1
+ <b><u><font color="#000000">local</font></u></b> date=date
+ <b><u><font color="#000000">if</font></u></b> where gdate &amp;&gt;/dev/null; <b><u><font color="#000000">then</font></u></b>
+ date=gdate
+ <b><u><font color="#000000">fi</font></u></b>
-<font color="#ff0000"> tmux</font><font color="#F3E651">::</font><font color="#ff0000">cleanup_default</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> -z </font><font color="#bb00ff">"$session"</font><font color="#ff0000"> </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> tmux</font><font color="#F3E651">::</font><font color="#ff0000">new T</font><font color="#ff0000">$($date</font><font color="#ff0000"> </font><font color="#F3E651">+%</font><font color="#ff0000">s</font><font color="#F3E651">)</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">else</font></b>
-<font color="#ff0000"> tmux new-session -d -s </font><font color="#ff0000">$session</font>
-<font color="#ff0000"> tmux -</font><font color="#bb00ff">2</font><font color="#ff0000"> attach-session -t </font><font color="#ff0000">$session</font><font color="#ff0000"> </font><font color="#F3E651">||</font><font color="#ff0000"> tmux -</font><font color="#bb00ff">2</font><font color="#ff0000"> switch-client -t </font><font color="#ff0000">$session</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
-<font color="#ff0000">}</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">tn</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#ff0000">new</font>
+ tmux::cleanup_default
+ <b><u><font color="#000000">if</font></u></b> [ -z <font color="#808080">"$session"</font> ]; <b><u><font color="#000000">then</font></u></b>
+ tmux::new T$($date +%s)
+ <b><u><font color="#000000">else</font></u></b>
+ tmux new-session -d -s $session
+ tmux -<font color="#000000">2</font> attach-session -t $session || tmux -<font color="#000000">2</font> switch-client -t $session
+ <b><u><font color="#000000">fi</font></u></b>
+}
+<b><u><font color="#000000">alias</font></u></b> tn=tmux::new
</pre>
<br />
<span>There is a lot going on here. Let&#39;s have a detailed look at what it is doing. As a note, the function relies on GNU Date, so MacOS is looking for the <span class='inlinecode'>gdate</span> commands to be available. Otherwise, it will fall back to <span class='inlinecode'>date</span>. You need to install GNU Date for Mac, as it isn&#39;t installed by default there. As I use Fedora Linux on my personal Laptop and a MacBook for work, I have to make it work for both.</span><br />
@@ -135,14 +138,14 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#7bc710">cleanup_default ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> s</font>
-<font color="#ff0000"> tmux list-sessions </font><font color="#F3E651">|</font><font color="#ff0000"> grep </font><font color="#bb00ff">'^T.*: '</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> grep -F -v attached </font><font color="#F3E651">|</font>
-<font color="#ff0000"> cut -d</font><font color="#F3E651">:</font><font color="#ff0000"> -f</font><font color="#bb00ff">1</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> </font><b><font color="#ffffff">while</font></b><font color="#ff0000"> </font><b><font color="#ffffff">read</font></b><font color="#ff0000"> -r s</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"Killing $s"</font>
-<font color="#ff0000"> tmux kill-session -t </font><font color="#bb00ff">"$s"</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">done</font></b>
-<font color="#ff0000">}</font>
+<pre>tmux::cleanup_default () {
+ <b><u><font color="#000000">local</font></u></b> s
+ tmux list-sessions | grep <font color="#808080">'^T.*: '</font> | grep -F -v attached |
+ cut -d: -f<font color="#000000">1</font> | <b><u><font color="#000000">while</font></u></b> <b><u><font color="#000000">read</font></u></b> -r s; <b><u><font color="#000000">do</font></u></b>
+ echo <font color="#808080">"Killing $s"</font>
+ tmux kill-session -t <font color="#808080">"$s"</font>
+ <b><u><font color="#000000">done</font></u></b>
+}
</pre>
<br />
<span>The cleanup function kills all open Tmux sessions that haven&#39;t been renamed properly yet—but only if they aren&#39;t attached (e.g., don&#39;t run in the foreground in any terminal). Cleaning them up automatically keeps my Tmux sessions as neat and tidy as possible. </span><br />
@@ -159,16 +162,16 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#7bc710">attach ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">readonly</font></b><font color="#ff0000"> </font><font color="#ff0000">session</font><font color="#F3E651">=</font><font color="#ff0000">$1</font>
+<pre>tmux::attach () {
+ <b><u><font color="#000000">readonly</font></u></b> session=$1
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> -z </font><font color="#bb00ff">"$session"</font><font color="#ff0000"> </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> tmux attach-session </font><font color="#F3E651">||</font><font color="#ff0000"> tmux</font><font color="#F3E651">::</font><font color="#ff0000">new</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">else</font></b>
-<font color="#ff0000"> tmux attach-session -t </font><font color="#ff0000">$session</font><font color="#ff0000"> </font><font color="#F3E651">||</font><font color="#ff0000"> tmux</font><font color="#F3E651">::</font><font color="#ff0000">new </font><font color="#ff0000">$session</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
-<font color="#ff0000">}</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">ta</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#ff0000">attach</font>
+ <b><u><font color="#000000">if</font></u></b> [ -z <font color="#808080">"$session"</font> ]; <b><u><font color="#000000">then</font></u></b>
+ tmux attach-session || tmux::new
+ <b><u><font color="#000000">else</font></u></b>
+ tmux attach-session -t $session || tmux::new $session
+ <b><u><font color="#000000">fi</font></u></b>
+}
+<b><u><font color="#000000">alias</font></u></b> ta=tmux::attach
</pre>
<br />
<span>If no session is specified (as the argument of the function), it will try to attach to the first open session. If no Tmux server is running, it will create a new one with <span class='inlinecode'>tmux::new</span>. Otherwise, with a session name given as the argument, it will attach to it. If unsuccessful (e.g., the session doesn&#39;t exist), it will be created and attached to.</span><br />
@@ -181,12 +184,12 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#7bc710">remote ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">readonly</font></b><font color="#ff0000"> </font><font color="#ff0000">server</font><font color="#F3E651">=</font><font color="#ff0000">$1</font>
-<font color="#ff0000"> tmux new -s </font><font color="#ff0000">$server</font><font color="#ff0000"> </font><font color="#bb00ff">"ssh -t $server 'tmux attach-session || tmux'"</font><font color="#ff0000"> </font><font color="#F3E651">||</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> tmux attach-session -d -t </font><font color="#ff0000">$server</font>
-<font color="#ff0000">}</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">tr</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#ff0000">remote</font>
+<pre>tmux::remote () {
+ <b><u><font color="#000000">readonly</font></u></b> server=$1
+ tmux new -s $server <font color="#808080">"ssh -t $server 'tmux attach-session || tmux'"</font> || \
+ tmux attach-session -d -t $server
+}
+<b><u><font color="#000000">alias</font></u></b> tr=tmux::remote
</pre>
<br />
<h3 style='display: inline' id='change-of-the-tmux-prefix-for-better-nesting'>Change of the Tmux prefix for better nesting</h3><br />
@@ -209,15 +212,15 @@ set-option -g prefix C-g
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#7bc710">search ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">session</font><font color="#F3E651">=</font><font color="#ff0000">$(</font><font color="#ff0000">tmux list-sessions </font><font color="#F3E651">|</font><font color="#ff0000"> fzf </font><font color="#F3E651">|</font><font color="#ff0000"> cut -d</font><font color="#F3E651">:</font><font color="#ff0000"> -f</font><font color="#bb00ff">1</font><font color="#F3E651">)</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> -z </font><font color="#bb00ff">"$TMUX"</font><font color="#ff0000"> </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> tmux attach-session -t </font><font color="#ff0000">$session</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">else</font></b>
-<font color="#ff0000"> tmux switch -t </font><font color="#ff0000">$session</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
-<font color="#ff0000">}</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">ts</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#ff0000">search</font>
+<pre>tmux::search () {
+ <b><u><font color="#000000">local</font></u></b> -r session=$(tmux list-sessions | fzf | cut -d: -f<font color="#000000">1</font>)
+ <b><u><font color="#000000">if</font></u></b> [ -z <font color="#808080">"$TMUX"</font> ]; <b><u><font color="#000000">then</font></u></b>
+ tmux attach-session -t $session
+ <b><u><font color="#000000">else</font></u></b>
+ tmux switch -t $session
+ <b><u><font color="#000000">fi</font></u></b>
+}
+<b><u><font color="#000000">alias</font></u></b> ts=tmux::search
</pre>
<br />
<span>All it does is list all currently open sessions in <span class='inlinecode'>fzf</span>, where one of them can be searched and selected through fuzzy find, and then either switch (if already inside a session) to the other session or attach to the other session (if not yet in Tmux).</span><br />
@@ -244,15 +247,15 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#7bc710">cluster_ssh ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> -f </font><font color="#bb00ff">"$1"</font><font color="#ff0000"> </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> tmux</font><font color="#F3E651">::</font><font color="#ff0000">tssh_from_file </font><font color="#ff0000">$1</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
+<pre>tmux::cluster_ssh () {
+ <b><u><font color="#000000">if</font></u></b> [ -f <font color="#808080">"$1"</font> ]; <b><u><font color="#000000">then</font></u></b>
+ tmux::tssh_from_file $1
+ <b><u><font color="#000000">return</font></u></b>
+ <b><u><font color="#000000">fi</font></u></b>
-<font color="#ff0000"> tmux</font><font color="#F3E651">::</font><font color="#ff0000">tssh_from_argument </font><font color="#ff0000">$@</font>
-<font color="#ff0000">}</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">tssh</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#ff0000">cluster_ssh</font>
+ tmux::tssh_from_argument $@
+}
+<b><u><font color="#000000">alias</font></u></b> tssh=tmux::cluster_ssh
</pre>
<br />
<span>This function is just a wrapper around the more complex <span class='inlinecode'>tmux::tssh_from_file</span> and <span class='inlinecode'>tmux::tssh_from_argument</span> functions, as you have learned already. Most of the magic happens there.</span><br />
@@ -265,23 +268,23 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#7bc710">tssh_from_argument ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">session</font><font color="#F3E651">=</font><font color="#ff0000">$1</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> </font><font color="#ff0000">first_server</font><font color="#F3E651">=</font><font color="#ff0000">$1</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b>
+<pre>tmux::tssh_from_argument () {
+ <b><u><font color="#000000">local</font></u></b> -r session=$1; <b><u><font color="#000000">shift</font></u></b>
+ <b><u><font color="#000000">local</font></u></b> first_server=$1; <b><u><font color="#000000">shift</font></u></b>
-<font color="#ff0000"> tmux new-session -d -s </font><font color="#ff0000">$session</font><font color="#ff0000"> </font><font color="#bb00ff">"ssh -t $first_server"</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">!</font><font color="#ff0000"> tmux list-session </font><font color="#F3E651">|</font><font color="#ff0000"> grep </font><font color="#bb00ff">"^$session:"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"Could not create session $session"</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><font color="#bb00ff">2</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
+ tmux new-session -d -s $session <font color="#808080">"ssh -t $first_server"</font>
+ <b><u><font color="#000000">if</font></u></b> ! tmux list-session | grep <font color="#808080">"^$session:"</font>; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"Could not create session $session"</font>
+ <b><u><font color="#000000">return</font></u></b> <font color="#000000">2</font>
+ <b><u><font color="#000000">fi</font></u></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> server </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> </font><font color="#bb00ff">"${@[@]}"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b>
-<font color="#ff0000"> tmux split-window -t </font><font color="#ff0000">$session</font><font color="#ff0000"> </font><font color="#bb00ff">"tmux select-layout tiled; ssh -t $server"</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">done</font></b>
+ <b><u><font color="#000000">for</font></u></b> server <b><u><font color="#000000">in</font></u></b> <font color="#808080">"${@[@]}"</font>; <b><u><font color="#000000">do</font></u></b>
+ tmux split-window -t $session <font color="#808080">"tmux select-layout tiled; ssh -t $server"</font>
+ <b><u><font color="#000000">done</font></u></b>
-<font color="#ff0000"> tmux setw -t </font><font color="#ff0000">$session</font><font color="#ff0000"> synchronize-panes on</font>
-<font color="#ff0000"> tmux -</font><font color="#bb00ff">2</font><font color="#ff0000"> attach-session -t </font><font color="#ff0000">$session</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> tmux -</font><font color="#bb00ff">2</font><font color="#ff0000"> switch-client -t </font><font color="#ff0000">$session</font>
-<font color="#ff0000">}</font>
+ tmux setw -t $session synchronize-panes on
+ tmux -<font color="#000000">2</font> attach-session -t $session | tmux -<font color="#000000">2</font> switch-client -t $session
+}
</pre>
<br />
<span>It expects at least two arguments. The first argument is the session name to create for the clustered SSH session. All other arguments are server hostnames or FQDNs to which to connect. The first one is used to make the initial session. All remaining ones are added to that session with <span class='inlinecode'>tmux split-window -t $session...</span>. At the end, we enable synchronized panes by default, so whenever you type, the commands will be sent to every SSH connection, thus allowing the neat ClusterSSH feature to run commands on multiple servers simultaneously. Once done, we attach (or switch, if already in Tmux) to it.</span><br />
@@ -301,12 +304,12 @@ bind-key P setw synchronize-panes on
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#7bc710">tssh_from_file ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">serverlist</font><font color="#F3E651">=</font><font color="#ff0000">$1</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">session</font><font color="#F3E651">=</font><font color="#ff0000">$(</font><font color="#ff0000">basename </font><font color="#ff0000">$serverlist</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> cut -d</font><font color="#F3E651">.</font><font color="#ff0000"> -f</font><font color="#bb00ff">1</font><font color="#F3E651">)</font>
+<pre>tmux::tssh_from_file () {
+ <b><u><font color="#000000">local</font></u></b> -r serverlist=$1; <b><u><font color="#000000">shift</font></u></b>
+ <b><u><font color="#000000">local</font></u></b> -r session=$(basename $serverlist | cut -d. -f<font color="#000000">1</font>)
-<font color="#ff0000"> tmux</font><font color="#F3E651">::</font><font color="#ff0000">tssh_from_argument </font><font color="#ff0000">$session</font><font color="#ff0000"> </font><font color="#ff0000">$(</font><font color="#ff0000">awk </font><font color="#bb00ff">'{ print $1} '</font><font color="#ff0000"> </font><font color="#ff0000">$serverlist</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> sed </font><font color="#bb00ff">'s/.lan./.lan/g'</font><font color="#F3E651">)</font>
-<font color="#ff0000">}</font>
+ tmux::tssh_from_argument $session $(awk <font color="#808080">'{ print $1} '</font> $serverlist | sed <font color="#808080">'s/.lan./.lan/g'</font>)
+}
</pre>
<br />
<h3 style='display: inline' id='tssh-examples'><span class='inlinecode'>tssh</span> examples</h3><br />
@@ -431,7 +434,7 @@ bind-key r source-file ~/.config/tmux/tmux.conf \; display-message "tmux.conf re
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2024-07-05-random-weird-things.html b/gemfeed/2024-07-05-random-weird-things.html
index 429d5f69..1ea722f1 100644
--- a/gemfeed/2024-07-05-random-weird-things.html
+++ b/gemfeed/2024-07-05-random-weird-things.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2024-07-05-random-weird-things.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2024-07-05-random-weird-things.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='random-weird-things'>Random Weird Things</h1><br />
<br />
<span class='quote'>Published at 2024-07-05T10:59:59+03:00</span><br />
@@ -47,38 +50,38 @@ WHOA!! ( o.o )
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> traceroute bad</font><font color="#F3E651">.</font><font color="#ff0000">horse</font>
-<font color="#ff0000">traceroute to bad</font><font color="#F3E651">.</font><font color="#ff0000">horse </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.157</font><font color="#F3E651">),</font><font color="#ff0000"> </font><font color="#bb00ff">30</font><font color="#ff0000"> hops max</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">60</font><font color="#ff0000"> byte packets</font>
-<font color="#ff0000"> </font><font color="#bb00ff">1</font><font color="#ff0000"> dsldevice</font><font color="#F3E651">.</font><font color="#ff0000">lan </font><font color="#F3E651">(</font><font color="#bb00ff">192.168</font><font color="#F3E651">.</font><font color="#bb00ff">1.1</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">5.712</font><font color="#ff0000"> ms </font><font color="#bb00ff">5.800</font><font color="#ff0000"> ms </font><font color="#bb00ff">6.466</font><font color="#ff0000"> ms</font>
-<font color="#ff0000"> </font><font color="#bb00ff">2</font><font color="#ff0000"> </font><font color="#bb00ff">87</font><font color="#ff0000">-</font><font color="#bb00ff">243</font><font color="#ff0000">-</font><font color="#bb00ff">116</font><font color="#ff0000">-</font><font color="#bb00ff">2</font><font color="#F3E651">.</font><font color="#ff0000">ip</font><font color="#F3E651">.</font><font color="#ff0000">btc-net</font><font color="#F3E651">.</font><b><font color="#ffffff">bg</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#bb00ff">87.243</font><font color="#F3E651">.</font><font color="#bb00ff">116.2</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">8.017</font><font color="#ff0000"> ms </font><font color="#bb00ff">7.506</font><font color="#ff0000"> ms </font><font color="#bb00ff">8.432</font><font color="#ff0000"> ms</font>
-<font color="#ff0000"> </font><font color="#bb00ff">3</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
-<font color="#ff0000"> </font><font color="#bb00ff">4</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
-<font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#ff0000"> xe-</font><font color="#bb00ff">1</font><font color="#ff0000">-</font><font color="#bb00ff">2</font><font color="#ff0000">-</font><font color="#bb00ff">0</font><font color="#F3E651">.</font><font color="#ff0000">mpr1</font><font color="#F3E651">.</font><font color="#ff0000">fra4</font><font color="#F3E651">.</font><font color="#ff0000">de</font><font color="#F3E651">.</font><font color="#ff0000">above</font><font color="#F3E651">.</font><font color="#ff0000">net </font><font color="#F3E651">(</font><font color="#bb00ff">80.81</font><font color="#F3E651">.</font><font color="#bb00ff">194.26</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">39.952</font><font color="#ff0000"> ms </font><font color="#bb00ff">40.155</font><font color="#ff0000"> ms </font><font color="#bb00ff">40.139</font><font color="#ff0000"> ms</font>
-<font color="#ff0000"> </font><font color="#bb00ff">6</font><font color="#ff0000"> ae12</font><font color="#F3E651">.</font><font color="#ff0000">cs1</font><font color="#F3E651">.</font><font color="#ff0000">fra6</font><font color="#F3E651">.</font><font color="#ff0000">de</font><font color="#F3E651">.</font><font color="#ff0000">eth</font><font color="#F3E651">.</font><font color="#ff0000">zayo</font><font color="#F3E651">.</font><font color="#ff0000">com </font><font color="#F3E651">(</font><font color="#bb00ff">64.125</font><font color="#F3E651">.</font><font color="#bb00ff">26.172</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">128.014</font><font color="#ff0000"> ms </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
-<font color="#ff0000"> </font><font color="#bb00ff">7</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
-<font color="#ff0000"> </font><font color="#bb00ff">8</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
-<font color="#ff0000"> </font><font color="#bb00ff">9</font><font color="#ff0000"> ae10</font><font color="#F3E651">.</font><font color="#ff0000">cs1</font><font color="#F3E651">.</font><font color="#ff0000">lhr15</font><font color="#F3E651">.</font><font color="#ff0000">uk</font><font color="#F3E651">.</font><font color="#ff0000">eth</font><font color="#F3E651">.</font><font color="#ff0000">zayo</font><font color="#F3E651">.</font><font color="#ff0000">com </font><font color="#F3E651">(</font><font color="#bb00ff">64.125</font><font color="#F3E651">.</font><font color="#bb00ff">29.17</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">120.625</font><font color="#ff0000"> ms </font><font color="#bb00ff">121.117</font><font color="#ff0000"> ms </font><font color="#bb00ff">121.050</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">10</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
-<font color="#bb00ff">11</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
-<font color="#bb00ff">12</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
-<font color="#bb00ff">13</font><font color="#ff0000"> ae5</font><font color="#F3E651">.</font><font color="#ff0000">mpr1</font><font color="#F3E651">.</font><font color="#ff0000">tor3</font><font color="#F3E651">.</font><font color="#ff0000">ca</font><font color="#F3E651">.</font><font color="#ff0000">zip</font><font color="#F3E651">.</font><font color="#ff0000">zayo</font><font color="#F3E651">.</font><font color="#ff0000">com </font><font color="#F3E651">(</font><font color="#bb00ff">64.125</font><font color="#F3E651">.</font><font color="#bb00ff">23.118</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">192.605</font><font color="#ff0000"> ms </font><font color="#bb00ff">205.741</font><font color="#ff0000"> ms </font><font color="#bb00ff">203.607</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">14</font><font color="#ff0000"> </font><font color="#bb00ff">64.124</font><font color="#F3E651">.</font><font color="#bb00ff">217.237</font><font color="#F3E651">.</font><font color="#ff0000">IDIA-</font><font color="#bb00ff">265104</font><font color="#ff0000">-ZYO</font><font color="#F3E651">.</font><font color="#ff0000">zip</font><font color="#F3E651">.</font><font color="#ff0000">zayo</font><font color="#F3E651">.</font><font color="#ff0000">com </font><font color="#F3E651">(</font><font color="#bb00ff">64.124</font><font color="#F3E651">.</font><font color="#bb00ff">217.237</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">204.673</font><font color="#ff0000"> ms </font><font color="#bb00ff">134.674</font><font color="#ff0000"> ms </font><font color="#bb00ff">131.442</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">15</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
-<font color="#bb00ff">16</font><font color="#ff0000"> </font><font color="#bb00ff">67.223</font><font color="#F3E651">.</font><font color="#bb00ff">96.90</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#bb00ff">67.223</font><font color="#F3E651">.</font><font color="#bb00ff">96.90</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">128.245</font><font color="#ff0000"> ms </font><font color="#bb00ff">127.844</font><font color="#ff0000"> ms </font><font color="#bb00ff">127.843</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">17</font><font color="#ff0000"> bad</font><font color="#F3E651">.</font><font color="#ff0000">horse </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.130</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">128.194</font><font color="#ff0000"> ms </font><font color="#bb00ff">122.854</font><font color="#ff0000"> ms </font><font color="#bb00ff">121.786</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">18</font><font color="#ff0000"> bad</font><font color="#F3E651">.</font><font color="#ff0000">horse </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.131</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">128.831</font><font color="#ff0000"> ms </font><font color="#bb00ff">128.341</font><font color="#ff0000"> ms </font><font color="#bb00ff">186.559</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">19</font><font color="#ff0000"> bad</font><font color="#F3E651">.</font><font color="#ff0000">horse </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.132</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">185.716</font><font color="#ff0000"> ms </font><font color="#bb00ff">180.121</font><font color="#ff0000"> ms </font><font color="#bb00ff">180.042</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">20</font><font color="#ff0000"> bad</font><font color="#F3E651">.</font><font color="#ff0000">horse </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.133</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">203.170</font><font color="#ff0000"> ms </font><font color="#bb00ff">203.076</font><font color="#ff0000"> ms </font><font color="#bb00ff">203.168</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">21</font><font color="#ff0000"> he</font><font color="#F3E651">.</font><font color="#ff0000">rides</font><font color="#F3E651">.</font><font color="#ff0000">across</font><font color="#F3E651">.</font><font color="#ff0000">the</font><font color="#F3E651">.</font><font color="#ff0000">nation </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.134</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">203.115</font><font color="#ff0000"> ms </font><font color="#bb00ff">141.830</font><font color="#ff0000"> ms </font><font color="#bb00ff">141.799</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">22</font><font color="#ff0000"> the</font><font color="#F3E651">.</font><font color="#ff0000">thoroughbred</font><font color="#F3E651">.</font><font color="#ff0000">of</font><font color="#F3E651">.</font><font color="#ff0000">sin </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.135</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">147.965</font><font color="#ff0000"> ms </font><font color="#bb00ff">148.230</font><font color="#ff0000"> ms </font><font color="#bb00ff">170.478</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">23</font><font color="#ff0000"> he</font><font color="#F3E651">.</font><font color="#ff0000">got</font><font color="#F3E651">.</font><font color="#ff0000">the</font><font color="#F3E651">.</font><font color="#ff0000">application </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.136</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">165.161</font><font color="#ff0000"> ms </font><font color="#bb00ff">164.939</font><font color="#ff0000"> ms </font><font color="#bb00ff">159.085</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">24</font><font color="#ff0000"> that</font><font color="#F3E651">.</font><font color="#ff0000">you</font><font color="#F3E651">.</font><font color="#ff0000">just</font><font color="#F3E651">.</font><font color="#ff0000">sent</font><font color="#F3E651">.</font><b><font color="#ffffff">in</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.137</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">162.310</font><font color="#ff0000"> ms </font><font color="#bb00ff">158.569</font><font color="#ff0000"> ms </font><font color="#bb00ff">158.896</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">25</font><font color="#ff0000"> it</font><font color="#F3E651">.</font><font color="#ff0000">needs</font><font color="#F3E651">.</font><font color="#ff0000">evaluation </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.138</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">162.927</font><font color="#ff0000"> ms </font><font color="#bb00ff">163.046</font><font color="#ff0000"> ms </font><font color="#bb00ff">163.085</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">26</font><font color="#ff0000"> so</font><font color="#F3E651">.</font><b><font color="#ffffff">let</font></b><font color="#F3E651">.</font><font color="#ff0000">the</font><font color="#F3E651">.</font><font color="#ff0000">games</font><font color="#F3E651">.</font><font color="#ff0000">begin </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.139</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">233.363</font><font color="#ff0000"> ms </font><font color="#bb00ff">233.545</font><font color="#ff0000"> ms </font><font color="#bb00ff">233.317</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">27</font><font color="#ff0000"> a</font><font color="#F3E651">.</font><font color="#ff0000">heinous</font><font color="#F3E651">.</font><font color="#ff0000">crime </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.140</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">237.745</font><font color="#ff0000"> ms </font><font color="#bb00ff">233.614</font><font color="#ff0000"> ms </font><font color="#bb00ff">233.740</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">28</font><font color="#ff0000"> a</font><font color="#F3E651">.</font><font color="#ff0000">show</font><font color="#F3E651">.</font><font color="#ff0000">of</font><font color="#F3E651">.</font><font color="#ff0000">force </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.141</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">237.974</font><font color="#ff0000"> ms </font><font color="#bb00ff">176.085</font><font color="#ff0000"> ms </font><font color="#bb00ff">175.927</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">29</font><font color="#ff0000"> a</font><font color="#F3E651">.</font><font color="#ff0000">murder</font><font color="#F3E651">.</font><font color="#ff0000">would</font><font color="#F3E651">.</font><font color="#ff0000">be</font><font color="#F3E651">.</font><font color="#ff0000">nice</font><font color="#F3E651">.</font><font color="#ff0000">of</font><font color="#F3E651">.</font><font color="#ff0000">course </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.142</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">181.838</font><font color="#ff0000"> ms </font><font color="#bb00ff">181.858</font><font color="#ff0000"> ms </font><font color="#bb00ff">182.059</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">30</font><font color="#ff0000"> bad</font><font color="#F3E651">.</font><font color="#ff0000">horse </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.143</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">187.731</font><font color="#ff0000"> ms </font><font color="#bb00ff">187.416</font><font color="#ff0000"> ms </font><font color="#bb00ff">187.532</font><font color="#ff0000"> ms</font>
+<pre>% traceroute bad.horse
+traceroute to bad.horse (<font color="#000000">162.252</font>.<font color="#000000">205.157</font>), <font color="#000000">30</font> hops max, <font color="#000000">60</font> byte packets
+ <font color="#000000">1</font> dsldevice.lan (<font color="#000000">192.168</font>.<font color="#000000">1.1</font>) <font color="#000000">5.712</font> ms <font color="#000000">5.800</font> ms <font color="#000000">6.466</font> ms
+ <font color="#000000">2</font> <font color="#000000">87</font>-<font color="#000000">243</font>-<font color="#000000">116</font>-<font color="#000000">2</font>.ip.btc-net.<b><u><font color="#000000">bg</font></u></b> (<font color="#000000">87.243</font>.<font color="#000000">116.2</font>) <font color="#000000">8.017</font> ms <font color="#000000">7.506</font> ms <font color="#000000">8.432</font> ms
+ <font color="#000000">3</font> * * *
+ <font color="#000000">4</font> * * *
+ <font color="#000000">5</font> xe-<font color="#000000">1</font>-<font color="#000000">2</font>-<font color="#000000">0</font>.mpr1.fra4.de.above.net (<font color="#000000">80.81</font>.<font color="#000000">194.26</font>) <font color="#000000">39.952</font> ms <font color="#000000">40.155</font> ms <font color="#000000">40.139</font> ms
+ <font color="#000000">6</font> ae12.cs1.fra6.de.eth.zayo.com (<font color="#000000">64.125</font>.<font color="#000000">26.172</font>) <font color="#000000">128.014</font> ms * *
+ <font color="#000000">7</font> * * *
+ <font color="#000000">8</font> * * *
+ <font color="#000000">9</font> ae10.cs1.lhr15.uk.eth.zayo.com (<font color="#000000">64.125</font>.<font color="#000000">29.17</font>) <font color="#000000">120.625</font> ms <font color="#000000">121.117</font> ms <font color="#000000">121.050</font> ms
+<font color="#000000">10</font> * * *
+<font color="#000000">11</font> * * *
+<font color="#000000">12</font> * * *
+<font color="#000000">13</font> ae5.mpr1.tor3.ca.zip.zayo.com (<font color="#000000">64.125</font>.<font color="#000000">23.118</font>) <font color="#000000">192.605</font> ms <font color="#000000">205.741</font> ms <font color="#000000">203.607</font> ms
+<font color="#000000">14</font> <font color="#000000">64.124</font>.<font color="#000000">217.237</font>.IDIA-<font color="#000000">265104</font>-ZYO.zip.zayo.com (<font color="#000000">64.124</font>.<font color="#000000">217.237</font>) <font color="#000000">204.673</font> ms <font color="#000000">134.674</font> ms <font color="#000000">131.442</font> ms
+<font color="#000000">15</font> * * *
+<font color="#000000">16</font> <font color="#000000">67.223</font>.<font color="#000000">96.90</font> (<font color="#000000">67.223</font>.<font color="#000000">96.90</font>) <font color="#000000">128.245</font> ms <font color="#000000">127.844</font> ms <font color="#000000">127.843</font> ms
+<font color="#000000">17</font> bad.horse (<font color="#000000">162.252</font>.<font color="#000000">205.130</font>) <font color="#000000">128.194</font> ms <font color="#000000">122.854</font> ms <font color="#000000">121.786</font> ms
+<font color="#000000">18</font> bad.horse (<font color="#000000">162.252</font>.<font color="#000000">205.131</font>) <font color="#000000">128.831</font> ms <font color="#000000">128.341</font> ms <font color="#000000">186.559</font> ms
+<font color="#000000">19</font> bad.horse (<font color="#000000">162.252</font>.<font color="#000000">205.132</font>) <font color="#000000">185.716</font> ms <font color="#000000">180.121</font> ms <font color="#000000">180.042</font> ms
+<font color="#000000">20</font> bad.horse (<font color="#000000">162.252</font>.<font color="#000000">205.133</font>) <font color="#000000">203.170</font> ms <font color="#000000">203.076</font> ms <font color="#000000">203.168</font> ms
+<font color="#000000">21</font> he.rides.across.the.nation (<font color="#000000">162.252</font>.<font color="#000000">205.134</font>) <font color="#000000">203.115</font> ms <font color="#000000">141.830</font> ms <font color="#000000">141.799</font> ms
+<font color="#000000">22</font> the.thoroughbred.of.sin (<font color="#000000">162.252</font>.<font color="#000000">205.135</font>) <font color="#000000">147.965</font> ms <font color="#000000">148.230</font> ms <font color="#000000">170.478</font> ms
+<font color="#000000">23</font> he.got.the.application (<font color="#000000">162.252</font>.<font color="#000000">205.136</font>) <font color="#000000">165.161</font> ms <font color="#000000">164.939</font> ms <font color="#000000">159.085</font> ms
+<font color="#000000">24</font> that.you.just.sent.<b><u><font color="#000000">in</font></u></b> (<font color="#000000">162.252</font>.<font color="#000000">205.137</font>) <font color="#000000">162.310</font> ms <font color="#000000">158.569</font> ms <font color="#000000">158.896</font> ms
+<font color="#000000">25</font> it.needs.evaluation (<font color="#000000">162.252</font>.<font color="#000000">205.138</font>) <font color="#000000">162.927</font> ms <font color="#000000">163.046</font> ms <font color="#000000">163.085</font> ms
+<font color="#000000">26</font> so.<b><u><font color="#000000">let</font></u></b>.the.games.begin (<font color="#000000">162.252</font>.<font color="#000000">205.139</font>) <font color="#000000">233.363</font> ms <font color="#000000">233.545</font> ms <font color="#000000">233.317</font> ms
+<font color="#000000">27</font> a.heinous.crime (<font color="#000000">162.252</font>.<font color="#000000">205.140</font>) <font color="#000000">237.745</font> ms <font color="#000000">233.614</font> ms <font color="#000000">233.740</font> ms
+<font color="#000000">28</font> a.show.of.force (<font color="#000000">162.252</font>.<font color="#000000">205.141</font>) <font color="#000000">237.974</font> ms <font color="#000000">176.085</font> ms <font color="#000000">175.927</font> ms
+<font color="#000000">29</font> a.murder.would.be.nice.of.course (<font color="#000000">162.252</font>.<font color="#000000">205.142</font>) <font color="#000000">181.838</font> ms <font color="#000000">181.858</font> ms <font color="#000000">182.059</font> ms
+<font color="#000000">30</font> bad.horse (<font color="#000000">162.252</font>.<font color="#000000">205.143</font>) <font color="#000000">187.731</font> ms <font color="#000000">187.416</font> ms <font color="#000000">187.532</font> ms
</pre>
<br />
<h2 style='display: inline' id='2-ascii-cinema'>2. ASCII cinema</h2><br />
@@ -106,20 +109,20 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ababab">#include</font><font color="#ff0000"> </font><font color="#bb00ff">&lt;stdio.h&gt;</font>
+<pre><b><u><font color="#000000">#include</font></u></b> <font color="#808080">&lt;stdio.h&gt;</font>
-<b><font color="#F35E1E">int</font></b><font color="#ff0000"> </font><font color="#7bc710">main</font><font color="#F3E651">(</font><b><font color="#F35E1E">void</font></b><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><b><font color="#F35E1E">int</font></b><font color="#ff0000"> array</font><font color="#F3E651">[</font><font color="#bb00ff">5</font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> </font><font color="#bb00ff">1</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">2</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">3</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">4</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#F3E651">;</font>
+<b><font color="#000000">int</font></b> main(<b><font color="#000000">void</font></b>) {
+ <b><font color="#000000">int</font></b> array[<font color="#000000">5</font>] = { <font color="#000000">1</font>, <font color="#000000">2</font>, <font color="#000000">3</font>, <font color="#000000">4</font>, <font color="#000000">5</font> };
-<font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">int</font></b><font color="#ff0000"> i </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#F3E651">;</font><font color="#ff0000"> i </font><font color="#F3E651">&lt;</font><font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#F3E651">;</font><font color="#ff0000"> i</font><font color="#F3E651">++)</font>
-<font color="#ff0000"> </font><font color="#7bc710">printf</font><font color="#F3E651">(</font><font color="#bb00ff">"%d</font><font color="#ffffff">\n</font><font color="#bb00ff">"</font><font color="#F3E651">,</font><font color="#ff0000"> array</font><font color="#F3E651">[</font><font color="#ff0000">i</font><font color="#F3E651">]);</font>
+ <b><u><font color="#000000">for</font></u></b> (<b><font color="#000000">int</font></b> i = <font color="#000000">0</font>; i &lt; <font color="#000000">5</font>; i++)
+ printf(<font color="#808080">"%d</font>\n<font color="#808080">"</font>, array[i]);
-<font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">int</font></b><font color="#ff0000"> i </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#F3E651">;</font><font color="#ff0000"> i </font><font color="#F3E651">&lt;</font><font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#F3E651">;</font><font color="#ff0000"> i</font><font color="#F3E651">++)</font>
-<font color="#ff0000"> </font><font color="#7bc710">printf</font><font color="#F3E651">(</font><font color="#bb00ff">"%d</font><font color="#ffffff">\n</font><font color="#bb00ff">"</font><font color="#F3E651">,</font><font color="#ff0000"> i</font><font color="#F3E651">[</font><font color="#ff0000">array</font><font color="#F3E651">]);</font>
+ <b><u><font color="#000000">for</font></u></b> (<b><font color="#000000">int</font></b> i = <font color="#000000">0</font>; i &lt; <font color="#000000">5</font>; i++)
+ printf(<font color="#808080">"%d</font>\n<font color="#808080">"</font>, i[array]);
-<font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">int</font></b><font color="#ff0000"> i </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#F3E651">;</font><font color="#ff0000"> i </font><font color="#F3E651">&lt;</font><font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#F3E651">;</font><font color="#ff0000"> i</font><font color="#F3E651">++)</font>
-<font color="#ff0000"> </font><font color="#7bc710">printf</font><font color="#F3E651">(</font><font color="#bb00ff">"%d</font><font color="#ffffff">\n</font><font color="#bb00ff">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#F3E651">*(</font><font color="#ff0000">i </font><font color="#F3E651">+</font><font color="#ff0000"> array</font><font color="#F3E651">));</font>
-<font color="#F3E651">}</font>
+ <b><u><font color="#000000">for</font></u></b> (<b><font color="#000000">int</font></b> i = <font color="#000000">0</font>; i &lt; <font color="#000000">5</font>; i++)
+ printf(<font color="#808080">"%d</font>\n<font color="#808080">"</font>, *(i + array));
+}
</pre>
<br />
<h3 style='display: inline' id='5-variables-with-prefix-'>5. Variables with prefix <span class='inlinecode'>$</span></h3><br />
@@ -130,20 +133,20 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ababab">#include</font><font color="#ff0000"> </font><font color="#bb00ff">&lt;stdio.h&gt;</font>
+<pre><b><u><font color="#000000">#include</font></u></b> <font color="#808080">&lt;stdio.h&gt;</font>
-<b><font color="#F35E1E">int</font></b><font color="#ff0000"> </font><font color="#7bc710">main</font><font color="#F3E651">(</font><b><font color="#F35E1E">void</font></b><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><b><font color="#F35E1E">int</font></b><font color="#ff0000"> $array</font><font color="#F3E651">[</font><font color="#bb00ff">5</font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> </font><font color="#bb00ff">1</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">2</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">3</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">4</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#F3E651">;</font>
+<b><font color="#000000">int</font></b> main(<b><font color="#000000">void</font></b>) {
+ <b><font color="#000000">int</font></b> $array[<font color="#000000">5</font>] = { <font color="#000000">1</font>, <font color="#000000">2</font>, <font color="#000000">3</font>, <font color="#000000">4</font>, <font color="#000000">5</font> };
-<font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">int</font></b><font color="#ff0000"> $i </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#F3E651">;</font><font color="#ff0000"> $i </font><font color="#F3E651">&lt;</font><font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#F3E651">;</font><font color="#ff0000"> $i</font><font color="#F3E651">++)</font>
-<font color="#ff0000"> </font><font color="#7bc710">printf</font><font color="#F3E651">(</font><font color="#bb00ff">"%d</font><font color="#ffffff">\n</font><font color="#bb00ff">"</font><font color="#F3E651">,</font><font color="#ff0000"> $array</font><font color="#F3E651">[</font><font color="#ff0000">$i</font><font color="#F3E651">]);</font>
+ <b><u><font color="#000000">for</font></u></b> (<b><font color="#000000">int</font></b> $i = <font color="#000000">0</font>; $i &lt; <font color="#000000">5</font>; $i++)
+ printf(<font color="#808080">"%d</font>\n<font color="#808080">"</font>, $array[$i]);
-<font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">int</font></b><font color="#ff0000"> $i </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#F3E651">;</font><font color="#ff0000"> $i </font><font color="#F3E651">&lt;</font><font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#F3E651">;</font><font color="#ff0000"> $i</font><font color="#F3E651">++)</font>
-<font color="#ff0000"> </font><font color="#7bc710">printf</font><font color="#F3E651">(</font><font color="#bb00ff">"%d</font><font color="#ffffff">\n</font><font color="#bb00ff">"</font><font color="#F3E651">,</font><font color="#ff0000"> $i</font><font color="#F3E651">[</font><font color="#ff0000">$array</font><font color="#F3E651">]);</font>
+ <b><u><font color="#000000">for</font></u></b> (<b><font color="#000000">int</font></b> $i = <font color="#000000">0</font>; $i &lt; <font color="#000000">5</font>; $i++)
+ printf(<font color="#808080">"%d</font>\n<font color="#808080">"</font>, $i[$array]);
-<font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">int</font></b><font color="#ff0000"> $i </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#F3E651">;</font><font color="#ff0000"> $i </font><font color="#F3E651">&lt;</font><font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#F3E651">;</font><font color="#ff0000"> $i</font><font color="#F3E651">++)</font>
-<font color="#ff0000"> </font><font color="#7bc710">printf</font><font color="#F3E651">(</font><font color="#bb00ff">"%d</font><font color="#ffffff">\n</font><font color="#bb00ff">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#F3E651">*(</font><font color="#ff0000">$i </font><font color="#F3E651">+</font><font color="#ff0000"> $array</font><font color="#F3E651">));</font>
-<font color="#F3E651">}</font>
+ <b><u><font color="#000000">for</font></u></b> (<b><font color="#000000">int</font></b> $i = <font color="#000000">0</font>; $i &lt; <font color="#000000">5</font>; $i++)
+ printf(<font color="#808080">"%d</font>\n<font color="#808080">"</font>, *($i + $array));
+}
</pre>
<br />
<h2 style='display: inline' id='6-object-oriented-shell-scripts-using-ksh'>6. Object oriented shell scripts using <span class='inlinecode'>ksh</span></h2><br />
@@ -154,40 +157,40 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/ksh93</font></i>
-<font color="#ff0000"> </font>
-<b><font color="#ffffff">typeset</font></b><font color="#ff0000"> -T </font><font color="#ff0000">Point_t</font><font color="#F3E651">=(</font>
-<font color="#ff0000"> integer -h </font><font color="#bb00ff">'x coordinate'</font><font color="#ff0000"> </font><font color="#ff0000">x</font><font color="#F3E651">=</font><font color="#bb00ff">0</font>
-<font color="#ff0000"> integer -h </font><font color="#bb00ff">'y coordinate'</font><font color="#ff0000"> </font><font color="#ff0000">y</font><font color="#F3E651">=</font><font color="#bb00ff">0</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">typeset</font></b><font color="#ff0000"> -h </font><font color="#bb00ff">'point color'</font><font color="#ff0000"> </font><font color="#ff0000">color</font><font color="#F3E651">=</font><font color="#bb00ff">"red"</font>
+<pre><i><font color="silver">#!/usr/bin/ksh93</font></i>
+
+<b><u><font color="#000000">typeset</font></u></b> -T Point_t=(
+ integer -h <font color="#808080">'x coordinate'</font> x=<font color="#000000">0</font>
+ integer -h <font color="#808080">'y coordinate'</font> y=<font color="#000000">0</font>
+ <b><u><font color="#000000">typeset</font></u></b> -h <font color="#808080">'point color'</font> color=<font color="#808080">"red"</font>
-<font color="#ff0000"> </font><font color="#7bc710">function getcolor </font><font color="#ff0000">{</font>
-<font color="#ff0000"> print -r </font><font color="#ff0000">${_.color}</font>
-<font color="#ff0000"> }</font>
+ function getcolor {
+ print -r ${_.color}
+ }
-<font color="#ff0000"> </font><font color="#7bc710">function setcolor </font><font color="#ff0000">{</font>
-<font color="#ff0000"> _</font><font color="#F3E651">.</font><font color="#ff0000">color</font><font color="#F3E651">=</font><font color="#ff0000">$1</font>
-<font color="#ff0000"> }</font>
+ function setcolor {
+ _.color=$1
+ }
-<font color="#ff0000"> </font><font color="#7bc710">setxy()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> _</font><font color="#F3E651">.</font><font color="#ff0000">x</font><font color="#F3E651">=</font><font color="#ff0000">$1</font><font color="#F3E651">;</font><font color="#ff0000"> _</font><font color="#F3E651">.</font><font color="#ff0000">y</font><font color="#F3E651">=</font><font color="#ff0000">$2</font>
-<font color="#ff0000"> }</font>
+ setxy() {
+ _.x=$1; _.y=$2
+ }
-<font color="#ff0000"> </font><font color="#7bc710">getxy()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> print -r </font><font color="#bb00ff">"(${_.x},${_.y})"</font>
-<font color="#ff0000"> }</font>
-<font color="#F3E651">)</font>
-<font color="#ff0000"> </font>
-<font color="#ff0000">Point_t point</font>
-<font color="#ff0000"> </font>
-<font color="#ff0000">echo </font><font color="#bb00ff">"Initial coordinates are (${point.x},${point.y}). Color is ${point.color}"</font>
-<font color="#ff0000"> </font>
-<font color="#ff0000">point</font><font color="#F3E651">.</font><font color="#ff0000">setxy </font><font color="#bb00ff">5</font><font color="#ff0000"> </font><font color="#bb00ff">6</font>
-<font color="#ff0000">point</font><font color="#F3E651">.</font><font color="#ff0000">setcolor blue</font>
-<font color="#ff0000"> </font>
-<font color="#ff0000">echo </font><font color="#bb00ff">"New coordinates are ${point.getxy}. Color is ${point.getcolor}"</font>
-<font color="#ff0000"> </font>
-<b><font color="#ffffff">exit</font></b><font color="#ff0000"> </font><font color="#bb00ff">0</font>
+ getxy() {
+ print -r <font color="#808080">"(${_.x},${_.y})"</font>
+ }
+)
+
+Point_t point
+
+echo <font color="#808080">"Initial coordinates are (${point.x},${point.y}). Color is ${point.color}"</font>
+
+point.setxy <font color="#000000">5</font> <font color="#000000">6</font>
+point.setcolor blue
+
+echo <font color="#808080">"New coordinates are ${point.getxy}. Color is ${point.getcolor}"</font>
+
+<b><u><font color="#000000">exit</font></u></b> <font color="#000000">0</font>
</pre>
<br />
<a class='textlink' href='https://blog.fpmurphy.com/2010/05/ksh93-using-types-to-create-object-orientated-scripts.html'>Using types to create object oriented Korn shell 93 scripts</a><br />
@@ -200,18 +203,18 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">package</font></b><font color="#ff0000"> main</font>
+<pre><b><u><font color="#000000">package</font></u></b> main
-<b><font color="#ffffff">import</font></b><font color="#ff0000"> </font><font color="#bb00ff">"fmt"</font>
+<b><u><font color="#000000">import</font></u></b> <font color="#808080">"fmt"</font>
-<b><font color="#ffffff">func</font></b><font color="#ff0000"> </font><font color="#7bc710">main</font><font color="#F3E651">()</font><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">var</font></b><font color="#ff0000"> i int</font>
-<font color="#ff0000"> f </font><font color="#F3E651">:=</font><font color="#ff0000"> </font><b><font color="#ffffff">func</font></b><font color="#F3E651">()</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000">int </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><font color="#F3E651">&amp;</font><font color="#ff0000">i</font>
-<font color="#ff0000"> </font><font color="#F3E651">}</font>
-<font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#7bc710">f</font><font color="#F3E651">()++</font>
-<font color="#ff0000"> fmt</font><font color="#F3E651">.</font><font color="#7bc710">Println</font><font color="#F3E651">(</font><font color="#ff0000">i</font><font color="#F3E651">)</font>
-<font color="#F3E651">}</font>
+<b><u><font color="#000000">func</font></u></b> main() {
+ <b><u><font color="#000000">var</font></u></b> i int
+ f := <b><u><font color="#000000">func</font></u></b>() *int {
+ <b><u><font color="#000000">return</font></u></b> &amp;i
+ }
+ *f()++
+ fmt.Println(i)
+}
</pre>
<br />
<a class='textlink' href='https://go.dev/play/p/sPRdyDvXefK?__s=mk8u899owb9yurl256gw'>Go playground</a><br />
@@ -373,7 +376,7 @@ r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()&lt;&gt;@,;:\\".\
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2024-07-07-the-stoic-challenge-book-notes.html b/gemfeed/2024-07-07-the-stoic-challenge-book-notes.html
index 1853b829..4e3c510e 100644
--- a/gemfeed/2024-07-07-the-stoic-challenge-book-notes.html
+++ b/gemfeed/2024-07-07-the-stoic-challenge-book-notes.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2024-07-07-the-stoic-challenge-book-notes.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2024-07-07-the-stoic-challenge-book-notes.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='the-stoic-challenge-book-notes'>"The Stoic Challenge" book notes</h1><br />
<br />
<span class='quote'>Published at 2024-07-07T12:46:55+03:00</span><br />
@@ -30,11 +33,11 @@
<br />
<ul>
<li><a href='#the-stoic-challenge-book-notes'>"The Stoic Challenge" book notes</a></li>
-<li>⇢ <a href='#got-sets-you-up-for-a-challenge'>Got sets you up for a challenge</a></li>
+<li>⇢ <a href='#god-sets-you-up-for-a-challenge'>God sets you up for a challenge</a></li>
<li>⇢ <a href='#negative-visualization'>Negative visualization</a></li>
<li>⇢ <a href='#oh-nice-trick-you-stoic-god--'>Oh, nice trick, you stoic "god"! ;-)</a></li>
</ul><br />
-<h2 style='display: inline' id='got-sets-you-up-for-a-challenge'>Got sets you up for a challenge</h2><br />
+<h2 style='display: inline' id='god-sets-you-up-for-a-challenge'>God sets you up for a challenge</h2><br />
<br />
<span>Gods set you up for a challenge to see how resilient you are. Is getting angry worth the price? If you stay calm then you can find the optimal workaround for the obstacle. Stay calm even with big setbacks. Practice minimalism of negative emotions.</span><br />
<br />
@@ -81,7 +84,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2024-08-05-typing-127.1-words-per-minute.html b/gemfeed/2024-08-05-typing-127.1-words-per-minute.html
index f33bf6c3..65e36711 100644
--- a/gemfeed/2024-08-05-typing-127.1-words-per-minute.html
+++ b/gemfeed/2024-08-05-typing-127.1-words-per-minute.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2024-08-05-typing-127.1-words-per-minute.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2024-08-05-typing-127.1-words-per-minute.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='typing-1271-words-per-minute-100wpm-average'>Typing <span class='inlinecode'>127.1</span> words per minute (<span class='inlinecode'>&gt;100wpm average</span>)</h1><br />
<br />
<span class='quote'>Published at 2024-08-05T17:39:30+03:00</span><br />
@@ -243,7 +246,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2024-09-07-projects-i-support.html b/gemfeed/2024-09-07-projects-i-support.html
index ffd77a9d..9debc622 100644
--- a/gemfeed/2024-09-07-projects-i-support.html
+++ b/gemfeed/2024-09-07-projects-i-support.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2024-09-07-projects-i-support.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2024-09-07-projects-i-support.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='projects-i-financially-support'>Projects I financially support</h1><br />
<br />
<span class='quote'>Published at 2024-09-07T16:04:19+03:00</span><br />
@@ -116,7 +119,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2024-09-07-site-reliability-engineering-part-4.html b/gemfeed/2024-09-07-site-reliability-engineering-part-4.html
index e4c749a5..aa29420e 100644
--- a/gemfeed/2024-09-07-site-reliability-engineering-part-4.html
+++ b/gemfeed/2024-09-07-site-reliability-engineering-part-4.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2024-09-07-site-reliability-engineering-part-4.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2024-09-07-site-reliability-engineering-part-4.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='site-reliability-engineering---part-4-onboarding-for-on-call-engineers'>Site Reliability Engineering - Part 4: Onboarding for On-Call Engineers</h1><br />
<br />
<span class='quote'>Published at 2024-09-07T16:27:58+03:00</span><br />
@@ -82,7 +85,7 @@ jgs \\`_..---.Y.---.._`//
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2024-10-02-gemtexter-3.0.0-lets-gemtext-again-4.html b/gemfeed/2024-10-02-gemtexter-3.0.0-lets-gemtext-again-4.html
index f317b466..f40018ba 100644
--- a/gemfeed/2024-10-02-gemtexter-3.0.0-lets-gemtext-again-4.html
+++ b/gemfeed/2024-10-02-gemtexter-3.0.0-lets-gemtext-again-4.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2024-10-02-gemtexter-3.0.0-lets-gemtext-again-4.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2024-10-02-gemtexter-3.0.0-lets-gemtext-again-4.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='gemtexter-300---let-s-gemtext-again'>Gemtexter 3.0.0 - Let&#39;s Gemtext again⁴</h1><br />
<br />
<span class='quote'>Published at 2024-10-01T21:46:26+03:00</span><br />
@@ -73,7 +76,7 @@
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">declare</font></b><font color="#ff0000"> -xr </font><font color="#ff0000">HTML_THEME_DIR</font><font color="#F3E651">=.</font><font color="#ff0000">/extras/html/themes/simple</font>
+<pre><b><u><font color="#000000">declare</font></u></b> -xr HTML_THEME_DIR=./extras/html/themes/simple
</pre>
<br />
<span>To customize the theme or create your own, simply copy the theme directory and modify it as needed. This makes it also much easier to switch between layouts.</span><br />
@@ -99,7 +102,7 @@ http://www.gnu.org/software/src-highlite -->
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2024-10-24-staff-engineer-book-notes.html b/gemfeed/2024-10-24-staff-engineer-book-notes.html
index f8758090..b17bd25a 100644
--- a/gemfeed/2024-10-24-staff-engineer-book-notes.html
+++ b/gemfeed/2024-10-24-staff-engineer-book-notes.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2024-10-24-staff-engineer-book-notes.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2024-10-24-staff-engineer-book-notes.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='staff-engineer-book-notes'>"Staff Engineer" book notes</h1><br />
<br />
<span class='quote'>Published at 2024-10-24T20:57:44+03:00</span><br />
@@ -146,7 +149,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2024-11-17-f3s-kubernetes-with-freebsd-part-1.html b/gemfeed/2024-11-17-f3s-kubernetes-with-freebsd-part-1.html
index 83d1c489..3620410f 100644
--- a/gemfeed/2024-11-17-f3s-kubernetes-with-freebsd-part-1.html
+++ b/gemfeed/2024-11-17-f3s-kubernetes-with-freebsd-part-1.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2024-11-17-f3s-kubernetes-with-freebsd-part-1.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2024-11-17-f3s-kubernetes-with-freebsd-part-1.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='f3s-kubernetes-with-freebsd---part-1-setting-the-stage'>f3s: Kubernetes with FreeBSD - Part 1: Setting the stage</h1><br />
<br />
<span class='quote'>Published at 2024-11-16T23:20:14+02:00</span><br />
@@ -183,7 +186,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2024-12-03-f3s-kubernetes-with-freebsd-part-2.html b/gemfeed/2024-12-03-f3s-kubernetes-with-freebsd-part-2.html
index 8b5f1979..6ea80fc3 100644
--- a/gemfeed/2024-12-03-f3s-kubernetes-with-freebsd-part-2.html
+++ b/gemfeed/2024-12-03-f3s-kubernetes-with-freebsd-part-2.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2024-12-03-f3s-kubernetes-with-freebsd-part-2.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2024-12-03-f3s-kubernetes-with-freebsd-part-2.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='f3s-kubernetes-with-freebsd---part-2-hardware-and-base-installation'>f3s: Kubernetes with FreeBSD - Part 2: Hardware and base installation</h1><br />
<br />
<span class='quote'>Published at 2024-12-02T23:48:21+02:00</span><br />
@@ -117,9 +120,9 @@
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">[</font><font color="#ff0000">paul@earth</font><font color="#F3E651">]~</font><font color="#ff0000">/Downloads</font><font color="#F3E651">%</font><font color="#ff0000"> sudo dd </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#F3E651">=</font><font color="#ff0000">FreeBSD-</font><font color="#bb00ff">14.1</font><font color="#ff0000">-RELEASE-amd</font><font color="#bb00ff">64</font><font color="#ff0000">-bootonly</font><font color="#F3E651">.</font><font color="#ff0000">iso </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#ff0000">of</font><font color="#F3E651">=</font><font color="#ff0000">/dev/sda </font><font color="#ff0000">conv</font><font color="#F3E651">=</font><font color="#ff0000">sync</font>
+<pre>[paul@earth]~/Downloads% sudo dd \
+ <b><u><font color="#000000">if</font></u></b>=FreeBSD-<font color="#000000">14.1</font>-RELEASE-amd<font color="#000000">64</font>-bootonly.iso \
+ of=/dev/sda conv=sync
</pre>
<br />
<span>Next, I plugged the Beelinks (one after another) into my monitor via HDMI (the resolution of the FreeBSD text console seems strangely stretched, as I am using the LG Dual Up monitor), connected Ethernet, an external USB keyboard, and the FreeBSD USB stick, and booted the devices up. With F7, I entered the boot menu and selected the USB stick for the FreeBSD installation.</span><br />
@@ -145,9 +148,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># freebsd-update fetch</font></i>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># freebsd-update install</font></i>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># freebsd-update reboot</font></i>
+<pre>root@f0:~ <i><font color="silver"># freebsd-update fetch</font></i>
+root@f0:~ <i><font color="silver"># freebsd-update install</font></i>
+root@f0:~ <i><font color="silver"># freebsd-update reboot</font></i>
</pre>
<br />
<span>I also added the following entries for the three FreeBSD boxes to the <span class='inlinecode'>/etc/hosts</span> file:</span><br />
@@ -155,11 +158,11 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># cat &lt;&lt;END &gt;&gt;/etc/hosts</font></i>
-<font color="#bb00ff">192.168</font><font color="#F3E651">.</font><font color="#bb00ff">1.130</font><font color="#ff0000"> f0 f0</font><font color="#F3E651">.</font><font color="#ff0000">lan f0</font><font color="#F3E651">.</font><font color="#ff0000">lan</font><font color="#F3E651">.</font><font color="#ff0000">buetow</font><font color="#F3E651">.</font><font color="#ff0000">org</font>
-<font color="#bb00ff">192.168</font><font color="#F3E651">.</font><font color="#bb00ff">1.131</font><font color="#ff0000"> f1 f1</font><font color="#F3E651">.</font><font color="#ff0000">lan f1</font><font color="#F3E651">.</font><font color="#ff0000">lan</font><font color="#F3E651">.</font><font color="#ff0000">buetow</font><font color="#F3E651">.</font><font color="#ff0000">org</font>
-<font color="#bb00ff">192.168</font><font color="#F3E651">.</font><font color="#bb00ff">1.132</font><font color="#ff0000"> f2 f2</font><font color="#F3E651">.</font><font color="#ff0000">lan f2</font><font color="#F3E651">.</font><font color="#ff0000">lan</font><font color="#F3E651">.</font><font color="#ff0000">buetow</font><font color="#F3E651">.</font><font color="#ff0000">org</font>
-<font color="#ff0000">END</font>
+<pre>root@f0:~ <i><font color="silver"># cat &lt;&lt;END &gt;&gt;/etc/hosts</font></i>
+<font color="#000000">192.168</font>.<font color="#000000">1.130</font> f0 f0.lan f0.lan.buetow.org
+<font color="#000000">192.168</font>.<font color="#000000">1.131</font> f1 f1.lan f1.lan.buetow.org
+<font color="#000000">192.168</font>.<font color="#000000">1.132</font> f2 f2.lan f2.lan.buetow.org
+END
</pre>
<br />
<h2 style='display: inline' id='after-install'>After install</h2><br />
@@ -170,7 +173,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># pkg install helix doas zfs-periodic uptimed</font></i>
+<pre>root@f0:~ <i><font color="silver"># pkg install helix doas zfs-periodic uptimed</font></i>
</pre>
<br />
<h3 style='display: inline' id='helix-editor'>Helix editor</h3><br />
@@ -187,7 +190,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># cp /usr/local/etc/doas.conf.sample /usr/local/etc/doas.conf</font></i>
+<pre>root@f0:~ <i><font color="silver"># cp /usr/local/etc/doas.conf.sample /usr/local/etc/doas.conf</font></i>
</pre>
<br />
<a class='textlink' href='https://man.openbsd.org/doas'>https://man.openbsd.org/doas</a><br />
@@ -200,24 +203,24 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc daily_zfs_snapshot_enable=YES</font></i>
-<font color="#ff0000">daily_zfs_snapshot_enable</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> YES</font>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc daily_zfs_snapshot_pools=zroot</font></i>
-<font color="#ff0000">daily_zfs_snapshot_pools</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> zroot</font>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc daily_zfs_snapshot_keep=7</font></i>
-<font color="#ff0000">daily_zfs_snapshot_keep</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#bb00ff">7</font>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc weekly_zfs_snapshot_enable=YES</font></i>
-<font color="#ff0000">weekly_zfs_snapshot_enable</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> YES</font>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc weekly_zfs_snapshot_pools=zroot</font></i>
-<font color="#ff0000">weekly_zfs_snapshot_pools</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> zroot</font>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc weekly_zfs_snapshot_keep=5</font></i>
-<font color="#ff0000">weekly_zfs_snapshot_keep</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#bb00ff">5</font>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc monthly_zfs_snapshot_enable=YES</font></i>
-<font color="#ff0000">monthly_zfs_snapshot_enable</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> YES</font>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc monthly_zfs_snapshot_pools=zroot</font></i>
-<font color="#ff0000">monthly_zfs_snapshot_pools</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> zroot</font>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc monthly_zfs_snapshot_keep=6</font></i>
-<font color="#ff0000">monthly_zfs_snapshot_keep</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">2</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#bb00ff">6</font>
+<pre>root@f0:~ <i><font color="silver"># sysrc daily_zfs_snapshot_enable=YES</font></i>
+daily_zfs_snapshot_enable: -&gt; YES
+root@f0:~ <i><font color="silver"># sysrc daily_zfs_snapshot_pools=zroot</font></i>
+daily_zfs_snapshot_pools: -&gt; zroot
+root@f0:~ <i><font color="silver"># sysrc daily_zfs_snapshot_keep=7</font></i>
+daily_zfs_snapshot_keep: -&gt; <font color="#000000">7</font>
+root@f0:~ <i><font color="silver"># sysrc weekly_zfs_snapshot_enable=YES</font></i>
+weekly_zfs_snapshot_enable: -&gt; YES
+root@f0:~ <i><font color="silver"># sysrc weekly_zfs_snapshot_pools=zroot</font></i>
+weekly_zfs_snapshot_pools: -&gt; zroot
+root@f0:~ <i><font color="silver"># sysrc weekly_zfs_snapshot_keep=5</font></i>
+weekly_zfs_snapshot_keep: -&gt; <font color="#000000">5</font>
+root@f0:~ <i><font color="silver"># sysrc monthly_zfs_snapshot_enable=YES</font></i>
+monthly_zfs_snapshot_enable: -&gt; YES
+root@f0:~ <i><font color="silver"># sysrc monthly_zfs_snapshot_pools=zroot</font></i>
+monthly_zfs_snapshot_pools: -&gt; zroot
+root@f0:~ <i><font color="silver"># sysrc monthly_zfs_snapshot_keep=6</font></i>
+monthly_zfs_snapshot_keep: <font color="#000000">2</font> -&gt; <font color="#000000">6</font>
</pre>
<br />
<a class='textlink' href='https://github.com/ross/zfs-periodic'>https://github.com/ross/zfs-periodic</a><br />
@@ -230,9 +233,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># cp /usr/local/mimecast/etc/uptimed.conf-dist \</font></i>
-<font color="#ff0000"> /usr/local/mimecast/etc/uptimed</font><font color="#F3E651">.</font><font color="#ff0000">conf </font>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># hx /usr/local/mimecast/etc/uptimed.conf</font></i>
+<pre>root@f0:~ <i><font color="silver"># cp /usr/local/mimecast/etc/uptimed.conf-dist \</font></i>
+ /usr/local/mimecast/etc/uptimed.conf
+root@f0:~ <i><font color="silver"># hx /usr/local/mimecast/etc/uptimed.conf</font></i>
</pre>
<br />
<span>In the Helix editor session, I changed <span class='inlinecode'>LOG_MAXIMUM_ENTRIES</span> to <span class='inlinecode'>0</span> to keep all uptime entries forever and not cut off at 50 (the default config). After that, I enabled and started <span class='inlinecode'>uptimed</span>:</span><br />
@@ -241,8 +244,8 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># service uptimed enable</font></i>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># service uptimed start</font></i>
+<pre>root@f0:~ <i><font color="silver"># service uptimed enable</font></i>
+root@f0:~ <i><font color="silver"># service uptimed start</font></i>
</pre>
<br />
<span>To check the current uptime stats, I can now run <span class='inlinecode'>uprecords</span>:</span><br />
@@ -251,15 +254,15 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000"> root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># uprecords</font></i>
-<font color="#ff0000"> </font><i><font color="#ababab"># Uptime | System Boot up</font></i>
-<font color="#ff0000">----------------------------</font><font color="#F3E651">+</font><font color="#ff0000">---------------------------------------------------</font>
-<font color="#ff0000">-</font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#bb00ff">1</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#ff0000"> days</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">00</font><font color="#F3E651">:</font><font color="#bb00ff">07</font><font color="#F3E651">:</font><font color="#bb00ff">34</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> FreeBSD </font><font color="#bb00ff">14.1</font><font color="#ff0000">-RELEASE Mon Dec </font><font color="#bb00ff">2</font><font color="#ff0000"> </font><font color="#bb00ff">12</font><font color="#F3E651">:</font><font color="#bb00ff">21</font><font color="#F3E651">:</font><font color="#bb00ff">44</font><font color="#ff0000"> </font><font color="#bb00ff">2024</font>
-<font color="#ff0000">----------------------------</font><font color="#F3E651">+</font><font color="#ff0000">---------------------------------------------------</font>
-<font color="#ff0000">NewRec </font><font color="#bb00ff">0</font><font color="#ff0000"> days</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">00</font><font color="#F3E651">:</font><font color="#bb00ff">07</font><font color="#F3E651">:</font><font color="#bb00ff">33</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> since Mon Dec </font><font color="#bb00ff">2</font><font color="#ff0000"> </font><font color="#bb00ff">12</font><font color="#F3E651">:</font><font color="#bb00ff">21</font><font color="#F3E651">:</font><font color="#bb00ff">44</font><font color="#ff0000"> </font><font color="#bb00ff">2024</font>
-<font color="#ff0000"> up </font><font color="#bb00ff">0</font><font color="#ff0000"> days</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">00</font><font color="#F3E651">:</font><font color="#bb00ff">07</font><font color="#F3E651">:</font><font color="#bb00ff">34</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> since Mon Dec </font><font color="#bb00ff">2</font><font color="#ff0000"> </font><font color="#bb00ff">12</font><font color="#F3E651">:</font><font color="#bb00ff">21</font><font color="#F3E651">:</font><font color="#bb00ff">44</font><font color="#ff0000"> </font><font color="#bb00ff">2024</font>
-<font color="#ff0000"> down </font><font color="#bb00ff">0</font><font color="#ff0000"> days</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">00</font><font color="#F3E651">:</font><font color="#bb00ff">00</font><font color="#F3E651">:</font><font color="#bb00ff">00</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> since Mon Dec </font><font color="#bb00ff">2</font><font color="#ff0000"> </font><font color="#bb00ff">12</font><font color="#F3E651">:</font><font color="#bb00ff">21</font><font color="#F3E651">:</font><font color="#bb00ff">44</font><font color="#ff0000"> </font><font color="#bb00ff">2024</font>
-<font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000">up </font><font color="#bb00ff">100.000</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> since Mon Dec </font><font color="#bb00ff">2</font><font color="#ff0000"> </font><font color="#bb00ff">12</font><font color="#F3E651">:</font><font color="#bb00ff">21</font><font color="#F3E651">:</font><font color="#bb00ff">44</font><font color="#ff0000"> </font><font color="#bb00ff">2024</font>
+<pre> root@f0:~ <i><font color="silver"># uprecords</font></i>
+ <i><font color="silver"># Uptime | System Boot up</font></i>
+----------------------------+---------------------------------------------------
+-&gt; <font color="#000000">1</font> <font color="#000000">0</font> days, <font color="#000000">00</font>:<font color="#000000">07</font>:<font color="#000000">34</font> | FreeBSD <font color="#000000">14.1</font>-RELEASE Mon Dec <font color="#000000">2</font> <font color="#000000">12</font>:<font color="#000000">21</font>:<font color="#000000">44</font> <font color="#000000">2024</font>
+----------------------------+---------------------------------------------------
+NewRec <font color="#000000">0</font> days, <font color="#000000">00</font>:<font color="#000000">07</font>:<font color="#000000">33</font> | since Mon Dec <font color="#000000">2</font> <font color="#000000">12</font>:<font color="#000000">21</font>:<font color="#000000">44</font> <font color="#000000">2024</font>
+ up <font color="#000000">0</font> days, <font color="#000000">00</font>:<font color="#000000">07</font>:<font color="#000000">34</font> | since Mon Dec <font color="#000000">2</font> <font color="#000000">12</font>:<font color="#000000">21</font>:<font color="#000000">44</font> <font color="#000000">2024</font>
+ down <font color="#000000">0</font> days, <font color="#000000">00</font>:<font color="#000000">00</font>:<font color="#000000">00</font> | since Mon Dec <font color="#000000">2</font> <font color="#000000">12</font>:<font color="#000000">21</font>:<font color="#000000">44</font> <font color="#000000">2024</font>
+ %up <font color="#000000">100.000</font> | since Mon Dec <font color="#000000">2</font> <font color="#000000">12</font>:<font color="#000000">21</font>:<font color="#000000">44</font> <font color="#000000">2024</font>
</pre>
<br />
<span>This is how I track the uptimes for all of my host:</span><br />
@@ -277,17 +280,17 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">paul@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000"> ifconfig re0</font>
-<font color="#ff0000">re0</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#ff0000">flags</font><font color="#F3E651">=</font><font color="#bb00ff">1008843</font><font color="#F3E651">&lt;</font><font color="#ff0000">UP</font><font color="#F3E651">,</font><font color="#ff0000">BROADCAST</font><font color="#F3E651">,</font><font color="#ff0000">RUNNING</font><font color="#F3E651">,</font><font color="#ff0000">SIMPLEX</font><font color="#F3E651">,</font><font color="#ff0000">MULTICAST</font><font color="#F3E651">,</font><font color="#ff0000">LOWER_UP</font><font color="#F3E651">&gt;</font><font color="#ff0000"> metric </font><font color="#bb00ff">0</font><font color="#ff0000"> mtu </font><font color="#bb00ff">1500</font>
-<font color="#ff0000"> </font><font color="#ff0000">options</font><font color="#F3E651">=</font><font color="#ff0000">8209b</font><font color="#F3E651">&lt;</font><font color="#ff0000">RXCSUM</font><font color="#F3E651">,</font><font color="#ff0000">TXCSUM</font><font color="#F3E651">,</font><font color="#ff0000">VLAN_MTU</font><font color="#F3E651">,</font><font color="#ff0000">VLAN_HWTAGGING</font><font color="#F3E651">,</font><font color="#ff0000">VLAN_HWCSUM</font><font color="#F3E651">,</font><font color="#ff0000">WOL_MAGIC</font><font color="#F3E651">,</font><font color="#ff0000">LINKSTATE</font><font color="#F3E651">&gt;</font>
-<font color="#ff0000"> ether e8</font><font color="#F3E651">:</font><font color="#ff0000">ff</font><font color="#F3E651">:</font><font color="#ff0000">1e</font><font color="#F3E651">:</font><font color="#ff0000">d7</font><font color="#F3E651">:</font><font color="#ff0000">1c</font><font color="#F3E651">:</font><font color="#ff0000">ac</font>
-<font color="#ff0000"> inet </font><font color="#bb00ff">192.168</font><font color="#F3E651">.</font><font color="#bb00ff">1.130</font><font color="#ff0000"> netmask </font><font color="#bb00ff">0xffffff00</font><font color="#ff0000"> broadcast </font><font color="#bb00ff">192.168</font><font color="#F3E651">.</font><font color="#bb00ff">1.255</font>
-<font color="#ff0000"> inet6 fe80</font><font color="#F3E651">::</font><font color="#ff0000">eaff</font><font color="#F3E651">:</font><font color="#ff0000">1eff</font><font color="#F3E651">:</font><font color="#ff0000">fed7</font><font color="#F3E651">:</font><font color="#ff0000">1cac</font><font color="#F3E651">%</font><font color="#ff0000">re0 prefixlen </font><font color="#bb00ff">64</font><font color="#ff0000"> scopeid </font><font color="#bb00ff">0x1</font>
-<font color="#ff0000"> inet6 fd22</font><font color="#F3E651">:</font><font color="#ff0000">c702</font><font color="#F3E651">:</font><font color="#ff0000">acb7</font><font color="#F3E651">:</font><font color="#bb00ff">0</font><font color="#F3E651">:</font><font color="#ff0000">eaff</font><font color="#F3E651">:</font><font color="#ff0000">1eff</font><font color="#F3E651">:</font><font color="#ff0000">fed7</font><font color="#F3E651">:</font><font color="#ff0000">1cac prefixlen </font><font color="#bb00ff">64</font><font color="#ff0000"> detached autoconf</font>
-<font color="#ff0000"> inet6 2a01</font><font color="#F3E651">:</font><font color="#ff0000">5a8</font><font color="#F3E651">:</font><font color="#bb00ff">304</font><font color="#F3E651">:</font><font color="#ff0000">1d5c</font><font color="#F3E651">:</font><font color="#ff0000">eaff</font><font color="#F3E651">:</font><font color="#ff0000">1eff</font><font color="#F3E651">:</font><font color="#ff0000">fed7</font><font color="#F3E651">:</font><font color="#ff0000">1cac prefixlen </font><font color="#bb00ff">64</font><font color="#ff0000"> autoconf pltime </font><font color="#bb00ff">10800</font><font color="#ff0000"> vltime </font><font color="#bb00ff">14400</font>
-<font color="#ff0000"> media</font><font color="#F3E651">:</font><font color="#ff0000"> Ethernet autoselect </font><font color="#F3E651">(</font><font color="#ff0000">1000baseT </font><font color="#F3E651">&lt;</font><font color="#ff0000">full-duplex</font><font color="#F3E651">&gt;)</font>
-<font color="#ff0000"> status</font><font color="#F3E651">:</font><font color="#ff0000"> active</font>
-<font color="#ff0000"> nd6 </font><font color="#ff0000">options</font><font color="#F3E651">=</font><font color="#bb00ff">23</font><font color="#F3E651">&lt;</font><font color="#ff0000">PERFORMNUD</font><font color="#F3E651">,</font><font color="#ff0000">ACCEPT_RTADV</font><font color="#F3E651">,</font><font color="#ff0000">AUTO_LINKLOCAL</font><font color="#F3E651">&gt;</font>
+<pre>paul@f0:~ % ifconfig re0
+re0: flags=<font color="#000000">1008843</font>&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP&gt; metric <font color="#000000">0</font> mtu <font color="#000000">1500</font>
+ options=8209b&lt;RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,LINKSTATE&gt;
+ ether e8:ff:1e:d7:1c:ac
+ inet <font color="#000000">192.168</font>.<font color="#000000">1.130</font> netmask <font color="#000000">0xffffff00</font> broadcast <font color="#000000">192.168</font>.<font color="#000000">1.255</font>
+ inet6 fe80::eaff:1eff:fed7:1cac%re0 prefixlen <font color="#000000">64</font> scopeid <font color="#000000">0x1</font>
+ inet6 fd22:c702:acb7:<font color="#000000">0</font>:eaff:1eff:fed7:1cac prefixlen <font color="#000000">64</font> detached autoconf
+ inet6 2a01:5a8:<font color="#000000">304</font>:1d5c:eaff:1eff:fed7:1cac prefixlen <font color="#000000">64</font> autoconf pltime <font color="#000000">10800</font> vltime <font color="#000000">14400</font>
+ media: Ethernet autoselect (1000baseT &lt;full-duplex&gt;)
+ status: active
+ nd6 options=<font color="#000000">23</font>&lt;PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL&gt;
</pre>
<br />
<h2 style='display: inline' id='ram'>RAM</h2><br />
@@ -298,8 +301,8 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">paul@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000"> sysctl hw</font><font color="#F3E651">.</font><font color="#ff0000">physmem</font>
-<font color="#ff0000">hw</font><font color="#F3E651">.</font><font color="#ff0000">physmem</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">16902905856</font>
+<pre>paul@f0:~ % sysctl hw.physmem
+hw.physmem: <font color="#000000">16902905856</font>
</pre>
<br />
@@ -311,11 +314,11 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">paul@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000"> sysctl dev</font><font color="#F3E651">.</font><font color="#ff0000">cpu </font><font color="#F3E651">|</font><font color="#ff0000"> grep freq</font><font color="#F3E651">:</font>
-<font color="#ff0000">dev</font><font color="#F3E651">.</font><font color="#ff0000">cpu</font><font color="#F3E651">.</font><font color="#bb00ff">3</font><font color="#F3E651">.</font><font color="#ff0000">freq</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">705</font>
-<font color="#ff0000">dev</font><font color="#F3E651">.</font><font color="#ff0000">cpu</font><font color="#F3E651">.</font><font color="#bb00ff">2</font><font color="#F3E651">.</font><font color="#ff0000">freq</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">705</font>
-<font color="#ff0000">dev</font><font color="#F3E651">.</font><font color="#ff0000">cpu</font><font color="#F3E651">.</font><font color="#bb00ff">1</font><font color="#F3E651">.</font><font color="#ff0000">freq</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">604</font>
-<font color="#ff0000">dev</font><font color="#F3E651">.</font><font color="#ff0000">cpu</font><font color="#F3E651">.</font><font color="#bb00ff">0</font><font color="#F3E651">.</font><font color="#ff0000">freq</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">604</font>
+<pre>paul@f0:~ % sysctl dev.cpu | grep freq:
+dev.cpu.<font color="#000000">3</font>.freq: <font color="#000000">705</font>
+dev.cpu.<font color="#000000">2</font>.freq: <font color="#000000">705</font>
+dev.cpu.<font color="#000000">1</font>.freq: <font color="#000000">604</font>
+dev.cpu.<font color="#000000">0</font>.freq: <font color="#000000">604</font>
</pre>
<br />
<h2 style='display: inline' id='cpu-throttling'>CPU throttling</h2><br />
@@ -326,14 +329,14 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">paul@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000"> doas pkg install ubench</font>
-<font color="#ff0000">paul@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000"> rehash </font><i><font color="#ababab"># For tcsh to find the newly installed command</font></i>
-<font color="#ff0000">paul@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000"> ubench </font><font color="#F3E651">&amp;</font>
-<font color="#ff0000">paul@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000"> sysctl dev</font><font color="#F3E651">.</font><font color="#ff0000">cpu </font><font color="#F3E651">|</font><font color="#ff0000"> grep freq</font><font color="#F3E651">:</font>
-<font color="#ff0000">dev</font><font color="#F3E651">.</font><font color="#ff0000">cpu</font><font color="#F3E651">.</font><font color="#bb00ff">3</font><font color="#F3E651">.</font><font color="#ff0000">freq</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">2922</font>
-<font color="#ff0000">dev</font><font color="#F3E651">.</font><font color="#ff0000">cpu</font><font color="#F3E651">.</font><font color="#bb00ff">2</font><font color="#F3E651">.</font><font color="#ff0000">freq</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">2922</font>
-<font color="#ff0000">dev</font><font color="#F3E651">.</font><font color="#ff0000">cpu</font><font color="#F3E651">.</font><font color="#bb00ff">1</font><font color="#F3E651">.</font><font color="#ff0000">freq</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">2923</font>
-<font color="#ff0000">dev</font><font color="#F3E651">.</font><font color="#ff0000">cpu</font><font color="#F3E651">.</font><font color="#bb00ff">0</font><font color="#F3E651">.</font><font color="#ff0000">freq</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">2922</font>
+<pre>paul@f0:~ % doas pkg install ubench
+paul@f0:~ % rehash <i><font color="silver"># For tcsh to find the newly installed command</font></i>
+paul@f0:~ % ubench &amp;
+paul@f0:~ % sysctl dev.cpu | grep freq:
+dev.cpu.<font color="#000000">3</font>.freq: <font color="#000000">2922</font>
+dev.cpu.<font color="#000000">2</font>.freq: <font color="#000000">2922</font>
+dev.cpu.<font color="#000000">1</font>.freq: <font color="#000000">2923</font>
+dev.cpu.<font color="#000000">0</font>.freq: <font color="#000000">2922</font>
</pre>
<br />
<span>Idle, all three Beelinks plus the switch consumed 26.2W. But with <span class='inlinecode'>ubench</span> stressing all the CPUs, it went up to 38.8W.</span><br />
@@ -364,7 +367,7 @@ http://www.gnu.org/software/src-highlite -->
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/2024-12-15-random-helix-themes.html b/gemfeed/2024-12-15-random-helix-themes.html
index 21d15604..6c97bfe6 100644
--- a/gemfeed/2024-12-15-random-helix-themes.html
+++ b/gemfeed/2024-12-15-random-helix-themes.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2024-12-15-random-helix-themes.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2024-12-15-random-helix-themes.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='random-helix-themes'>Random Helix Themes</h1><br />
<br />
<span class='quote'>Published at 2024-12-15T13:55:05+02:00; Last updated 2024-12-18</span><br />
@@ -22,33 +25,33 @@
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">export</font></b><font color="#ff0000"> </font><font color="#ff0000">EDITOR</font><font color="#F3E651">=</font><font color="#ff0000">hx</font>
-<b><font color="#ffffff">export</font></b><font color="#ff0000"> </font><font color="#ff0000">VISUAL</font><font color="#F3E651">=</font><font color="#ff0000">$EDITOR</font>
-<b><font color="#ffffff">export</font></b><font color="#ff0000"> </font><font color="#ff0000">GIT_EDITOR</font><font color="#F3E651">=</font><font color="#ff0000">$EDITOR</font>
-<b><font color="#ffffff">export</font></b><font color="#ff0000"> </font><font color="#ff0000">HELIX_CONFIG_DIR</font><font color="#F3E651">=</font><font color="#ff0000">$HOME</font><font color="#F3E651">/.</font><font color="#ff0000">config/helix</font>
+<pre><b><u><font color="#000000">export</font></u></b> EDITOR=hx
+<b><u><font color="#000000">export</font></u></b> VISUAL=$EDITOR
+<b><u><font color="#000000">export</font></u></b> GIT_EDITOR=$EDITOR
+<b><u><font color="#000000">export</font></u></b> HELIX_CONFIG_DIR=$HOME/.config/helix
-<font color="#ff0000">editor</font><font color="#F3E651">::</font><font color="#ff0000">helix</font><font color="#F3E651">::</font><font color="#7bc710">random_theme ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><i><font color="#ababab"># May add more theme search paths based on OS. This one is</font></i>
-<font color="#ff0000"> </font><i><font color="#ababab"># for Fedora Linux, but there is also MacOS, etc.</font></i>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">theme_dir</font><font color="#F3E651">=</font><font color="#ff0000">/usr/share/helix/runtime/themes</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#F3E651">!</font><font color="#ff0000"> -d </font><font color="#ff0000">$theme_dir</font><font color="#ff0000"> </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"Helix theme dir $theme_dir doesnt exist"</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><font color="#bb00ff">1</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
+editor::helix::random_theme () {
+ <i><font color="silver"># May add more theme search paths based on OS. This one is</font></i>
+ <i><font color="silver"># for Fedora Linux, but there is also MacOS, etc.</font></i>
+ <b><u><font color="#000000">local</font></u></b> -r theme_dir=/usr/share/helix/runtime/themes
+ <b><u><font color="#000000">if</font></u></b> [ ! -d $theme_dir ]; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"Helix theme dir $theme_dir doesnt exist"</font>
+ <b><u><font color="#000000">return</font></u></b> <font color="#000000">1</font>
+ <b><u><font color="#000000">fi</font></u></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">config_file</font><font color="#F3E651">=</font><font color="#ff0000">$HELIX_CONFIG_DIR</font><font color="#ff0000">/config</font><font color="#F3E651">.</font><font color="#ff0000">toml</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">random_theme</font><font color="#F3E651">=</font><font color="#bb00ff">"$(basename "</font><font color="#ff0000">$(</font><font color="#ff0000">ls </font><font color="#ff0000">$theme_dir</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> grep -v random</font><font color="#F3E651">.</font><font color="#ff0000">toml </font><font color="#F3E651">|</font><font color="#ff0000"> grep </font><font color="#F3E651">.</font><font color="#ff0000">toml </font><font color="#F3E651">|</font><font color="#ff0000"> sort -R </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> head -n </font><font color="#bb00ff">1</font><font color="#F3E651">)</font><font color="#bb00ff">" | cut -d. -f1)"</font>
+ <b><u><font color="#000000">local</font></u></b> -r config_file=$HELIX_CONFIG_DIR/config.toml
+ <b><u><font color="#000000">local</font></u></b> -r random_theme=<font color="#808080">"$(basename "</font>$(ls $theme_dir \
+ | grep -v random.toml | grep .toml | sort -R \
+ | head -n <font color="#000000">1</font>)<font color="#808080">" | cut -d. -f1)"</font>
-<font color="#ff0000"> sed </font><font color="#bb00ff">"/^theme =/ { s/.*/theme = </font><font color="#ffffff">\"</font><font color="#bb00ff">$random_theme</font><font color="#ffffff">\"</font><font color="#bb00ff">/; }"</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#ff0000">$config_file</font><font color="#ff0000"> </font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#ff0000">$config_file</font><font color="#F3E651">.</font><font color="#ff0000">tmp </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> </font>
-<font color="#ff0000"> mv </font><font color="#ff0000">$config_file</font><font color="#F3E651">.</font><font color="#ff0000">tmp </font><font color="#ff0000">$config_file</font>
-<font color="#ff0000">}</font>
+ sed <font color="#808080">"/^theme =/ { s/.*/theme = </font>\"<font color="#808080">$random_theme</font>\"<font color="#808080">/; }"</font> \
+ $config_file &gt; $config_file.tmp &amp;&amp;
+ mv $config_file.tmp $config_file
+}
-<b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> -f </font><font color="#ff0000">$HELIX_CONFIG_DIR</font><font color="#ff0000">/config</font><font color="#F3E651">.</font><font color="#ff0000">toml </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> editor</font><font color="#F3E651">::</font><font color="#ff0000">helix</font><font color="#F3E651">::</font><font color="#ff0000">random_theme</font>
-<b><font color="#ffffff">fi</font></b>
+<b><u><font color="#000000">if</font></u></b> [ -f $HELIX_CONFIG_DIR/config.toml ]; <b><u><font color="#000000">then</font></u></b>
+ editor::helix::random_theme
+<b><u><font color="#000000">fi</font></u></b>
</pre>
<br />
<span>So every time I open a new terminal or shell, <span class='inlinecode'>editor::helix::random_theme</span> gets called, which randomly selects a theme from all installed ones and updates the helix config accordingly.</span><br />
@@ -57,16 +60,16 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">[</font><font color="#ff0000">paul@earth</font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">~</font><font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000"> editor</font><font color="#F3E651">::</font><font color="#ff0000">helix</font><font color="#F3E651">::</font><font color="#ff0000">random_theme</font>
-<font color="#F3E651">[</font><font color="#ff0000">paul@earth</font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">~</font><font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000"> head -n </font><font color="#bb00ff">1</font><font color="#ff0000"> </font><font color="#F3E651">~/.</font><font color="#ff0000">config/helix/config</font><font color="#F3E651">.</font><font color="#ff0000">toml</font>
-<font color="#ff0000">theme </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">"jellybeans"</font>
-<font color="#F3E651">[</font><font color="#ff0000">paul@earth</font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">~</font><font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000"> editor</font><font color="#F3E651">::</font><font color="#ff0000">helix</font><font color="#F3E651">::</font><font color="#ff0000">random_theme</font>
-<font color="#F3E651">[</font><font color="#ff0000">paul@earth</font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">~</font><font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000"> head -n </font><font color="#bb00ff">1</font><font color="#ff0000"> </font><font color="#F3E651">~/.</font><font color="#ff0000">config/helix/config</font><font color="#F3E651">.</font><font color="#ff0000">toml</font>
-<font color="#ff0000">theme </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">"rose_pine"</font>
-<font color="#F3E651">[</font><font color="#ff0000">paul@earth</font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">~</font><font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000"> editor</font><font color="#F3E651">::</font><font color="#ff0000">helix</font><font color="#F3E651">::</font><font color="#ff0000">random_theme</font>
-<font color="#F3E651">[</font><font color="#ff0000">paul@earth</font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">~</font><font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000"> head -n </font><font color="#bb00ff">1</font><font color="#ff0000"> </font><font color="#F3E651">~/.</font><font color="#ff0000">config/helix/config</font><font color="#F3E651">.</font><font color="#ff0000">toml</font>
-<font color="#ff0000">theme </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">"noctis"</font>
-<font color="#F3E651">[</font><font color="#ff0000">paul@earth</font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">~</font><font color="#ff0000"> </font><font color="#F3E651">%</font>
+<pre>[paul@earth] ~ % editor::helix::random_theme
+[paul@earth] ~ % head -n <font color="#000000">1</font> ~/.config/helix/config.toml
+theme = <font color="#808080">"jellybeans"</font>
+[paul@earth] ~ % editor::helix::random_theme
+[paul@earth] ~ % head -n <font color="#000000">1</font> ~/.config/helix/config.toml
+theme = <font color="#808080">"rose_pine"</font>
+[paul@earth] ~ % editor::helix::random_theme
+[paul@earth] ~ % head -n <font color="#000000">1</font> ~/.config/helix/config.toml
+theme = <font color="#808080">"noctis"</font>
+[paul@earth] ~ %
</pre>
<br />
<h2 style='display: inline' id='a-better-version'>A better version</h2><br />
@@ -77,40 +80,40 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">export</font></b><font color="#ff0000"> </font><font color="#ff0000">EDITOR</font><font color="#F3E651">=</font><font color="#ff0000">hx</font>
-<b><font color="#ffffff">export</font></b><font color="#ff0000"> </font><font color="#ff0000">VISUAL</font><font color="#F3E651">=</font><font color="#ff0000">$EDITOR</font>
-<b><font color="#ffffff">export</font></b><font color="#ff0000"> </font><font color="#ff0000">GIT_EDITOR</font><font color="#F3E651">=</font><font color="#ff0000">$EDITOR</font>
-<b><font color="#ffffff">export</font></b><font color="#ff0000"> </font><font color="#ff0000">HELIX_CONFIG_DIR</font><font color="#F3E651">=</font><font color="#ff0000">$HOME</font><font color="#F3E651">/.</font><font color="#ff0000">config/helix</font>
+<pre><b><u><font color="#000000">export</font></u></b> EDITOR=hx
+<b><u><font color="#000000">export</font></u></b> VISUAL=$EDITOR
+<b><u><font color="#000000">export</font></u></b> GIT_EDITOR=$EDITOR
+<b><u><font color="#000000">export</font></u></b> HELIX_CONFIG_DIR=$HOME/.config/helix
-<font color="#ff0000">editor</font><font color="#F3E651">::</font><font color="#ff0000">helix</font><font color="#F3E651">::</font><font color="#ff0000">theme</font><font color="#F3E651">::</font><font color="#7bc710">get_random ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> dir </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> </font><font color="#ff0000">$(</font><font color="#ff0000">hx --health </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> awk </font><font color="#bb00ff">'/^Runtime directories/ { print $3 }'</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> tr </font><font color="#bb00ff">';'</font><font color="#ff0000"> </font><font color="#bb00ff">' '</font><font color="#F3E651">);</font><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> -d </font><font color="#ff0000">$dir</font><font color="#ff0000">/themes </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> ls </font><font color="#ff0000">$dir</font><font color="#ff0000">/themes</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">done</font></b><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> grep -F </font><font color="#F3E651">.</font><font color="#ff0000">toml </font><font color="#F3E651">|</font><font color="#ff0000"> sort -R </font><font color="#F3E651">|</font><font color="#ff0000"> head -n </font><font color="#bb00ff">1</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> cut -d</font><font color="#F3E651">.</font><font color="#ff0000"> -f</font><font color="#bb00ff">1</font>
-<font color="#ff0000">}</font>
+editor::helix::theme::get_random () {
+ <b><u><font color="#000000">for</font></u></b> dir <b><u><font color="#000000">in</font></u></b> $(hx --health \
+ | awk <font color="#808080">'/^Runtime directories/ { print $3 }'</font> | tr <font color="#808080">';'</font> <font color="#808080">' '</font>); <b><u><font color="#000000">do</font></u></b>
+ <b><u><font color="#000000">if</font></u></b> [ -d $dir/themes ]; <b><u><font color="#000000">then</font></u></b>
+ ls $dir/themes
+ <b><u><font color="#000000">fi</font></u></b>
+ <b><u><font color="#000000">done</font></u></b> | grep -F .toml | sort -R | head -n <font color="#000000">1</font> | cut -d. -f<font color="#000000">1</font>
+}
-<font color="#ff0000">editor</font><font color="#F3E651">::</font><font color="#ff0000">helix</font><font color="#F3E651">::</font><font color="#ff0000">theme</font><font color="#F3E651">::</font><font color="#7bc710">set ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">theme</font><font color="#F3E651">=</font><font color="#bb00ff">"$1"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b>
+editor::helix::theme::set () {
+ <b><u><font color="#000000">local</font></u></b> -r theme=<font color="#808080">"$1"</font>; <b><u><font color="#000000">shift</font></u></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">config_file</font><font color="#F3E651">=</font><font color="#ff0000">$HELIX_CONFIG_DIR</font><font color="#ff0000">/config</font><font color="#F3E651">.</font><font color="#ff0000">toml</font>
+ <b><u><font color="#000000">local</font></u></b> -r config_file=$HELIX_CONFIG_DIR/config.toml
-<font color="#ff0000"> sed </font><font color="#bb00ff">"/^theme =/ { s/.*/theme = </font><font color="#ffffff">\"</font><font color="#bb00ff">$theme</font><font color="#ffffff">\"</font><font color="#bb00ff">/; }"</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#ff0000">$config_file</font><font color="#ff0000"> </font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#ff0000">$config_file</font><font color="#F3E651">.</font><font color="#ff0000">tmp </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> </font>
-<font color="#ff0000"> mv </font><font color="#ff0000">$config_file</font><font color="#F3E651">.</font><font color="#ff0000">tmp </font><font color="#ff0000">$config_file</font>
-<font color="#ff0000">}</font>
+ sed <font color="#808080">"/^theme =/ { s/.*/theme = </font>\"<font color="#808080">$theme</font>\"<font color="#808080">/; }"</font> \
+ $config_file &gt; $config_file.tmp &amp;&amp;
+ mv $config_file.tmp $config_file
+}
-<b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> -f </font><font color="#ff0000">$HELIX_CONFIG_DIR</font><font color="#ff0000">/config</font><font color="#F3E651">.</font><font color="#ff0000">toml </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> editor</font><font color="#F3E651">::</font><font color="#ff0000">helix</font><font color="#F3E651">::</font><font color="#ff0000">theme</font><font color="#F3E651">::</font><b><font color="#ffffff">set</font></b><font color="#ff0000"> </font><font color="#ff0000">$(editor::helix::theme::get_random)</font>
-<b><font color="#ffffff">fi</font></b>
+<b><u><font color="#000000">if</font></u></b> [ -f $HELIX_CONFIG_DIR/config.toml ]; <b><u><font color="#000000">then</font></u></b>
+ editor::helix::theme::<b><u><font color="#000000">set</font></u></b> $(editor::helix::theme::get_random)
+<b><u><font color="#000000">fi</font></u></b>
</pre>
<br />
<span>I hope you had some fun. E-Mail your comments to <span class='inlinecode'>paul@nospam.buetow.org</span> :-)</span><br />
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/DRAFT-f3s-kubernetes-with-freebsd-hardware-setup.html b/gemfeed/DRAFT-f3s-kubernetes-with-freebsd-hardware-setup.html
index d3fd396a..220c617e 100644
--- a/gemfeed/DRAFT-f3s-kubernetes-with-freebsd-hardware-setup.html
+++ b/gemfeed/DRAFT-f3s-kubernetes-with-freebsd-hardware-setup.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/DRAFT-f3s-kubernetes-with-freebsd-hardware-setup.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/DRAFT-f3s-kubernetes-with-freebsd-hardware-setup.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='f3s-kubernetes-with-freebsd---setting-the-stage---part-1'>f3s: Kubernetes with FreeBSD - Setting the stage - Part 1</h1><br />
<br />
<span class='quote'>Published at 2024-11-16T23:20:14+02:00</span><br />
@@ -52,7 +55,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/DRAFT-site-reliability-engineering.html b/gemfeed/DRAFT-site-reliability-engineering.html
index 5447a3a2..94f8b742 100644
--- a/gemfeed/DRAFT-site-reliability-engineering.html
+++ b/gemfeed/DRAFT-site-reliability-engineering.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/DRAFT-site-reliability-engineering.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/DRAFT-site-reliability-engineering.gmi">Gemtext</a>
+</p>
<h2 style='display: inline' id='system-design-and-incident-analysis-building-resilience-in-the-sre-landscape'>System Design and Incident Analysis: Building Resilience in the SRE Landscape</h2><br />
<br />
<span>A significant portion of the work revolves around system design and incident analysis.</span><br />
@@ -162,7 +165,7 @@
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>
diff --git a/gemfeed/DRAFT-summary-for-202410-202411-202410.html b/gemfeed/DRAFT-summary-for-202410-202411-202410.html
new file mode 100644
index 00000000..33ccdc6c
--- /dev/null
+++ b/gemfeed/DRAFT-summary-for-202410-202411-202410.html
@@ -0,0 +1,332 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Summary for 202410 202411 202412</title>
+<link rel="shortcut icon" type="image/gif" href="/favicon.ico" />
+<link rel="stylesheet" href="../style.css" />
+<link rel="stylesheet" href="style-override.css" />
+</head>
+<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/DRAFT-summary-for-202410-202411-202410.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/DRAFT-summary-for-202410-202411-202410.gmi">Gemtext</a>
+</p>
+<h1 style='display: inline' id='summary-for-202410-202411-202412'>Summary for 202410 202411 202412</h1><br />
+<br />
+<h2 style='display: inline' id='table-of-contents'>Table of Contents</h2><br />
+<br />
+<ul>
+<li><a href='#summary-for-202410-202411-202412'>Summary for 202410 202411 202412</a></li>
+<li>⇢ <a href='#october-2024'>October 2024</a></li>
+<li>⇢ ⇢ <a href='#first-on-call-experience-in-a-startup-doesn-t-'>First on-call experience in a startup. Doesn&#39;t ...</a></li>
+<li>⇢ ⇢ <a href='#reviewing-your-own-pr-or-mr-before-asking-'>Reviewing your own PR or MR before asking ...</a></li>
+<li>⇢ ⇢ <a href='#fun-with-defer-in--golang-i-did-t-know-that-'>Fun with defer in <span class='inlinecode'> ⇢golang</span>, I did&#39;t know, that ...</a></li>
+<li>⇢ ⇢ <a href='#i-have-been-in-incidents-understandably-'>I have been in incidents. Understandably, ...</a></li>
+<li>⇢ ⇢ <a href='#little-tips-using-strings-in--golang-and-i-'>Little tips using strings in <span class='inlinecode'> ⇢golang</span> and I ...</a></li>
+<li>⇢ ⇢ <a href='#reading-this-post-about--rust-especially-the-'>Reading this post about <span class='inlinecode'> ⇢rust</span> (especially the ...</a></li>
+<li>⇢ ⇢ <a href='#the-opposite-of--chaosmonkey--'>The opposite of <span class='inlinecode'> ⇢ChaosMonkey</span> ... ...</a></li>
+<li>⇢ <a href='#november-2024'>November 2024</a></li>
+<li>⇢ ⇢ <a href='#i-just-became-a-silver-patreon-for-osnews-what-'>I just became a Silver Patreon for OSnews. What ...</a></li>
+<li>⇢ ⇢ <a href='#until-now-i-wasn-t-aware-that-go-is-under-a-'>Until now, I wasn&#39;t aware, that Go is under a ...</a></li>
+<li>⇢ ⇢ <a href='#these-are-some-book-notes-from-staff-engineer-'>These are some book notes from "Staff Engineer" ...</a></li>
+<li>⇢ ⇢ <a href='#looking-at--kubernetes-it-s-pretty-much-'>Looking at <span class='inlinecode'> ⇢Kubernetes</span>, it&#39;s pretty much ...</a></li>
+<li>⇢ ⇢ <a href='#there-has-been-an-outage-at-the-upstream-'>There has been an outage at the upstream ...</a></li>
+<li>⇢ ⇢ <a href='#one-of-the-more-confusing-parts-in-go-nil-'>One of the more confusing parts in Go, nil ...</a></li>
+<li>⇢ ⇢ <a href='#agreeably-writing-down-with-diagrams-helps-you-'>Agreeably, writing down with Diagrams helps you ...</a></li>
+<li>⇢ ⇢ <a href='#i-like-the-idea-of-types-in-ruby-raku-is-'>I like the idea of types in Ruby. Raku is ...</a></li>
+<li>⇢ ⇢ <a href='#so--haskell-is-better-suited-for-general-'>So, <span class='inlinecode'> ⇢Haskell</span> is better suited for general ...</a></li>
+<li>⇢ ⇢ <a href='#at-first-functional-options-add-a-bit-of-'>At first, functional options add a bit of ...</a></li>
+<li>⇢ ⇢ <a href='#revamping-my-home-lab-a-little-bit--freebsd-'>Revamping my home lab a little bit. <span class='inlinecode'> ⇢freebsd</span> ...</a></li>
+<li>⇢ ⇢ <a href='#revamping-my-home-lab-a-little-bit--freebsd-'>Revamping my home lab a little bit. <span class='inlinecode'> ⇢freebsd</span> ...</a></li>
+<li>⇢ ⇢ <a href='#wondering-to-which--web--browser-i-should-'>Wondering to which <span class='inlinecode'> ⇢web</span> <span class='inlinecode'> ⇢browser</span> I should ...</a></li>
+<li>⇢ ⇢ <a href='#eks-node-viewer-is-a-nifty-tool-showing-the-'>eks-node-viewer is a nifty tool, showing the ...</a></li>
+<li>⇢ ⇢ <a href='#have-put-more-photos-on---on-my-static-photo-'>Have put more Photos on - On my static photo ...</a></li>
+<li>⇢ ⇢ <a href='#in-go-passing-pointers-are-not-automatically-'>In Go, passing pointers are not automatically ...</a></li>
+<li>⇢ ⇢ <a href='#myself-being-part-of-an-on-call-rotations-over-'>Myself being part of an on-call rotations over ...</a></li>
+<li>⇢ ⇢ <a href='#feels-good-to-code-in-my-old-love--perl-again-'>Feels good to code in my old love <span class='inlinecode'> ⇢Perl</span> again ...</a></li>
+<li>⇢ ⇢ <a href='#this-is-an-interactive-summary-of-the-go-'>This is an interactive summary of the Go ...</a></li>
+<li>⇢ <a href='#december-2024'>December 2024</a></li>
+<li>⇢ ⇢ <a href='#thats-unexpected-you-cant-remove-a-nan-key-'>Thats unexpected, you cant remove a NaN key ...</a></li>
+<li>⇢ ⇢ <a href='#my-second-blog-post-about-revamping-my-home-lab-'>My second blog post about revamping my home lab ...</a></li>
+<li>⇢ ⇢ <a href='#very-insightful-article-about-tech-hiring-in-'>Very insightful article about tech hiring in ...</a></li>
+<li>⇢ ⇢ <a href='#for--bpf--ebpf-performance-debugging-have-'>for <span class='inlinecode'> ⇢bpf</span> <span class='inlinecode'> ⇢ebpf</span> performance debugging, have ...</a></li>
+<li>⇢ ⇢ <a href='#89-things-heshe-knows-about-git-commits-is-a-'>89 things he/she knows about Git commits is a ...</a></li>
+<li>⇢ ⇢ <a href='#i-found-that-working-on-multiple-side-projects-'>I found that working on multiple side projects ...</a></li>
+<li>⇢ ⇢ <a href='#agreed-agreed-besides--ruby-i-would-also-'>Agreed? Agreed. Besides <span class='inlinecode'> ⇢Ruby</span>, I would also ...</a></li>
+<li>⇢ ⇢ <a href='#plan9-assembly-format-in-go-but-wait-it-s-not-'>Plan9 assembly format in Go, but wait, it&#39;s not ...</a></li>
+<li>⇢ ⇢ <a href='#this-is-a-neat-blog-post-about-the-helix-text-'>This is a neat blog post about the Helix text ...</a></li>
+<li>⇢ ⇢ <a href='#this-blog-post-is-basically-a-rant-against-'>This blog post is basically a rant against ...</a></li>
+<li>⇢ ⇢ <a href='#quick-trick-to-get-helix-themes-selected-'>Quick trick to get Helix themes selected ...</a></li>
+<li>⇢ ⇢ <a href='#example-where-complexity-attacks-you-from-'>Example where complexity attacks you from ...</a></li>
+<li>⇢ ⇢ <a href='#llms-for-ops-summaries-of-logs-probabilities-'>LLMs for Ops? Summaries of logs, probabilities ...</a></li>
+<li>⇢ ⇢ <a href='#excellent-article-about-your-dream-product-'>Excellent article about your dream Product ...</a></li>
+<li>⇢ ⇢ <a href='#i-just-finished-reading-all-chapters-of-cpu-'>I just finished reading all chapters of CPU ...</a></li>
+<li>⇢ ⇢ <a href='#indeed-useful-to-know-this-stuff--sre-'>Indeed, useful to know this stuff! <span class='inlinecode'> ⇢sre</span> ...</a></li>
+<li>⇢ ⇢ <a href='#it-s-the-small-things-which-make-unix-like-'>It&#39;s the small things, which make Unix like ...</a></li>
+</ul><br />
+<h2 style='display: inline' id='october-2024'>October 2024</h2><br />
+<br />
+<h3 style='display: inline' id='first-on-call-experience-in-a-startup-doesn-t-'>First on-call experience in a startup. Doesn&#39;t ...</h3><br />
+<br />
+<span>First on-call experience in a startup. Doesn&#39;t sound a lot of fun! But the lessons were learned! <span class='inlinecode'>#sre</span></span><br />
+<br />
+<a class='textlink' href='https://ntietz.com/blog/lessons-from-my-first-on-call/'>https://ntietz.com/blog/lessons-from-my-first-on-call/</a><br />
+<br />
+<h3 style='display: inline' id='reviewing-your-own-pr-or-mr-before-asking-'>Reviewing your own PR or MR before asking ...</h3><br />
+<br />
+<span>Reviewing your own PR or MR before asking others to review it makes a lot of sense. Have seen so many silly mistakes which would have been avoided. Saving time for the real reviewer.</span><br />
+<br />
+<a class='textlink' href='https://www.jvt.me/posts/2019/01/12/self-code-review/'>https://www.jvt.me/posts/2019/01/12/self-code-review/</a><br />
+<br />
+<h3 style='display: inline' id='fun-with-defer-in-golang-i-did-t-know-that-'>Fun with defer in <span class='inlinecode'>#golang</span>, I did&#39;t know, that ...</h3><br />
+<br />
+<span>Fun with defer in <span class='inlinecode'>#golang</span>, I did&#39;t know, that a defer object can either be heap or stack allocated. And there are some rules for inlining, too.</span><br />
+<br />
+<a class='textlink' href='https://victoriametrics.com/blog/defer-in-go/'>https://victoriametrics.com/blog/defer-in-go/</a><br />
+<br />
+<h3 style='display: inline' id='i-have-been-in-incidents-understandably-'>I have been in incidents. Understandably, ...</h3><br />
+<br />
+<span>I have been in incidents. Understandably, everyone wants the issue to be resolved as quickly and others want to know how long TTR will be. IMHO, providing no estimates at all is no solution either. So maybe give a rough estimate but clearly communicate that the estimate is rough and that X, Y, and Z can interfere, meaning there is a chance it will take longer to resolve the incident. Just my thought. What&#39;s yours?</span><br />
+<br />
+<a class='textlink' href='https://firehydrant.com/blog/hot-take-dont-provide-incident-resolution-estimates/'>https://firehydrant.com/blog/hot-...de-incident-resolution-estimates/</a><br />
+<br />
+<h3 style='display: inline' id='little-tips-using-strings-in-golang-and-i-'>Little tips using strings in <span class='inlinecode'>#golang</span> and I ...</h3><br />
+<br />
+<span>Little tips using strings in <span class='inlinecode'>#golang</span> and I personally think one must look more into the std lib (not just for strings, also for slices, maps,...), there are tons of useful helper functions.</span><br />
+<br />
+<a class='textlink' href='https://www.calhoun.io/6-tips-for-using-strings-in-go/'>https://www.calhoun.io/6-tips-for-using-strings-in-go/</a><br />
+<br />
+<h3 style='display: inline' id='reading-this-post-about-rust-especially-the-'>Reading this post about <span class='inlinecode'>#rust</span> (especially the ...</h3><br />
+<br />
+<span>Reading this post about <span class='inlinecode'>#rust</span> (especially the first part), I think I made a good choice in deciding to dive into <span class='inlinecode'>#golang</span> instead. There was a point where I wanted to learn a new programming language, and Rust was on my list of choices. I think the Go project does a much better job of deciding what goes into the language and how. What are your thoughts?</span><br />
+<br />
+<a class='textlink' href='https://josephg.com/blog/rewriting-rust/'>https://josephg.com/blog/rewriting-rust/</a><br />
+<br />
+<h3 style='display: inline' id='the-opposite-of-chaosmonkey--'>The opposite of <span class='inlinecode'>#ChaosMonkey</span> ... ...</h3><br />
+<br />
+<span>The opposite of <span class='inlinecode'>#ChaosMonkey</span> ... automatically repairing and healing services helping to reduce manual toil work. Runbooks and scripts are only the first step, followed by a fully blown service written in Go. Could be useful, but IMHO why not rather address the root causes of the manual toil work? <span class='inlinecode'>#sre</span></span><br />
+<br />
+<a class='textlink' href='https://blog.cloudflare.com/nl-nl/improving-platform-resilience-at-cloudflare/'>https://blog.cloudflare.com/nl-nl...latform-resilience-at-cloudflare/</a><br />
+<br />
+<h2 style='display: inline' id='november-2024'>November 2024</h2><br />
+<br />
+<h3 style='display: inline' id='i-just-became-a-silver-patreon-for-osnews-what-'>I just became a Silver Patreon for OSnews. What ...</h3><br />
+<br />
+<span>I just became a Silver Patreon for OSnews. What is OSnews? It is an independent news site about IT. It is slightly independent and, at times, alternative. I have enjoyed it since my early student days. This one and other projects I financially support are listed here:</span><br />
+<br />
+<a class='textlink' href='https://foo.zone/gemfeed/2024-09-07-projects-i-support.html'>https://foo.zone/gemfeed/2024-09-07-projects-i-support.html</a><br />
+<br />
+<h3 style='display: inline' id='until-now-i-wasn-t-aware-that-go-is-under-a-'>Until now, I wasn&#39;t aware, that Go is under a ...</h3><br />
+<br />
+<span>Until now, I wasn&#39;t aware, that Go is under a BSD-style license (3-clause as it seems). Neat. I don&#39;t know why, but I always was under the impression it would be MIT. <span class='inlinecode'>#bsd</span> <span class='inlinecode'>#golang</span></span><br />
+<br />
+<a class='textlink' href='https://go.dev/LICENSE'>https://go.dev/LICENSE</a><br />
+<br />
+<h3 style='display: inline' id='these-are-some-book-notes-from-staff-engineer-'>These are some book notes from "Staff Engineer" ...</h3><br />
+<br />
+<span>These are some book notes from "Staff Engineer" – there is some really good insight into what is expected from a Staff Engineer and beyond in the industry. I wish I had read the book earlier.</span><br />
+<br />
+<a class='textlink' href='https://foo.zone/gemfeed/2024-10-24-staff-engineer-book-notes.html'>https://foo.zone/gemfeed/2024-10-24-staff-engineer-book-notes.html</a><br />
+<br />
+<h3 style='display: inline' id='looking-at-kubernetes-it-s-pretty-much-'>Looking at <span class='inlinecode'>#Kubernetes</span>, it&#39;s pretty much ...</h3><br />
+<br />
+<span>Looking at <span class='inlinecode'>#Kubernetes</span>, it&#39;s pretty much following the Unix way of doing things. It has many tools, but each tool has its own single purpose: DNS, scheduling, container runtime, various controllers, networking, observability, alerting, and more services in the control plane. Everything is managed by different services or plugins, mostly running in their dedicated pods. They don&#39;t communicate through pipes, but network sockets, though. <span class='inlinecode'>#k8s</span></span><br />
+<br />
+<h3 style='display: inline' id='there-has-been-an-outage-at-the-upstream-'>There has been an outage at the upstream ...</h3><br />
+<br />
+<span>There has been an outage at the upstream network provider for OpenBSD.Amsterdam (hoster, I am using). This was the first real-world test for my KISS HA setup, and it worked flawlessly! All my sites and services failed over automatically to my other <span class='inlinecode'>#OpenBSD</span> VM!</span><br />
+<br />
+<a class='textlink' href='https://foo.zone/gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.html'>https://foo.zone/gemfeed/2024-04-...gh-availability-with-OpenBSD.html</a><br />
+<a class='textlink' href='https://openbsd.amsterdam/'>https://openbsd.amsterdam/</a><br />
+<br />
+<h3 style='display: inline' id='one-of-the-more-confusing-parts-in-go-nil-'>One of the more confusing parts in Go, nil ...</h3><br />
+<br />
+<span>One of the more confusing parts in Go, nil values vs nil errors: <span class='inlinecode'>#golang</span></span><br />
+<br />
+<a class='textlink' href='https://unexpected-go.com/nil-errors-that-are-non-nil-errors.html'>https://unexpected-go.com/nil-errors-that-are-non-nil-errors.html</a><br />
+<br />
+<h3 style='display: inline' id='agreeably-writing-down-with-diagrams-helps-you-'>Agreeably, writing down with Diagrams helps you ...</h3><br />
+<br />
+<span>Agreeably, writing down with Diagrams helps you to think things more through. And keeps others on the same page. Only worth for projects from a certain size, IMHO.</span><br />
+<br />
+<a class='textlink' href='https://ntietz.com/blog/reasons-to-write-design-docs/'>https://ntietz.com/blog/reasons-to-write-design-docs/</a><br />
+<br />
+<h3 style='display: inline' id='i-like-the-idea-of-types-in-ruby-raku-is-'>I like the idea of types in Ruby. Raku is ...</h3><br />
+<br />
+<span>I like the idea of types in Ruby. Raku is supports that already, but in Ruby, you must specify the types in a separate .rbs file, which is, in my opinion, cumbersome and is a reason not to use it extensively for now. I believe there are efforts to embed the type information in the standard .rb files, and that the .rbs is just an experiment to see how types could work out without introducing changes into the core Ruby language itself right now? <span class='inlinecode'>#Ruby</span> <span class='inlinecode'>#RakuLang</span></span><br />
+<br />
+<a class='textlink' href='https://github.com/ruby/rbs'>https://github.com/ruby/rbs</a><br />
+<br />
+<h3 style='display: inline' id='so-haskell-is-better-suited-for-general-'>So, <span class='inlinecode'>#Haskell</span> is better suited for general ...</h3><br />
+<br />
+<span>So, <span class='inlinecode'>#Haskell</span> is better suited for general purpose than <span class='inlinecode'>#Rust</span>? I thought deploying something in Haskell means publishing an academic paper :-) Interesting rant about Rust, though:</span><br />
+<br />
+<a class='textlink' href='https://chrisdone.com/posts/rust/'>https://chrisdone.com/posts/rust/</a><br />
+<br />
+<h3 style='display: inline' id='at-first-functional-options-add-a-bit-of-'>At first, functional options add a bit of ...</h3><br />
+<br />
+<span>At first, functional options add a bit of boilerplate, but they turn out to be quite neat, especially when you have very long parameter lists that need to be made neat and tidy. <span class='inlinecode'>#golang</span></span><br />
+<br />
+<a class='textlink' href='https://www.calhoun.io/using-functional-options-instead-of-method-chaining-in-go/'>https://www.calhoun.io/using-func...instead-of-method-chaining-in-go/</a><br />
+<br />
+<h3 style='display: inline' id='revamping-my-home-lab-a-little-bit-freebsd-'>Revamping my home lab a little bit. <span class='inlinecode'>#freebsd</span> ...</h3><br />
+<br />
+<span>Revamping my home lab a little bit. <span class='inlinecode'>#freebsd</span> <span class='inlinecode'>#bhyve</span> <span class='inlinecode'>#rocky</span> <span class='inlinecode'>#linux</span> <span class='inlinecode'>#vm</span> <span class='inlinecode'>#k3s</span> <span class='inlinecode'>#kuberbetes</span> <span class='inlinecode'>#wireguard</span> <span class='inlinecode'>#zfs</span> <span class='inlinecode'>#nfs</span> <span class='inlinecode'>#ha</span> <span class='inlinecode'>#relayd</span> <span class='inlinecode'>#k8s</span> <span class='inlinecode'>#selfhosting</span> <span class='inlinecode'>#self</span>-hosting <span class='inlinecode'>#homelab</span> <span class='inlinecode'>#home</span>-lab</span><br />
+<br />
+<a class='textlink' href='https://foo.zone/gemfeed/2024-11-17-f3s-kubernetes-with-freebsd-part-1.html'>https://foo.zone/gemfeed/2024-11-...bernetes-with-freebsd-part-1.html</a><br />
+<br />
+<h3 style='display: inline' id='revamping-my-home-lab-a-little-bit-freebsd-'>Revamping my home lab a little bit. <span class='inlinecode'>#freebsd</span> ...</h3><br />
+<br />
+<span>Revamping my home lab a little bit. <span class='inlinecode'>#freebsd</span> <span class='inlinecode'>#bhyve</span> <span class='inlinecode'>#rocky</span> <span class='inlinecode'>#linux</span> <span class='inlinecode'>#vm</span> <span class='inlinecode'>#k3s</span> <span class='inlinecode'>#kubernetes</span> <span class='inlinecode'>#wireguard</span> <span class='inlinecode'>#zfs</span> <span class='inlinecode'>#nfs</span> <span class='inlinecode'>#ha</span> <span class='inlinecode'>#relayd</span> <span class='inlinecode'>#k8s</span> <span class='inlinecode'>#selfhosting</span> <span class='inlinecode'>#homelab</span></span><br />
+<br />
+<a class='textlink' href='https://foo.zone/gemfeed/2024-11-17-f3s-kubernetes-with-freebsd-part-1.html'>https://foo.zone/gemfeed/2024-11-...bernetes-with-freebsd-part-1.html</a><br />
+<br />
+<h3 style='display: inline' id='wondering-to-which-web-browser-i-should-'>Wondering to which <span class='inlinecode'>#web</span> <span class='inlinecode'>#browser</span> I should ...</h3><br />
+<br />
+<span>Wondering to which <span class='inlinecode'>#web</span> <span class='inlinecode'>#browser</span> I should switch now personally ...</span><br />
+<br />
+<a class='textlink' href='https://www.osnews.com/story/141100/mozilla-foundation-lays-off-30-of-its-employees-ends-advocacy-for-open-web-privacy-and-more/'>https://www.osnews.com/story/1411...cy-for-open-web-privacy-and-more/</a><br />
+<br />
+<h3 style='display: inline' id='eks-node-viewer-is-a-nifty-tool-showing-the-'>eks-node-viewer is a nifty tool, showing the ...</h3><br />
+<br />
+<span>eks-node-viewer is a nifty tool, showing the compute nodes currently in use in the <span class='inlinecode'>#EKS</span> cluster. especially useful when dynamically allocating nodes with <span class='inlinecode'>#karpenter</span> or auto scaling groups.</span><br />
+<br />
+<a class='textlink' href='https://github.com/awslabs/eks-node-viewer'>https://github.com/awslabs/eks-node-viewer</a><br />
+<br />
+<h3 style='display: inline' id='have-put-more-photos-on---on-my-static-photo-'>Have put more Photos on - On my static photo ...</h3><br />
+<br />
+<span>Have put more Photos on - On my static photo sites - Generated with a <span class='inlinecode'>#bash</span> script</span><br />
+<br />
+<a class='textlink' href='https://irregular.ninja'>https://irregular.ninja</a><br />
+<br />
+<h3 style='display: inline' id='in-go-passing-pointers-are-not-automatically-'>In Go, passing pointers are not automatically ...</h3><br />
+<br />
+<span>In Go, passing pointers are not automatically faster than values. Pointers often force the memory to be allocated on the heap, adding GC overhad. With values, Go can determine whether to put the memory on the stack instead. But with large structs/objects (how you want to call them) or if you want to modify state, then pointers are the semantic to use. <span class='inlinecode'>#golang</span></span><br />
+<br />
+<a class='textlink' href='https://blog.boot.dev/golang/pointers-faster-than-values/'>https://blog.boot.dev/golang/pointers-faster-than-values/</a><br />
+<br />
+<h3 style='display: inline' id='myself-being-part-of-an-on-call-rotations-over-'>Myself being part of an on-call rotations over ...</h3><br />
+<br />
+<span>Myself being part of an on-call rotations over my whole professional life, just have learned this lesson "Tell people who are new to on-call: Just have fun" :-) This is a neat blog post to read:</span><br />
+<br />
+<a class='textlink' href='https://ntietz.com/blog/what-i-tell-people-new-to-oncall/'>https://ntietz.com/blog/what-i-tell-people-new-to-oncall/</a><br />
+<br />
+<h3 style='display: inline' id='feels-good-to-code-in-my-old-love-perl-again-'>Feels good to code in my old love <span class='inlinecode'>#Perl</span> again ...</h3><br />
+<br />
+<span>Feels good to code in my old love <span class='inlinecode'>#Perl</span> again after a while. I am implementing a log parser for generating site stats of my personal homepage! :-) @Perl</span><br />
+<br />
+<h3 style='display: inline' id='this-is-an-interactive-summary-of-the-go-'>This is an interactive summary of the Go ...</h3><br />
+<br />
+<span>This is an interactive summary of the Go release, with a lot of examples utilising iterators in the slices and map packages. Love it! <span class='inlinecode'>#golang</span></span><br />
+<br />
+<a class='textlink' href='https://antonz.org/go-1-23/'>https://antonz.org/go-1-23/</a><br />
+<br />
+<h2 style='display: inline' id='december-2024'>December 2024</h2><br />
+<br />
+<h3 style='display: inline' id='thats-unexpected-you-cant-remove-a-nan-key-'>Thats unexpected, you cant remove a NaN key ...</h3><br />
+<br />
+<span>Thats unexpected, you cant remove a NaN key from a map without clearing it! <span class='inlinecode'>#golang</span></span><br />
+<br />
+<a class='textlink' href='https://unexpected-go.com/you-cant-remove-a-nan-key-from-a-map-without-clearing-it.html'>https://unexpected-go.com/you-can...om-a-map-without-clearing-it.html</a><br />
+<br />
+<h3 style='display: inline' id='my-second-blog-post-about-revamping-my-home-lab-'>My second blog post about revamping my home lab ...</h3><br />
+<br />
+<span>My second blog post about revamping my home lab a little bit just hit the net. <span class='inlinecode'>#FreeBSD</span> <span class='inlinecode'>#ZFS</span> <span class='inlinecode'>#n100</span> <span class='inlinecode'>#k8s</span> <span class='inlinecode'>#k3s</span> <span class='inlinecode'>#kubernetes</span></span><br />
+<br />
+<a class='textlink' href='https://foo.zone/gemfeed/2024-12-03-f3s-kubernetes-with-freebsd-part-2.html'>https://foo.zone/gemfeed/2024-12-...bernetes-with-freebsd-part-2.html</a><br />
+<br />
+<h3 style='display: inline' id='very-insightful-article-about-tech-hiring-in-'>Very insightful article about tech hiring in ...</h3><br />
+<br />
+<span>Very insightful article about tech hiring in the age of LLMs. As an interviewer, I have experienced some of the scrnarios already first hand...</span><br />
+<br />
+<a class='textlink' href='https://newsletter.pragmaticengineer.com/p/how-genai-changes-tech-hiring'>https://newsletter.pragmaticengin...m/p/how-genai-changes-tech-hiring</a><br />
+<br />
+<h3 style='display: inline' id='for-bpf-ebpf-performance-debugging-have-'>for <span class='inlinecode'>#bpf</span> <span class='inlinecode'>#ebpf</span> performance debugging, have ...</h3><br />
+<br />
+<span>for <span class='inlinecode'>#bpf</span> <span class='inlinecode'>#ebpf</span> performance debugging, have a look at bpftop from Netflix. A neat tool showing you the estimated CPU time and other performance statistics for all the BPF programs currently loaded into the <span class='inlinecode'>#linux</span> kernel. Highly recommend!</span><br />
+<br />
+<a class='textlink' href='https://github.com/Netflix/bpftop'>https://github.com/Netflix/bpftop</a><br />
+<br />
+<h3 style='display: inline' id='89-things-heshe-knows-about-git-commits-is-a-'>89 things he/she knows about Git commits is a ...</h3><br />
+<br />
+<span>89 things he/she knows about Git commits is a neat list of <span class='inlinecode'>#Git</span> wisdoms</span><br />
+<br />
+<a class='textlink' href='https://www.jvt.me/posts/2024/07/12/things-know-commits/'>https://www.jvt.me/posts/2024/07/12/things-know-commits/</a><br />
+<br />
+<h3 style='display: inline' id='i-found-that-working-on-multiple-side-projects-'>I found that working on multiple side projects ...</h3><br />
+<br />
+<span>I found that working on multiple side projects concurrently is better than concentrating on just one. This seems inefficient at first, but whenever you tend to lose motivation, you can temporarily switch to another one with full élan. However, remember to stop starting and start finishing. This doesn&#39;t mean you should be working on 10+ (and a growing list of) side projects concurrently! Select your projects and commit to finishing them before starting the next thing. For example, my current limit of concurrent side projects is around five.</span><br />
+<br />
+<h3 style='display: inline' id='agreed-agreed-besides-ruby-i-would-also-'>Agreed? Agreed. Besides <span class='inlinecode'>#Ruby</span>, I would also ...</h3><br />
+<br />
+<span>Agreed? Agreed. Besides <span class='inlinecode'>#Ruby</span>, I would also add <span class='inlinecode'>#RakuLang</span> and <span class='inlinecode'>#Perl</span> @Perl to the list of languages that are great for shell scripts - "Making Easy Things Easy and Hard Things Possible"</span><br />
+<br />
+<a class='textlink' href='https://lucasoshiro.github.io/posts-en/2024-06-17-ruby-shellscript/'>https://lucasoshiro.github.io/posts-en/2024-06-17-ruby-shellscript/</a><br />
+<br />
+<h3 style='display: inline' id='plan9-assembly-format-in-go-but-wait-it-s-not-'>Plan9 assembly format in Go, but wait, it&#39;s not ...</h3><br />
+<br />
+<span>Plan9 assembly format in Go, but wait, it&#39;s not the Operating System Plan9! <span class='inlinecode'>#golang</span> <span class='inlinecode'>#rabbithole</span></span><br />
+<br />
+<a class='textlink' href='https://www.osnews.com/story/140941/go-plan9-memo-speeding-up-calculations-450/'>https://www.osnews.com/story/1409...emo-speeding-up-calculations-450/</a><br />
+<br />
+<h3 style='display: inline' id='this-is-a-neat-blog-post-about-the-helix-text-'>This is a neat blog post about the Helix text ...</h3><br />
+<br />
+<span>This is a neat blog post about the Helix text editor, to which I personally switched around a year ago (from NeoVim). I should blog about my experience as well. To summarize: I am using it together with the terminal multiplexer <span class='inlinecode'>#tmux</span>. It doesn&#39;t bother me that Helix is purely terminal-based and therefore everything has to be in the same font. <span class='inlinecode'>#HelixEditor</span></span><br />
+<br />
+<a class='textlink' href='https://jonathan-frere.com/posts/helix/'>https://jonathan-frere.com/posts/helix/</a><br />
+<br />
+<h3 style='display: inline' id='this-blog-post-is-basically-a-rant-against-'>This blog post is basically a rant against ...</h3><br />
+<br />
+<span>This blog post is basically a rant against DataDog... Personally, I don&#39;t have much experience with DataDog (actually, I have never used it), but one reason to work with logs at my day job (with over 2,000 physical server machines) and to be cost-effective is by using dtail! <span class='inlinecode'>#dtail</span> <span class='inlinecode'>#logs</span> <span class='inlinecode'>#logmanagement</span></span><br />
+<br />
+<a class='textlink' href='https://crys.site/blog/2024/reinventint-the-weel/'>https://crys.site/blog/2024/reinventint-the-weel/</a><br />
+<a class='textlink' href='https://dtail.dev'>https://dtail.dev</a><br />
+<br />
+<h3 style='display: inline' id='quick-trick-to-get-helix-themes-selected-'>Quick trick to get Helix themes selected ...</h3><br />
+<br />
+<span>Quick trick to get Helix themes selected randomly <span class='inlinecode'>#HelixEditor</span></span><br />
+<br />
+<a class='textlink' href='https://foo.zone/gemfeed/2024-12-15-random-helix-themes.html'>https://foo.zone/gemfeed/2024-12-15-random-helix-themes.html</a><br />
+<br />
+<h3 style='display: inline' id='example-where-complexity-attacks-you-from-'>Example where complexity attacks you from ...</h3><br />
+<br />
+<span>Example where complexity attacks you from behind <span class='inlinecode'>#k8s</span> <span class='inlinecode'>#kubernetes</span> <span class='inlinecode'>#OpenAI</span></span><br />
+<br />
+<a class='textlink' href='https://surfingcomplexity.blog/2024/12/14/quick-takes-on-the-recent-openai-public-incident-write-up/'>https://surfingcomplexity.blog/20...-openai-public-incident-write-up/</a><br />
+<br />
+<h3 style='display: inline' id='llms-for-ops-summaries-of-logs-probabilities-'>LLMs for Ops? Summaries of logs, probabilities ...</h3><br />
+<br />
+<span>LLMs for Ops? Summaries of logs, probabilities about correctness, auto-generating Ansible, some uses cases are there. Wouldn&#39;t trust it fully, though.</span><br />
+<br />
+<a class='textlink' href='https://youtu.be/WodaffxVq-E?si=noY0egrfl5izCSQI'>https://youtu.be/WodaffxVq-E?si=noY0egrfl5izCSQI</a><br />
+<br />
+<h3 style='display: inline' id='excellent-article-about-your-dream-product-'>Excellent article about your dream Product ...</h3><br />
+<br />
+<span>Excellent article about your dream Product Manager: Why every software team needs a product manager to thrive via @wallabagapp</span><br />
+<br />
+<a class='textlink' href='https://testdouble.com/insights/why-product-managers-accelerate-improve-software-delivery'>https://testdouble.com/insights/w...elerate-improve-software-delivery</a><br />
+<br />
+<h3 style='display: inline' id='i-just-finished-reading-all-chapters-of-cpu-'>I just finished reading all chapters of CPU ...</h3><br />
+<br />
+<span>I just finished reading all chapters of CPU land: ... not claiming to remember every detail, but it is a great refresher how CPUs and operating systems actually work under the hood when you execute a program, which we tend to forget in our higher abstraction world. I liked the "story" and some of the jokes along the way! Size wise, it is pretty digestable (not talking about books, but only 7 web articles/chapters)! <span class='inlinecode'>#cpu</span> <span class='inlinecode'>#linux</span> <span class='inlinecode'>#unix</span> <span class='inlinecode'>#kernel</span> <span class='inlinecode'>#macOS</span></span><br />
+<br />
+<a class='textlink' href='https://cpu.land/'>https://cpu.land/</a><br />
+<br />
+<h3 style='display: inline' id='indeed-useful-to-know-this-stuff-sre-'>Indeed, useful to know this stuff! <span class='inlinecode'>#sre</span> ...</h3><br />
+<br />
+<span>Indeed, useful to know this stuff! <span class='inlinecode'>#sre</span></span><br />
+<br />
+<a class='textlink' href='https://biriukov.dev/docs/resolver-dual-stack-application/0-sre-should-know-about-gnu-linux-resolvers-and-dual-stack-applications/'>https://biriukov.dev/docs/resolve...vers-and-dual-stack-applications/</a><br />
+<br />
+<h3 style='display: inline' id='it-s-the-small-things-which-make-unix-like-'>It&#39;s the small things, which make Unix like ...</h3><br />
+<br />
+<span>It&#39;s the small things, which make Unix like systems, like GNU/Linux, interesting. Didn&#39;t know about this <span class='inlinecode'>#GNU</span> <span class='inlinecode'>#Tar</span> behaviour yet:</span><br />
+<br />
+<a class='textlink' href='https://xeiaso.net/notes/2024/pop-quiz-tar/&lt;nil&gt;15110'>https://xeiaso.net/notes/2024/pop-quiz-tar/<nil>15110</a><br />
+<p class="footer">
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
+served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
+<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
+</p>
+</body>
+</html>
diff --git a/gemfeed/atom.xml b/gemfeed/atom.xml
index 05bc3df2..ea39a1f6 100644
--- a/gemfeed/atom.xml
+++ b/gemfeed/atom.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
- <updated>2024-12-18T23:28:38+02:00</updated>
+ <updated>2024-12-29T23:48:55+02:00</updated>
<title>foo.zone feed</title>
<subtitle>To be in the .zone!</subtitle>
<link href="https://foo.zone/gemfeed/atom.xml" rel="self" />
@@ -243,9 +243,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">[</font><font color="#ff0000">paul@earth</font><font color="#F3E651">]~</font><font color="#ff0000">/Downloads</font><font color="#F3E651">%</font><font color="#ff0000"> sudo dd </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#F3E651">=</font><font color="#ff0000">FreeBSD-</font><font color="#bb00ff">14.1</font><font color="#ff0000">-RELEASE-amd</font><font color="#bb00ff">64</font><font color="#ff0000">-bootonly</font><font color="#F3E651">.</font><font color="#ff0000">iso </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#ff0000">of</font><font color="#F3E651">=</font><font color="#ff0000">/dev/sda </font><font color="#ff0000">conv</font><font color="#F3E651">=</font><font color="#ff0000">sync</font>
+<pre>[paul@earth]~/Downloads% sudo dd \
+ <b><u><font color="#000000">if</font></u></b>=FreeBSD-<font color="#000000">14.1</font>-RELEASE-amd<font color="#000000">64</font>-bootonly.iso \
+ of=/dev/sda conv=sync
</pre>
<br />
<span>Next, I plugged the Beelinks (one after another) into my monitor via HDMI (the resolution of the FreeBSD text console seems strangely stretched, as I am using the LG Dual Up monitor), connected Ethernet, an external USB keyboard, and the FreeBSD USB stick, and booted the devices up. With F7, I entered the boot menu and selected the USB stick for the FreeBSD installation.</span><br />
@@ -271,9 +271,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># freebsd-update fetch</font></i>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># freebsd-update install</font></i>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># freebsd-update reboot</font></i>
+<pre>root@f0:~ <i><font color="silver"># freebsd-update fetch</font></i>
+root@f0:~ <i><font color="silver"># freebsd-update install</font></i>
+root@f0:~ <i><font color="silver"># freebsd-update reboot</font></i>
</pre>
<br />
<span>I also added the following entries for the three FreeBSD boxes to the <span class='inlinecode'>/etc/hosts</span> file:</span><br />
@@ -281,11 +281,11 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># cat &lt;&lt;END &gt;&gt;/etc/hosts</font></i>
-<font color="#bb00ff">192.168</font><font color="#F3E651">.</font><font color="#bb00ff">1.130</font><font color="#ff0000"> f0 f0</font><font color="#F3E651">.</font><font color="#ff0000">lan f0</font><font color="#F3E651">.</font><font color="#ff0000">lan</font><font color="#F3E651">.</font><font color="#ff0000">buetow</font><font color="#F3E651">.</font><font color="#ff0000">org</font>
-<font color="#bb00ff">192.168</font><font color="#F3E651">.</font><font color="#bb00ff">1.131</font><font color="#ff0000"> f1 f1</font><font color="#F3E651">.</font><font color="#ff0000">lan f1</font><font color="#F3E651">.</font><font color="#ff0000">lan</font><font color="#F3E651">.</font><font color="#ff0000">buetow</font><font color="#F3E651">.</font><font color="#ff0000">org</font>
-<font color="#bb00ff">192.168</font><font color="#F3E651">.</font><font color="#bb00ff">1.132</font><font color="#ff0000"> f2 f2</font><font color="#F3E651">.</font><font color="#ff0000">lan f2</font><font color="#F3E651">.</font><font color="#ff0000">lan</font><font color="#F3E651">.</font><font color="#ff0000">buetow</font><font color="#F3E651">.</font><font color="#ff0000">org</font>
-<font color="#ff0000">END</font>
+<pre>root@f0:~ <i><font color="silver"># cat &lt;&lt;END &gt;&gt;/etc/hosts</font></i>
+<font color="#000000">192.168</font>.<font color="#000000">1.130</font> f0 f0.lan f0.lan.buetow.org
+<font color="#000000">192.168</font>.<font color="#000000">1.131</font> f1 f1.lan f1.lan.buetow.org
+<font color="#000000">192.168</font>.<font color="#000000">1.132</font> f2 f2.lan f2.lan.buetow.org
+END
</pre>
<br />
<h2 style='display: inline' id='after-install'>After install</h2><br />
@@ -296,7 +296,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># pkg install helix doas zfs-periodic uptimed</font></i>
+<pre>root@f0:~ <i><font color="silver"># pkg install helix doas zfs-periodic uptimed</font></i>
</pre>
<br />
<h3 style='display: inline' id='helix-editor'>Helix editor</h3><br />
@@ -313,7 +313,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># cp /usr/local/etc/doas.conf.sample /usr/local/etc/doas.conf</font></i>
+<pre>root@f0:~ <i><font color="silver"># cp /usr/local/etc/doas.conf.sample /usr/local/etc/doas.conf</font></i>
</pre>
<br />
<a class='textlink' href='https://man.openbsd.org/doas'>https://man.openbsd.org/doas</a><br />
@@ -326,24 +326,24 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc daily_zfs_snapshot_enable=YES</font></i>
-<font color="#ff0000">daily_zfs_snapshot_enable</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> YES</font>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc daily_zfs_snapshot_pools=zroot</font></i>
-<font color="#ff0000">daily_zfs_snapshot_pools</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> zroot</font>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc daily_zfs_snapshot_keep=7</font></i>
-<font color="#ff0000">daily_zfs_snapshot_keep</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#bb00ff">7</font>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc weekly_zfs_snapshot_enable=YES</font></i>
-<font color="#ff0000">weekly_zfs_snapshot_enable</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> YES</font>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc weekly_zfs_snapshot_pools=zroot</font></i>
-<font color="#ff0000">weekly_zfs_snapshot_pools</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> zroot</font>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc weekly_zfs_snapshot_keep=5</font></i>
-<font color="#ff0000">weekly_zfs_snapshot_keep</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#bb00ff">5</font>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc monthly_zfs_snapshot_enable=YES</font></i>
-<font color="#ff0000">monthly_zfs_snapshot_enable</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> YES</font>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc monthly_zfs_snapshot_pools=zroot</font></i>
-<font color="#ff0000">monthly_zfs_snapshot_pools</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> zroot</font>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc monthly_zfs_snapshot_keep=6</font></i>
-<font color="#ff0000">monthly_zfs_snapshot_keep</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">2</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#bb00ff">6</font>
+<pre>root@f0:~ <i><font color="silver"># sysrc daily_zfs_snapshot_enable=YES</font></i>
+daily_zfs_snapshot_enable: -&gt; YES
+root@f0:~ <i><font color="silver"># sysrc daily_zfs_snapshot_pools=zroot</font></i>
+daily_zfs_snapshot_pools: -&gt; zroot
+root@f0:~ <i><font color="silver"># sysrc daily_zfs_snapshot_keep=7</font></i>
+daily_zfs_snapshot_keep: -&gt; <font color="#000000">7</font>
+root@f0:~ <i><font color="silver"># sysrc weekly_zfs_snapshot_enable=YES</font></i>
+weekly_zfs_snapshot_enable: -&gt; YES
+root@f0:~ <i><font color="silver"># sysrc weekly_zfs_snapshot_pools=zroot</font></i>
+weekly_zfs_snapshot_pools: -&gt; zroot
+root@f0:~ <i><font color="silver"># sysrc weekly_zfs_snapshot_keep=5</font></i>
+weekly_zfs_snapshot_keep: -&gt; <font color="#000000">5</font>
+root@f0:~ <i><font color="silver"># sysrc monthly_zfs_snapshot_enable=YES</font></i>
+monthly_zfs_snapshot_enable: -&gt; YES
+root@f0:~ <i><font color="silver"># sysrc monthly_zfs_snapshot_pools=zroot</font></i>
+monthly_zfs_snapshot_pools: -&gt; zroot
+root@f0:~ <i><font color="silver"># sysrc monthly_zfs_snapshot_keep=6</font></i>
+monthly_zfs_snapshot_keep: <font color="#000000">2</font> -&gt; <font color="#000000">6</font>
</pre>
<br />
<a class='textlink' href='https://github.com/ross/zfs-periodic'>https://github.com/ross/zfs-periodic</a><br />
@@ -356,9 +356,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># cp /usr/local/mimecast/etc/uptimed.conf-dist \</font></i>
-<font color="#ff0000"> /usr/local/mimecast/etc/uptimed</font><font color="#F3E651">.</font><font color="#ff0000">conf </font>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># hx /usr/local/mimecast/etc/uptimed.conf</font></i>
+<pre>root@f0:~ <i><font color="silver"># cp /usr/local/mimecast/etc/uptimed.conf-dist \</font></i>
+ /usr/local/mimecast/etc/uptimed.conf
+root@f0:~ <i><font color="silver"># hx /usr/local/mimecast/etc/uptimed.conf</font></i>
</pre>
<br />
<span>In the Helix editor session, I changed <span class='inlinecode'>LOG_MAXIMUM_ENTRIES</span> to <span class='inlinecode'>0</span> to keep all uptime entries forever and not cut off at 50 (the default config). After that, I enabled and started <span class='inlinecode'>uptimed</span>:</span><br />
@@ -367,8 +367,8 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># service uptimed enable</font></i>
-<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># service uptimed start</font></i>
+<pre>root@f0:~ <i><font color="silver"># service uptimed enable</font></i>
+root@f0:~ <i><font color="silver"># service uptimed start</font></i>
</pre>
<br />
<span>To check the current uptime stats, I can now run <span class='inlinecode'>uprecords</span>:</span><br />
@@ -377,15 +377,15 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000"> root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># uprecords</font></i>
-<font color="#ff0000"> </font><i><font color="#ababab"># Uptime | System Boot up</font></i>
-<font color="#ff0000">----------------------------</font><font color="#F3E651">+</font><font color="#ff0000">---------------------------------------------------</font>
-<font color="#ff0000">-</font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#bb00ff">1</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#ff0000"> days</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">00</font><font color="#F3E651">:</font><font color="#bb00ff">07</font><font color="#F3E651">:</font><font color="#bb00ff">34</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> FreeBSD </font><font color="#bb00ff">14.1</font><font color="#ff0000">-RELEASE Mon Dec </font><font color="#bb00ff">2</font><font color="#ff0000"> </font><font color="#bb00ff">12</font><font color="#F3E651">:</font><font color="#bb00ff">21</font><font color="#F3E651">:</font><font color="#bb00ff">44</font><font color="#ff0000"> </font><font color="#bb00ff">2024</font>
-<font color="#ff0000">----------------------------</font><font color="#F3E651">+</font><font color="#ff0000">---------------------------------------------------</font>
-<font color="#ff0000">NewRec </font><font color="#bb00ff">0</font><font color="#ff0000"> days</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">00</font><font color="#F3E651">:</font><font color="#bb00ff">07</font><font color="#F3E651">:</font><font color="#bb00ff">33</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> since Mon Dec </font><font color="#bb00ff">2</font><font color="#ff0000"> </font><font color="#bb00ff">12</font><font color="#F3E651">:</font><font color="#bb00ff">21</font><font color="#F3E651">:</font><font color="#bb00ff">44</font><font color="#ff0000"> </font><font color="#bb00ff">2024</font>
-<font color="#ff0000"> up </font><font color="#bb00ff">0</font><font color="#ff0000"> days</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">00</font><font color="#F3E651">:</font><font color="#bb00ff">07</font><font color="#F3E651">:</font><font color="#bb00ff">34</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> since Mon Dec </font><font color="#bb00ff">2</font><font color="#ff0000"> </font><font color="#bb00ff">12</font><font color="#F3E651">:</font><font color="#bb00ff">21</font><font color="#F3E651">:</font><font color="#bb00ff">44</font><font color="#ff0000"> </font><font color="#bb00ff">2024</font>
-<font color="#ff0000"> down </font><font color="#bb00ff">0</font><font color="#ff0000"> days</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">00</font><font color="#F3E651">:</font><font color="#bb00ff">00</font><font color="#F3E651">:</font><font color="#bb00ff">00</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> since Mon Dec </font><font color="#bb00ff">2</font><font color="#ff0000"> </font><font color="#bb00ff">12</font><font color="#F3E651">:</font><font color="#bb00ff">21</font><font color="#F3E651">:</font><font color="#bb00ff">44</font><font color="#ff0000"> </font><font color="#bb00ff">2024</font>
-<font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000">up </font><font color="#bb00ff">100.000</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> since Mon Dec </font><font color="#bb00ff">2</font><font color="#ff0000"> </font><font color="#bb00ff">12</font><font color="#F3E651">:</font><font color="#bb00ff">21</font><font color="#F3E651">:</font><font color="#bb00ff">44</font><font color="#ff0000"> </font><font color="#bb00ff">2024</font>
+<pre> root@f0:~ <i><font color="silver"># uprecords</font></i>
+ <i><font color="silver"># Uptime | System Boot up</font></i>
+----------------------------+---------------------------------------------------
+-&gt; <font color="#000000">1</font> <font color="#000000">0</font> days, <font color="#000000">00</font>:<font color="#000000">07</font>:<font color="#000000">34</font> | FreeBSD <font color="#000000">14.1</font>-RELEASE Mon Dec <font color="#000000">2</font> <font color="#000000">12</font>:<font color="#000000">21</font>:<font color="#000000">44</font> <font color="#000000">2024</font>
+----------------------------+---------------------------------------------------
+NewRec <font color="#000000">0</font> days, <font color="#000000">00</font>:<font color="#000000">07</font>:<font color="#000000">33</font> | since Mon Dec <font color="#000000">2</font> <font color="#000000">12</font>:<font color="#000000">21</font>:<font color="#000000">44</font> <font color="#000000">2024</font>
+ up <font color="#000000">0</font> days, <font color="#000000">00</font>:<font color="#000000">07</font>:<font color="#000000">34</font> | since Mon Dec <font color="#000000">2</font> <font color="#000000">12</font>:<font color="#000000">21</font>:<font color="#000000">44</font> <font color="#000000">2024</font>
+ down <font color="#000000">0</font> days, <font color="#000000">00</font>:<font color="#000000">00</font>:<font color="#000000">00</font> | since Mon Dec <font color="#000000">2</font> <font color="#000000">12</font>:<font color="#000000">21</font>:<font color="#000000">44</font> <font color="#000000">2024</font>
+ %up <font color="#000000">100.000</font> | since Mon Dec <font color="#000000">2</font> <font color="#000000">12</font>:<font color="#000000">21</font>:<font color="#000000">44</font> <font color="#000000">2024</font>
</pre>
<br />
<span>This is how I track the uptimes for all of my host:</span><br />
@@ -403,17 +403,17 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">paul@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000"> ifconfig re0</font>
-<font color="#ff0000">re0</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#ff0000">flags</font><font color="#F3E651">=</font><font color="#bb00ff">1008843</font><font color="#F3E651">&lt;</font><font color="#ff0000">UP</font><font color="#F3E651">,</font><font color="#ff0000">BROADCAST</font><font color="#F3E651">,</font><font color="#ff0000">RUNNING</font><font color="#F3E651">,</font><font color="#ff0000">SIMPLEX</font><font color="#F3E651">,</font><font color="#ff0000">MULTICAST</font><font color="#F3E651">,</font><font color="#ff0000">LOWER_UP</font><font color="#F3E651">&gt;</font><font color="#ff0000"> metric </font><font color="#bb00ff">0</font><font color="#ff0000"> mtu </font><font color="#bb00ff">1500</font>
-<font color="#ff0000"> </font><font color="#ff0000">options</font><font color="#F3E651">=</font><font color="#ff0000">8209b</font><font color="#F3E651">&lt;</font><font color="#ff0000">RXCSUM</font><font color="#F3E651">,</font><font color="#ff0000">TXCSUM</font><font color="#F3E651">,</font><font color="#ff0000">VLAN_MTU</font><font color="#F3E651">,</font><font color="#ff0000">VLAN_HWTAGGING</font><font color="#F3E651">,</font><font color="#ff0000">VLAN_HWCSUM</font><font color="#F3E651">,</font><font color="#ff0000">WOL_MAGIC</font><font color="#F3E651">,</font><font color="#ff0000">LINKSTATE</font><font color="#F3E651">&gt;</font>
-<font color="#ff0000"> ether e8</font><font color="#F3E651">:</font><font color="#ff0000">ff</font><font color="#F3E651">:</font><font color="#ff0000">1e</font><font color="#F3E651">:</font><font color="#ff0000">d7</font><font color="#F3E651">:</font><font color="#ff0000">1c</font><font color="#F3E651">:</font><font color="#ff0000">ac</font>
-<font color="#ff0000"> inet </font><font color="#bb00ff">192.168</font><font color="#F3E651">.</font><font color="#bb00ff">1.130</font><font color="#ff0000"> netmask </font><font color="#bb00ff">0xffffff00</font><font color="#ff0000"> broadcast </font><font color="#bb00ff">192.168</font><font color="#F3E651">.</font><font color="#bb00ff">1.255</font>
-<font color="#ff0000"> inet6 fe80</font><font color="#F3E651">::</font><font color="#ff0000">eaff</font><font color="#F3E651">:</font><font color="#ff0000">1eff</font><font color="#F3E651">:</font><font color="#ff0000">fed7</font><font color="#F3E651">:</font><font color="#ff0000">1cac</font><font color="#F3E651">%</font><font color="#ff0000">re0 prefixlen </font><font color="#bb00ff">64</font><font color="#ff0000"> scopeid </font><font color="#bb00ff">0x1</font>
-<font color="#ff0000"> inet6 fd22</font><font color="#F3E651">:</font><font color="#ff0000">c702</font><font color="#F3E651">:</font><font color="#ff0000">acb7</font><font color="#F3E651">:</font><font color="#bb00ff">0</font><font color="#F3E651">:</font><font color="#ff0000">eaff</font><font color="#F3E651">:</font><font color="#ff0000">1eff</font><font color="#F3E651">:</font><font color="#ff0000">fed7</font><font color="#F3E651">:</font><font color="#ff0000">1cac prefixlen </font><font color="#bb00ff">64</font><font color="#ff0000"> detached autoconf</font>
-<font color="#ff0000"> inet6 2a01</font><font color="#F3E651">:</font><font color="#ff0000">5a8</font><font color="#F3E651">:</font><font color="#bb00ff">304</font><font color="#F3E651">:</font><font color="#ff0000">1d5c</font><font color="#F3E651">:</font><font color="#ff0000">eaff</font><font color="#F3E651">:</font><font color="#ff0000">1eff</font><font color="#F3E651">:</font><font color="#ff0000">fed7</font><font color="#F3E651">:</font><font color="#ff0000">1cac prefixlen </font><font color="#bb00ff">64</font><font color="#ff0000"> autoconf pltime </font><font color="#bb00ff">10800</font><font color="#ff0000"> vltime </font><font color="#bb00ff">14400</font>
-<font color="#ff0000"> media</font><font color="#F3E651">:</font><font color="#ff0000"> Ethernet autoselect </font><font color="#F3E651">(</font><font color="#ff0000">1000baseT </font><font color="#F3E651">&lt;</font><font color="#ff0000">full-duplex</font><font color="#F3E651">&gt;)</font>
-<font color="#ff0000"> status</font><font color="#F3E651">:</font><font color="#ff0000"> active</font>
-<font color="#ff0000"> nd6 </font><font color="#ff0000">options</font><font color="#F3E651">=</font><font color="#bb00ff">23</font><font color="#F3E651">&lt;</font><font color="#ff0000">PERFORMNUD</font><font color="#F3E651">,</font><font color="#ff0000">ACCEPT_RTADV</font><font color="#F3E651">,</font><font color="#ff0000">AUTO_LINKLOCAL</font><font color="#F3E651">&gt;</font>
+<pre>paul@f0:~ % ifconfig re0
+re0: flags=<font color="#000000">1008843</font>&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP&gt; metric <font color="#000000">0</font> mtu <font color="#000000">1500</font>
+ options=8209b&lt;RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,LINKSTATE&gt;
+ ether e8:ff:1e:d7:1c:ac
+ inet <font color="#000000">192.168</font>.<font color="#000000">1.130</font> netmask <font color="#000000">0xffffff00</font> broadcast <font color="#000000">192.168</font>.<font color="#000000">1.255</font>
+ inet6 fe80::eaff:1eff:fed7:1cac%re0 prefixlen <font color="#000000">64</font> scopeid <font color="#000000">0x1</font>
+ inet6 fd22:c702:acb7:<font color="#000000">0</font>:eaff:1eff:fed7:1cac prefixlen <font color="#000000">64</font> detached autoconf
+ inet6 2a01:5a8:<font color="#000000">304</font>:1d5c:eaff:1eff:fed7:1cac prefixlen <font color="#000000">64</font> autoconf pltime <font color="#000000">10800</font> vltime <font color="#000000">14400</font>
+ media: Ethernet autoselect (1000baseT &lt;full-duplex&gt;)
+ status: active
+ nd6 options=<font color="#000000">23</font>&lt;PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL&gt;
</pre>
<br />
<h2 style='display: inline' id='ram'>RAM</h2><br />
@@ -424,8 +424,8 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">paul@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000"> sysctl hw</font><font color="#F3E651">.</font><font color="#ff0000">physmem</font>
-<font color="#ff0000">hw</font><font color="#F3E651">.</font><font color="#ff0000">physmem</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">16902905856</font>
+<pre>paul@f0:~ % sysctl hw.physmem
+hw.physmem: <font color="#000000">16902905856</font>
</pre>
<br />
@@ -437,11 +437,11 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">paul@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000"> sysctl dev</font><font color="#F3E651">.</font><font color="#ff0000">cpu </font><font color="#F3E651">|</font><font color="#ff0000"> grep freq</font><font color="#F3E651">:</font>
-<font color="#ff0000">dev</font><font color="#F3E651">.</font><font color="#ff0000">cpu</font><font color="#F3E651">.</font><font color="#bb00ff">3</font><font color="#F3E651">.</font><font color="#ff0000">freq</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">705</font>
-<font color="#ff0000">dev</font><font color="#F3E651">.</font><font color="#ff0000">cpu</font><font color="#F3E651">.</font><font color="#bb00ff">2</font><font color="#F3E651">.</font><font color="#ff0000">freq</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">705</font>
-<font color="#ff0000">dev</font><font color="#F3E651">.</font><font color="#ff0000">cpu</font><font color="#F3E651">.</font><font color="#bb00ff">1</font><font color="#F3E651">.</font><font color="#ff0000">freq</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">604</font>
-<font color="#ff0000">dev</font><font color="#F3E651">.</font><font color="#ff0000">cpu</font><font color="#F3E651">.</font><font color="#bb00ff">0</font><font color="#F3E651">.</font><font color="#ff0000">freq</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">604</font>
+<pre>paul@f0:~ % sysctl dev.cpu | grep freq:
+dev.cpu.<font color="#000000">3</font>.freq: <font color="#000000">705</font>
+dev.cpu.<font color="#000000">2</font>.freq: <font color="#000000">705</font>
+dev.cpu.<font color="#000000">1</font>.freq: <font color="#000000">604</font>
+dev.cpu.<font color="#000000">0</font>.freq: <font color="#000000">604</font>
</pre>
<br />
<h2 style='display: inline' id='cpu-throttling'>CPU throttling</h2><br />
@@ -452,14 +452,14 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">paul@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000"> doas pkg install ubench</font>
-<font color="#ff0000">paul@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000"> rehash </font><i><font color="#ababab"># For tcsh to find the newly installed command</font></i>
-<font color="#ff0000">paul@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000"> ubench </font><font color="#F3E651">&amp;</font>
-<font color="#ff0000">paul@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000"> sysctl dev</font><font color="#F3E651">.</font><font color="#ff0000">cpu </font><font color="#F3E651">|</font><font color="#ff0000"> grep freq</font><font color="#F3E651">:</font>
-<font color="#ff0000">dev</font><font color="#F3E651">.</font><font color="#ff0000">cpu</font><font color="#F3E651">.</font><font color="#bb00ff">3</font><font color="#F3E651">.</font><font color="#ff0000">freq</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">2922</font>
-<font color="#ff0000">dev</font><font color="#F3E651">.</font><font color="#ff0000">cpu</font><font color="#F3E651">.</font><font color="#bb00ff">2</font><font color="#F3E651">.</font><font color="#ff0000">freq</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">2922</font>
-<font color="#ff0000">dev</font><font color="#F3E651">.</font><font color="#ff0000">cpu</font><font color="#F3E651">.</font><font color="#bb00ff">1</font><font color="#F3E651">.</font><font color="#ff0000">freq</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">2923</font>
-<font color="#ff0000">dev</font><font color="#F3E651">.</font><font color="#ff0000">cpu</font><font color="#F3E651">.</font><font color="#bb00ff">0</font><font color="#F3E651">.</font><font color="#ff0000">freq</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">2922</font>
+<pre>paul@f0:~ % doas pkg install ubench
+paul@f0:~ % rehash <i><font color="silver"># For tcsh to find the newly installed command</font></i>
+paul@f0:~ % ubench &amp;
+paul@f0:~ % sysctl dev.cpu | grep freq:
+dev.cpu.<font color="#000000">3</font>.freq: <font color="#000000">2922</font>
+dev.cpu.<font color="#000000">2</font>.freq: <font color="#000000">2922</font>
+dev.cpu.<font color="#000000">1</font>.freq: <font color="#000000">2923</font>
+dev.cpu.<font color="#000000">0</font>.freq: <font color="#000000">2922</font>
</pre>
<br />
<span>Idle, all three Beelinks plus the switch consumed 26.2W. But with <span class='inlinecode'>ubench</span> stressing all the CPUs, it went up to 38.8W.</span><br />
@@ -910,7 +910,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">declare</font></b><font color="#ff0000"> -xr </font><font color="#ff0000">HTML_THEME_DIR</font><font color="#F3E651">=.</font><font color="#ff0000">/extras/html/themes/simple</font>
+<pre><b><u><font color="#000000">declare</font></u></b> -xr HTML_THEME_DIR=./extras/html/themes/simple
</pre>
<br />
<span>To customize the theme or create your own, simply copy the theme directory and modify it as needed. This makes it also much easier to switch between layouts.</span><br />
@@ -1431,11 +1431,11 @@ jgs \\`_..---.Y.---.._`//
<br />
<ul>
<li><a href='#the-stoic-challenge-book-notes'>"The Stoic Challenge" book notes</a></li>
-<li>⇢ <a href='#got-sets-you-up-for-a-challenge'>Got sets you up for a challenge</a></li>
+<li>⇢ <a href='#god-sets-you-up-for-a-challenge'>God sets you up for a challenge</a></li>
<li>⇢ <a href='#negative-visualization'>Negative visualization</a></li>
<li>⇢ <a href='#oh-nice-trick-you-stoic-god--'>Oh, nice trick, you stoic "god"! ;-)</a></li>
</ul><br />
-<h2 style='display: inline' id='got-sets-you-up-for-a-challenge'>Got sets you up for a challenge</h2><br />
+<h2 style='display: inline' id='god-sets-you-up-for-a-challenge'>God sets you up for a challenge</h2><br />
<br />
<span>Gods set you up for a challenge to see how resilient you are. Is getting angry worth the price? If you stay calm then you can find the optimal workaround for the obstacle. Stay calm even with big setbacks. Practice minimalism of negative emotions.</span><br />
<br />
@@ -1535,38 +1535,38 @@ WHOA!! ( o.o )
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> traceroute bad</font><font color="#F3E651">.</font><font color="#ff0000">horse</font>
-<font color="#ff0000">traceroute to bad</font><font color="#F3E651">.</font><font color="#ff0000">horse </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.157</font><font color="#F3E651">),</font><font color="#ff0000"> </font><font color="#bb00ff">30</font><font color="#ff0000"> hops max</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">60</font><font color="#ff0000"> byte packets</font>
-<font color="#ff0000"> </font><font color="#bb00ff">1</font><font color="#ff0000"> dsldevice</font><font color="#F3E651">.</font><font color="#ff0000">lan </font><font color="#F3E651">(</font><font color="#bb00ff">192.168</font><font color="#F3E651">.</font><font color="#bb00ff">1.1</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">5.712</font><font color="#ff0000"> ms </font><font color="#bb00ff">5.800</font><font color="#ff0000"> ms </font><font color="#bb00ff">6.466</font><font color="#ff0000"> ms</font>
-<font color="#ff0000"> </font><font color="#bb00ff">2</font><font color="#ff0000"> </font><font color="#bb00ff">87</font><font color="#ff0000">-</font><font color="#bb00ff">243</font><font color="#ff0000">-</font><font color="#bb00ff">116</font><font color="#ff0000">-</font><font color="#bb00ff">2</font><font color="#F3E651">.</font><font color="#ff0000">ip</font><font color="#F3E651">.</font><font color="#ff0000">btc-net</font><font color="#F3E651">.</font><b><font color="#ffffff">bg</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#bb00ff">87.243</font><font color="#F3E651">.</font><font color="#bb00ff">116.2</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">8.017</font><font color="#ff0000"> ms </font><font color="#bb00ff">7.506</font><font color="#ff0000"> ms </font><font color="#bb00ff">8.432</font><font color="#ff0000"> ms</font>
-<font color="#ff0000"> </font><font color="#bb00ff">3</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
-<font color="#ff0000"> </font><font color="#bb00ff">4</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
-<font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#ff0000"> xe-</font><font color="#bb00ff">1</font><font color="#ff0000">-</font><font color="#bb00ff">2</font><font color="#ff0000">-</font><font color="#bb00ff">0</font><font color="#F3E651">.</font><font color="#ff0000">mpr1</font><font color="#F3E651">.</font><font color="#ff0000">fra4</font><font color="#F3E651">.</font><font color="#ff0000">de</font><font color="#F3E651">.</font><font color="#ff0000">above</font><font color="#F3E651">.</font><font color="#ff0000">net </font><font color="#F3E651">(</font><font color="#bb00ff">80.81</font><font color="#F3E651">.</font><font color="#bb00ff">194.26</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">39.952</font><font color="#ff0000"> ms </font><font color="#bb00ff">40.155</font><font color="#ff0000"> ms </font><font color="#bb00ff">40.139</font><font color="#ff0000"> ms</font>
-<font color="#ff0000"> </font><font color="#bb00ff">6</font><font color="#ff0000"> ae12</font><font color="#F3E651">.</font><font color="#ff0000">cs1</font><font color="#F3E651">.</font><font color="#ff0000">fra6</font><font color="#F3E651">.</font><font color="#ff0000">de</font><font color="#F3E651">.</font><font color="#ff0000">eth</font><font color="#F3E651">.</font><font color="#ff0000">zayo</font><font color="#F3E651">.</font><font color="#ff0000">com </font><font color="#F3E651">(</font><font color="#bb00ff">64.125</font><font color="#F3E651">.</font><font color="#bb00ff">26.172</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">128.014</font><font color="#ff0000"> ms </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
-<font color="#ff0000"> </font><font color="#bb00ff">7</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
-<font color="#ff0000"> </font><font color="#bb00ff">8</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
-<font color="#ff0000"> </font><font color="#bb00ff">9</font><font color="#ff0000"> ae10</font><font color="#F3E651">.</font><font color="#ff0000">cs1</font><font color="#F3E651">.</font><font color="#ff0000">lhr15</font><font color="#F3E651">.</font><font color="#ff0000">uk</font><font color="#F3E651">.</font><font color="#ff0000">eth</font><font color="#F3E651">.</font><font color="#ff0000">zayo</font><font color="#F3E651">.</font><font color="#ff0000">com </font><font color="#F3E651">(</font><font color="#bb00ff">64.125</font><font color="#F3E651">.</font><font color="#bb00ff">29.17</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">120.625</font><font color="#ff0000"> ms </font><font color="#bb00ff">121.117</font><font color="#ff0000"> ms </font><font color="#bb00ff">121.050</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">10</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
-<font color="#bb00ff">11</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
-<font color="#bb00ff">12</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
-<font color="#bb00ff">13</font><font color="#ff0000"> ae5</font><font color="#F3E651">.</font><font color="#ff0000">mpr1</font><font color="#F3E651">.</font><font color="#ff0000">tor3</font><font color="#F3E651">.</font><font color="#ff0000">ca</font><font color="#F3E651">.</font><font color="#ff0000">zip</font><font color="#F3E651">.</font><font color="#ff0000">zayo</font><font color="#F3E651">.</font><font color="#ff0000">com </font><font color="#F3E651">(</font><font color="#bb00ff">64.125</font><font color="#F3E651">.</font><font color="#bb00ff">23.118</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">192.605</font><font color="#ff0000"> ms </font><font color="#bb00ff">205.741</font><font color="#ff0000"> ms </font><font color="#bb00ff">203.607</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">14</font><font color="#ff0000"> </font><font color="#bb00ff">64.124</font><font color="#F3E651">.</font><font color="#bb00ff">217.237</font><font color="#F3E651">.</font><font color="#ff0000">IDIA-</font><font color="#bb00ff">265104</font><font color="#ff0000">-ZYO</font><font color="#F3E651">.</font><font color="#ff0000">zip</font><font color="#F3E651">.</font><font color="#ff0000">zayo</font><font color="#F3E651">.</font><font color="#ff0000">com </font><font color="#F3E651">(</font><font color="#bb00ff">64.124</font><font color="#F3E651">.</font><font color="#bb00ff">217.237</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">204.673</font><font color="#ff0000"> ms </font><font color="#bb00ff">134.674</font><font color="#ff0000"> ms </font><font color="#bb00ff">131.442</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">15</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
-<font color="#bb00ff">16</font><font color="#ff0000"> </font><font color="#bb00ff">67.223</font><font color="#F3E651">.</font><font color="#bb00ff">96.90</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#bb00ff">67.223</font><font color="#F3E651">.</font><font color="#bb00ff">96.90</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">128.245</font><font color="#ff0000"> ms </font><font color="#bb00ff">127.844</font><font color="#ff0000"> ms </font><font color="#bb00ff">127.843</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">17</font><font color="#ff0000"> bad</font><font color="#F3E651">.</font><font color="#ff0000">horse </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.130</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">128.194</font><font color="#ff0000"> ms </font><font color="#bb00ff">122.854</font><font color="#ff0000"> ms </font><font color="#bb00ff">121.786</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">18</font><font color="#ff0000"> bad</font><font color="#F3E651">.</font><font color="#ff0000">horse </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.131</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">128.831</font><font color="#ff0000"> ms </font><font color="#bb00ff">128.341</font><font color="#ff0000"> ms </font><font color="#bb00ff">186.559</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">19</font><font color="#ff0000"> bad</font><font color="#F3E651">.</font><font color="#ff0000">horse </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.132</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">185.716</font><font color="#ff0000"> ms </font><font color="#bb00ff">180.121</font><font color="#ff0000"> ms </font><font color="#bb00ff">180.042</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">20</font><font color="#ff0000"> bad</font><font color="#F3E651">.</font><font color="#ff0000">horse </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.133</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">203.170</font><font color="#ff0000"> ms </font><font color="#bb00ff">203.076</font><font color="#ff0000"> ms </font><font color="#bb00ff">203.168</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">21</font><font color="#ff0000"> he</font><font color="#F3E651">.</font><font color="#ff0000">rides</font><font color="#F3E651">.</font><font color="#ff0000">across</font><font color="#F3E651">.</font><font color="#ff0000">the</font><font color="#F3E651">.</font><font color="#ff0000">nation </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.134</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">203.115</font><font color="#ff0000"> ms </font><font color="#bb00ff">141.830</font><font color="#ff0000"> ms </font><font color="#bb00ff">141.799</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">22</font><font color="#ff0000"> the</font><font color="#F3E651">.</font><font color="#ff0000">thoroughbred</font><font color="#F3E651">.</font><font color="#ff0000">of</font><font color="#F3E651">.</font><font color="#ff0000">sin </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.135</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">147.965</font><font color="#ff0000"> ms </font><font color="#bb00ff">148.230</font><font color="#ff0000"> ms </font><font color="#bb00ff">170.478</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">23</font><font color="#ff0000"> he</font><font color="#F3E651">.</font><font color="#ff0000">got</font><font color="#F3E651">.</font><font color="#ff0000">the</font><font color="#F3E651">.</font><font color="#ff0000">application </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.136</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">165.161</font><font color="#ff0000"> ms </font><font color="#bb00ff">164.939</font><font color="#ff0000"> ms </font><font color="#bb00ff">159.085</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">24</font><font color="#ff0000"> that</font><font color="#F3E651">.</font><font color="#ff0000">you</font><font color="#F3E651">.</font><font color="#ff0000">just</font><font color="#F3E651">.</font><font color="#ff0000">sent</font><font color="#F3E651">.</font><b><font color="#ffffff">in</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.137</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">162.310</font><font color="#ff0000"> ms </font><font color="#bb00ff">158.569</font><font color="#ff0000"> ms </font><font color="#bb00ff">158.896</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">25</font><font color="#ff0000"> it</font><font color="#F3E651">.</font><font color="#ff0000">needs</font><font color="#F3E651">.</font><font color="#ff0000">evaluation </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.138</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">162.927</font><font color="#ff0000"> ms </font><font color="#bb00ff">163.046</font><font color="#ff0000"> ms </font><font color="#bb00ff">163.085</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">26</font><font color="#ff0000"> so</font><font color="#F3E651">.</font><b><font color="#ffffff">let</font></b><font color="#F3E651">.</font><font color="#ff0000">the</font><font color="#F3E651">.</font><font color="#ff0000">games</font><font color="#F3E651">.</font><font color="#ff0000">begin </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.139</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">233.363</font><font color="#ff0000"> ms </font><font color="#bb00ff">233.545</font><font color="#ff0000"> ms </font><font color="#bb00ff">233.317</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">27</font><font color="#ff0000"> a</font><font color="#F3E651">.</font><font color="#ff0000">heinous</font><font color="#F3E651">.</font><font color="#ff0000">crime </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.140</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">237.745</font><font color="#ff0000"> ms </font><font color="#bb00ff">233.614</font><font color="#ff0000"> ms </font><font color="#bb00ff">233.740</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">28</font><font color="#ff0000"> a</font><font color="#F3E651">.</font><font color="#ff0000">show</font><font color="#F3E651">.</font><font color="#ff0000">of</font><font color="#F3E651">.</font><font color="#ff0000">force </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.141</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">237.974</font><font color="#ff0000"> ms </font><font color="#bb00ff">176.085</font><font color="#ff0000"> ms </font><font color="#bb00ff">175.927</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">29</font><font color="#ff0000"> a</font><font color="#F3E651">.</font><font color="#ff0000">murder</font><font color="#F3E651">.</font><font color="#ff0000">would</font><font color="#F3E651">.</font><font color="#ff0000">be</font><font color="#F3E651">.</font><font color="#ff0000">nice</font><font color="#F3E651">.</font><font color="#ff0000">of</font><font color="#F3E651">.</font><font color="#ff0000">course </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.142</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">181.838</font><font color="#ff0000"> ms </font><font color="#bb00ff">181.858</font><font color="#ff0000"> ms </font><font color="#bb00ff">182.059</font><font color="#ff0000"> ms</font>
-<font color="#bb00ff">30</font><font color="#ff0000"> bad</font><font color="#F3E651">.</font><font color="#ff0000">horse </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.143</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">187.731</font><font color="#ff0000"> ms </font><font color="#bb00ff">187.416</font><font color="#ff0000"> ms </font><font color="#bb00ff">187.532</font><font color="#ff0000"> ms</font>
+<pre>% traceroute bad.horse
+traceroute to bad.horse (<font color="#000000">162.252</font>.<font color="#000000">205.157</font>), <font color="#000000">30</font> hops max, <font color="#000000">60</font> byte packets
+ <font color="#000000">1</font> dsldevice.lan (<font color="#000000">192.168</font>.<font color="#000000">1.1</font>) <font color="#000000">5.712</font> ms <font color="#000000">5.800</font> ms <font color="#000000">6.466</font> ms
+ <font color="#000000">2</font> <font color="#000000">87</font>-<font color="#000000">243</font>-<font color="#000000">116</font>-<font color="#000000">2</font>.ip.btc-net.<b><u><font color="#000000">bg</font></u></b> (<font color="#000000">87.243</font>.<font color="#000000">116.2</font>) <font color="#000000">8.017</font> ms <font color="#000000">7.506</font> ms <font color="#000000">8.432</font> ms
+ <font color="#000000">3</font> * * *
+ <font color="#000000">4</font> * * *
+ <font color="#000000">5</font> xe-<font color="#000000">1</font>-<font color="#000000">2</font>-<font color="#000000">0</font>.mpr1.fra4.de.above.net (<font color="#000000">80.81</font>.<font color="#000000">194.26</font>) <font color="#000000">39.952</font> ms <font color="#000000">40.155</font> ms <font color="#000000">40.139</font> ms
+ <font color="#000000">6</font> ae12.cs1.fra6.de.eth.zayo.com (<font color="#000000">64.125</font>.<font color="#000000">26.172</font>) <font color="#000000">128.014</font> ms * *
+ <font color="#000000">7</font> * * *
+ <font color="#000000">8</font> * * *
+ <font color="#000000">9</font> ae10.cs1.lhr15.uk.eth.zayo.com (<font color="#000000">64.125</font>.<font color="#000000">29.17</font>) <font color="#000000">120.625</font> ms <font color="#000000">121.117</font> ms <font color="#000000">121.050</font> ms
+<font color="#000000">10</font> * * *
+<font color="#000000">11</font> * * *
+<font color="#000000">12</font> * * *
+<font color="#000000">13</font> ae5.mpr1.tor3.ca.zip.zayo.com (<font color="#000000">64.125</font>.<font color="#000000">23.118</font>) <font color="#000000">192.605</font> ms <font color="#000000">205.741</font> ms <font color="#000000">203.607</font> ms
+<font color="#000000">14</font> <font color="#000000">64.124</font>.<font color="#000000">217.237</font>.IDIA-<font color="#000000">265104</font>-ZYO.zip.zayo.com (<font color="#000000">64.124</font>.<font color="#000000">217.237</font>) <font color="#000000">204.673</font> ms <font color="#000000">134.674</font> ms <font color="#000000">131.442</font> ms
+<font color="#000000">15</font> * * *
+<font color="#000000">16</font> <font color="#000000">67.223</font>.<font color="#000000">96.90</font> (<font color="#000000">67.223</font>.<font color="#000000">96.90</font>) <font color="#000000">128.245</font> ms <font color="#000000">127.844</font> ms <font color="#000000">127.843</font> ms
+<font color="#000000">17</font> bad.horse (<font color="#000000">162.252</font>.<font color="#000000">205.130</font>) <font color="#000000">128.194</font> ms <font color="#000000">122.854</font> ms <font color="#000000">121.786</font> ms
+<font color="#000000">18</font> bad.horse (<font color="#000000">162.252</font>.<font color="#000000">205.131</font>) <font color="#000000">128.831</font> ms <font color="#000000">128.341</font> ms <font color="#000000">186.559</font> ms
+<font color="#000000">19</font> bad.horse (<font color="#000000">162.252</font>.<font color="#000000">205.132</font>) <font color="#000000">185.716</font> ms <font color="#000000">180.121</font> ms <font color="#000000">180.042</font> ms
+<font color="#000000">20</font> bad.horse (<font color="#000000">162.252</font>.<font color="#000000">205.133</font>) <font color="#000000">203.170</font> ms <font color="#000000">203.076</font> ms <font color="#000000">203.168</font> ms
+<font color="#000000">21</font> he.rides.across.the.nation (<font color="#000000">162.252</font>.<font color="#000000">205.134</font>) <font color="#000000">203.115</font> ms <font color="#000000">141.830</font> ms <font color="#000000">141.799</font> ms
+<font color="#000000">22</font> the.thoroughbred.of.sin (<font color="#000000">162.252</font>.<font color="#000000">205.135</font>) <font color="#000000">147.965</font> ms <font color="#000000">148.230</font> ms <font color="#000000">170.478</font> ms
+<font color="#000000">23</font> he.got.the.application (<font color="#000000">162.252</font>.<font color="#000000">205.136</font>) <font color="#000000">165.161</font> ms <font color="#000000">164.939</font> ms <font color="#000000">159.085</font> ms
+<font color="#000000">24</font> that.you.just.sent.<b><u><font color="#000000">in</font></u></b> (<font color="#000000">162.252</font>.<font color="#000000">205.137</font>) <font color="#000000">162.310</font> ms <font color="#000000">158.569</font> ms <font color="#000000">158.896</font> ms
+<font color="#000000">25</font> it.needs.evaluation (<font color="#000000">162.252</font>.<font color="#000000">205.138</font>) <font color="#000000">162.927</font> ms <font color="#000000">163.046</font> ms <font color="#000000">163.085</font> ms
+<font color="#000000">26</font> so.<b><u><font color="#000000">let</font></u></b>.the.games.begin (<font color="#000000">162.252</font>.<font color="#000000">205.139</font>) <font color="#000000">233.363</font> ms <font color="#000000">233.545</font> ms <font color="#000000">233.317</font> ms
+<font color="#000000">27</font> a.heinous.crime (<font color="#000000">162.252</font>.<font color="#000000">205.140</font>) <font color="#000000">237.745</font> ms <font color="#000000">233.614</font> ms <font color="#000000">233.740</font> ms
+<font color="#000000">28</font> a.show.of.force (<font color="#000000">162.252</font>.<font color="#000000">205.141</font>) <font color="#000000">237.974</font> ms <font color="#000000">176.085</font> ms <font color="#000000">175.927</font> ms
+<font color="#000000">29</font> a.murder.would.be.nice.of.course (<font color="#000000">162.252</font>.<font color="#000000">205.142</font>) <font color="#000000">181.838</font> ms <font color="#000000">181.858</font> ms <font color="#000000">182.059</font> ms
+<font color="#000000">30</font> bad.horse (<font color="#000000">162.252</font>.<font color="#000000">205.143</font>) <font color="#000000">187.731</font> ms <font color="#000000">187.416</font> ms <font color="#000000">187.532</font> ms
</pre>
<br />
<h2 style='display: inline' id='2-ascii-cinema'>2. ASCII cinema</h2><br />
@@ -1594,20 +1594,20 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ababab">#include</font><font color="#ff0000"> </font><font color="#bb00ff">&lt;stdio.h&gt;</font>
+<pre><b><u><font color="#000000">#include</font></u></b> <font color="#808080">&lt;stdio.h&gt;</font>
-<b><font color="#F35E1E">int</font></b><font color="#ff0000"> </font><font color="#7bc710">main</font><font color="#F3E651">(</font><b><font color="#F35E1E">void</font></b><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><b><font color="#F35E1E">int</font></b><font color="#ff0000"> array</font><font color="#F3E651">[</font><font color="#bb00ff">5</font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> </font><font color="#bb00ff">1</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">2</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">3</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">4</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#F3E651">;</font>
+<b><font color="#000000">int</font></b> main(<b><font color="#000000">void</font></b>) {
+ <b><font color="#000000">int</font></b> array[<font color="#000000">5</font>] = { <font color="#000000">1</font>, <font color="#000000">2</font>, <font color="#000000">3</font>, <font color="#000000">4</font>, <font color="#000000">5</font> };
-<font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">int</font></b><font color="#ff0000"> i </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#F3E651">;</font><font color="#ff0000"> i </font><font color="#F3E651">&lt;</font><font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#F3E651">;</font><font color="#ff0000"> i</font><font color="#F3E651">++)</font>
-<font color="#ff0000"> </font><font color="#7bc710">printf</font><font color="#F3E651">(</font><font color="#bb00ff">"%d</font><font color="#ffffff">\n</font><font color="#bb00ff">"</font><font color="#F3E651">,</font><font color="#ff0000"> array</font><font color="#F3E651">[</font><font color="#ff0000">i</font><font color="#F3E651">]);</font>
+ <b><u><font color="#000000">for</font></u></b> (<b><font color="#000000">int</font></b> i = <font color="#000000">0</font>; i &lt; <font color="#000000">5</font>; i++)
+ printf(<font color="#808080">"%d</font>\n<font color="#808080">"</font>, array[i]);
-<font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">int</font></b><font color="#ff0000"> i </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#F3E651">;</font><font color="#ff0000"> i </font><font color="#F3E651">&lt;</font><font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#F3E651">;</font><font color="#ff0000"> i</font><font color="#F3E651">++)</font>
-<font color="#ff0000"> </font><font color="#7bc710">printf</font><font color="#F3E651">(</font><font color="#bb00ff">"%d</font><font color="#ffffff">\n</font><font color="#bb00ff">"</font><font color="#F3E651">,</font><font color="#ff0000"> i</font><font color="#F3E651">[</font><font color="#ff0000">array</font><font color="#F3E651">]);</font>
+ <b><u><font color="#000000">for</font></u></b> (<b><font color="#000000">int</font></b> i = <font color="#000000">0</font>; i &lt; <font color="#000000">5</font>; i++)
+ printf(<font color="#808080">"%d</font>\n<font color="#808080">"</font>, i[array]);
-<font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">int</font></b><font color="#ff0000"> i </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#F3E651">;</font><font color="#ff0000"> i </font><font color="#F3E651">&lt;</font><font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#F3E651">;</font><font color="#ff0000"> i</font><font color="#F3E651">++)</font>
-<font color="#ff0000"> </font><font color="#7bc710">printf</font><font color="#F3E651">(</font><font color="#bb00ff">"%d</font><font color="#ffffff">\n</font><font color="#bb00ff">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#F3E651">*(</font><font color="#ff0000">i </font><font color="#F3E651">+</font><font color="#ff0000"> array</font><font color="#F3E651">));</font>
-<font color="#F3E651">}</font>
+ <b><u><font color="#000000">for</font></u></b> (<b><font color="#000000">int</font></b> i = <font color="#000000">0</font>; i &lt; <font color="#000000">5</font>; i++)
+ printf(<font color="#808080">"%d</font>\n<font color="#808080">"</font>, *(i + array));
+}
</pre>
<br />
<h3 style='display: inline' id='5-variables-with-prefix-'>5. Variables with prefix <span class='inlinecode'>$</span></h3><br />
@@ -1618,20 +1618,20 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ababab">#include</font><font color="#ff0000"> </font><font color="#bb00ff">&lt;stdio.h&gt;</font>
+<pre><b><u><font color="#000000">#include</font></u></b> <font color="#808080">&lt;stdio.h&gt;</font>
-<b><font color="#F35E1E">int</font></b><font color="#ff0000"> </font><font color="#7bc710">main</font><font color="#F3E651">(</font><b><font color="#F35E1E">void</font></b><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><b><font color="#F35E1E">int</font></b><font color="#ff0000"> $array</font><font color="#F3E651">[</font><font color="#bb00ff">5</font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> </font><font color="#bb00ff">1</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">2</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">3</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">4</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#F3E651">;</font>
+<b><font color="#000000">int</font></b> main(<b><font color="#000000">void</font></b>) {
+ <b><font color="#000000">int</font></b> $array[<font color="#000000">5</font>] = { <font color="#000000">1</font>, <font color="#000000">2</font>, <font color="#000000">3</font>, <font color="#000000">4</font>, <font color="#000000">5</font> };
-<font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">int</font></b><font color="#ff0000"> $i </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#F3E651">;</font><font color="#ff0000"> $i </font><font color="#F3E651">&lt;</font><font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#F3E651">;</font><font color="#ff0000"> $i</font><font color="#F3E651">++)</font>
-<font color="#ff0000"> </font><font color="#7bc710">printf</font><font color="#F3E651">(</font><font color="#bb00ff">"%d</font><font color="#ffffff">\n</font><font color="#bb00ff">"</font><font color="#F3E651">,</font><font color="#ff0000"> $array</font><font color="#F3E651">[</font><font color="#ff0000">$i</font><font color="#F3E651">]);</font>
+ <b><u><font color="#000000">for</font></u></b> (<b><font color="#000000">int</font></b> $i = <font color="#000000">0</font>; $i &lt; <font color="#000000">5</font>; $i++)
+ printf(<font color="#808080">"%d</font>\n<font color="#808080">"</font>, $array[$i]);
-<font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">int</font></b><font color="#ff0000"> $i </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#F3E651">;</font><font color="#ff0000"> $i </font><font color="#F3E651">&lt;</font><font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#F3E651">;</font><font color="#ff0000"> $i</font><font color="#F3E651">++)</font>
-<font color="#ff0000"> </font><font color="#7bc710">printf</font><font color="#F3E651">(</font><font color="#bb00ff">"%d</font><font color="#ffffff">\n</font><font color="#bb00ff">"</font><font color="#F3E651">,</font><font color="#ff0000"> $i</font><font color="#F3E651">[</font><font color="#ff0000">$array</font><font color="#F3E651">]);</font>
+ <b><u><font color="#000000">for</font></u></b> (<b><font color="#000000">int</font></b> $i = <font color="#000000">0</font>; $i &lt; <font color="#000000">5</font>; $i++)
+ printf(<font color="#808080">"%d</font>\n<font color="#808080">"</font>, $i[$array]);
-<font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><b><font color="#F35E1E">int</font></b><font color="#ff0000"> $i </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#F3E651">;</font><font color="#ff0000"> $i </font><font color="#F3E651">&lt;</font><font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#F3E651">;</font><font color="#ff0000"> $i</font><font color="#F3E651">++)</font>
-<font color="#ff0000"> </font><font color="#7bc710">printf</font><font color="#F3E651">(</font><font color="#bb00ff">"%d</font><font color="#ffffff">\n</font><font color="#bb00ff">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#F3E651">*(</font><font color="#ff0000">$i </font><font color="#F3E651">+</font><font color="#ff0000"> $array</font><font color="#F3E651">));</font>
-<font color="#F3E651">}</font>
+ <b><u><font color="#000000">for</font></u></b> (<b><font color="#000000">int</font></b> $i = <font color="#000000">0</font>; $i &lt; <font color="#000000">5</font>; $i++)
+ printf(<font color="#808080">"%d</font>\n<font color="#808080">"</font>, *($i + $array));
+}
</pre>
<br />
<h2 style='display: inline' id='6-object-oriented-shell-scripts-using-ksh'>6. Object oriented shell scripts using <span class='inlinecode'>ksh</span></h2><br />
@@ -1642,40 +1642,40 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/ksh93</font></i>
-<font color="#ff0000"> </font>
-<b><font color="#ffffff">typeset</font></b><font color="#ff0000"> -T </font><font color="#ff0000">Point_t</font><font color="#F3E651">=(</font>
-<font color="#ff0000"> integer -h </font><font color="#bb00ff">'x coordinate'</font><font color="#ff0000"> </font><font color="#ff0000">x</font><font color="#F3E651">=</font><font color="#bb00ff">0</font>
-<font color="#ff0000"> integer -h </font><font color="#bb00ff">'y coordinate'</font><font color="#ff0000"> </font><font color="#ff0000">y</font><font color="#F3E651">=</font><font color="#bb00ff">0</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">typeset</font></b><font color="#ff0000"> -h </font><font color="#bb00ff">'point color'</font><font color="#ff0000"> </font><font color="#ff0000">color</font><font color="#F3E651">=</font><font color="#bb00ff">"red"</font>
-
-<font color="#ff0000"> </font><font color="#7bc710">function getcolor </font><font color="#ff0000">{</font>
-<font color="#ff0000"> print -r </font><font color="#ff0000">${_.color}</font>
-<font color="#ff0000"> }</font>
-
-<font color="#ff0000"> </font><font color="#7bc710">function setcolor </font><font color="#ff0000">{</font>
-<font color="#ff0000"> _</font><font color="#F3E651">.</font><font color="#ff0000">color</font><font color="#F3E651">=</font><font color="#ff0000">$1</font>
-<font color="#ff0000"> }</font>
-
-<font color="#ff0000"> </font><font color="#7bc710">setxy()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> _</font><font color="#F3E651">.</font><font color="#ff0000">x</font><font color="#F3E651">=</font><font color="#ff0000">$1</font><font color="#F3E651">;</font><font color="#ff0000"> _</font><font color="#F3E651">.</font><font color="#ff0000">y</font><font color="#F3E651">=</font><font color="#ff0000">$2</font>
-<font color="#ff0000"> }</font>
-
-<font color="#ff0000"> </font><font color="#7bc710">getxy()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> print -r </font><font color="#bb00ff">"(${_.x},${_.y})"</font>
-<font color="#ff0000"> }</font>
-<font color="#F3E651">)</font>
-<font color="#ff0000"> </font>
-<font color="#ff0000">Point_t point</font>
-<font color="#ff0000"> </font>
-<font color="#ff0000">echo </font><font color="#bb00ff">"Initial coordinates are (${point.x},${point.y}). Color is ${point.color}"</font>
-<font color="#ff0000"> </font>
-<font color="#ff0000">point</font><font color="#F3E651">.</font><font color="#ff0000">setxy </font><font color="#bb00ff">5</font><font color="#ff0000"> </font><font color="#bb00ff">6</font>
-<font color="#ff0000">point</font><font color="#F3E651">.</font><font color="#ff0000">setcolor blue</font>
-<font color="#ff0000"> </font>
-<font color="#ff0000">echo </font><font color="#bb00ff">"New coordinates are ${point.getxy}. Color is ${point.getcolor}"</font>
-<font color="#ff0000"> </font>
-<b><font color="#ffffff">exit</font></b><font color="#ff0000"> </font><font color="#bb00ff">0</font>
+<pre><i><font color="silver">#!/usr/bin/ksh93</font></i>
+
+<b><u><font color="#000000">typeset</font></u></b> -T Point_t=(
+ integer -h <font color="#808080">'x coordinate'</font> x=<font color="#000000">0</font>
+ integer -h <font color="#808080">'y coordinate'</font> y=<font color="#000000">0</font>
+ <b><u><font color="#000000">typeset</font></u></b> -h <font color="#808080">'point color'</font> color=<font color="#808080">"red"</font>
+
+ function getcolor {
+ print -r ${_.color}
+ }
+
+ function setcolor {
+ _.color=$1
+ }
+
+ setxy() {
+ _.x=$1; _.y=$2
+ }
+
+ getxy() {
+ print -r <font color="#808080">"(${_.x},${_.y})"</font>
+ }
+)
+
+Point_t point
+
+echo <font color="#808080">"Initial coordinates are (${point.x},${point.y}). Color is ${point.color}"</font>
+
+point.setxy <font color="#000000">5</font> <font color="#000000">6</font>
+point.setcolor blue
+
+echo <font color="#808080">"New coordinates are ${point.getxy}. Color is ${point.getcolor}"</font>
+
+<b><u><font color="#000000">exit</font></u></b> <font color="#000000">0</font>
</pre>
<br />
<a class='textlink' href='https://blog.fpmurphy.com/2010/05/ksh93-using-types-to-create-object-orientated-scripts.html'>Using types to create object oriented Korn shell 93 scripts</a><br />
@@ -1688,18 +1688,18 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">package</font></b><font color="#ff0000"> main</font>
+<pre><b><u><font color="#000000">package</font></u></b> main
-<b><font color="#ffffff">import</font></b><font color="#ff0000"> </font><font color="#bb00ff">"fmt"</font>
+<b><u><font color="#000000">import</font></u></b> <font color="#808080">"fmt"</font>
-<b><font color="#ffffff">func</font></b><font color="#ff0000"> </font><font color="#7bc710">main</font><font color="#F3E651">()</font><font color="#ff0000"> </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">var</font></b><font color="#ff0000"> i int</font>
-<font color="#ff0000"> f </font><font color="#F3E651">:=</font><font color="#ff0000"> </font><b><font color="#ffffff">func</font></b><font color="#F3E651">()</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000">int </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><font color="#F3E651">&amp;</font><font color="#ff0000">i</font>
-<font color="#ff0000"> </font><font color="#F3E651">}</font>
-<font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#7bc710">f</font><font color="#F3E651">()++</font>
-<font color="#ff0000"> fmt</font><font color="#F3E651">.</font><font color="#7bc710">Println</font><font color="#F3E651">(</font><font color="#ff0000">i</font><font color="#F3E651">)</font>
-<font color="#F3E651">}</font>
+<b><u><font color="#000000">func</font></u></b> main() {
+ <b><u><font color="#000000">var</font></u></b> i int
+ f := <b><u><font color="#000000">func</font></u></b>() *int {
+ <b><u><font color="#000000">return</font></u></b> &amp;i
+ }
+ *f()++
+ fmt.Println(i)
+}
</pre>
<br />
<a class='textlink' href='https://go.dev/play/p/sPRdyDvXefK?__s=mk8u899owb9yurl256gw'>Go playground</a><br />
@@ -1950,13 +1950,13 @@ jgs `-=========-`()
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">tm</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">tl</font><font color="#F3E651">=</font><font color="#bb00ff">'tmux list-sessions'</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">tn</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#ff0000">new</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">ta</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#ff0000">attach</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">tx</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#ff0000">remote</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">ts</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#ff0000">search</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">tssh</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#ff0000">cluster_ssh</font>
+<pre><b><u><font color="#000000">alias</font></u></b> tm=tmux
+<b><u><font color="#000000">alias</font></u></b> tl=<font color="#808080">'tmux list-sessions'</font>
+<b><u><font color="#000000">alias</font></u></b> tn=tmux::new
+<b><u><font color="#000000">alias</font></u></b> ta=tmux::attach
+<b><u><font color="#000000">alias</font></u></b> tx=tmux::remote
+<b><u><font color="#000000">alias</font></u></b> ts=tmux::search
+<b><u><font color="#000000">alias</font></u></b> tssh=tmux::cluster_ssh
</pre>
<br />
<span>Note all <span class='inlinecode'>tmux::...</span>; those are custom shell functions doing certain things, and they aren&#39;t part of the Tmux distribution. But let&#39;s run through every aliases one by one. </span><br />
@@ -1971,23 +1971,23 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab"># Create new session and if alread exists attach to it</font></i>
-<font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#7bc710">new ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">readonly</font></b><font color="#ff0000"> </font><font color="#ff0000">session</font><font color="#F3E651">=</font><font color="#ff0000">$1</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> </font><font color="#ff0000">date</font><font color="#F3E651">=</font><font color="#ff0000">date</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> where gdate </font><font color="#F3E651">&amp;&gt;</font><font color="#ff0000">/dev/null</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> </font><font color="#ff0000">date</font><font color="#F3E651">=</font><font color="#ff0000">gdate</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
-
-<font color="#ff0000"> tmux</font><font color="#F3E651">::</font><font color="#ff0000">cleanup_default</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> -z </font><font color="#bb00ff">"$session"</font><font color="#ff0000"> </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> tmux</font><font color="#F3E651">::</font><font color="#ff0000">new T</font><font color="#ff0000">$($date</font><font color="#ff0000"> </font><font color="#F3E651">+%</font><font color="#ff0000">s</font><font color="#F3E651">)</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">else</font></b>
-<font color="#ff0000"> tmux new-session -d -s </font><font color="#ff0000">$session</font>
-<font color="#ff0000"> tmux -</font><font color="#bb00ff">2</font><font color="#ff0000"> attach-session -t </font><font color="#ff0000">$session</font><font color="#ff0000"> </font><font color="#F3E651">||</font><font color="#ff0000"> tmux -</font><font color="#bb00ff">2</font><font color="#ff0000"> switch-client -t </font><font color="#ff0000">$session</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
-<font color="#ff0000">}</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">tn</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#ff0000">new</font>
+<pre><i><font color="silver"># Create new session and if alread exists attach to it</font></i>
+tmux::new () {
+ <b><u><font color="#000000">readonly</font></u></b> session=$1
+ <b><u><font color="#000000">local</font></u></b> date=date
+ <b><u><font color="#000000">if</font></u></b> where gdate &amp;&gt;/dev/null; <b><u><font color="#000000">then</font></u></b>
+ date=gdate
+ <b><u><font color="#000000">fi</font></u></b>
+
+ tmux::cleanup_default
+ <b><u><font color="#000000">if</font></u></b> [ -z <font color="#808080">"$session"</font> ]; <b><u><font color="#000000">then</font></u></b>
+ tmux::new T$($date +%s)
+ <b><u><font color="#000000">else</font></u></b>
+ tmux new-session -d -s $session
+ tmux -<font color="#000000">2</font> attach-session -t $session || tmux -<font color="#000000">2</font> switch-client -t $session
+ <b><u><font color="#000000">fi</font></u></b>
+}
+<b><u><font color="#000000">alias</font></u></b> tn=tmux::new
</pre>
<br />
<span>There is a lot going on here. Let&#39;s have a detailed look at what it is doing. As a note, the function relies on GNU Date, so MacOS is looking for the <span class='inlinecode'>gdate</span> commands to be available. Otherwise, it will fall back to <span class='inlinecode'>date</span>. You need to install GNU Date for Mac, as it isn&#39;t installed by default there. As I use Fedora Linux on my personal Laptop and a MacBook for work, I have to make it work for both.</span><br />
@@ -2002,14 +2002,14 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#7bc710">cleanup_default ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> s</font>
-<font color="#ff0000"> tmux list-sessions </font><font color="#F3E651">|</font><font color="#ff0000"> grep </font><font color="#bb00ff">'^T.*: '</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> grep -F -v attached </font><font color="#F3E651">|</font>
-<font color="#ff0000"> cut -d</font><font color="#F3E651">:</font><font color="#ff0000"> -f</font><font color="#bb00ff">1</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> </font><b><font color="#ffffff">while</font></b><font color="#ff0000"> </font><b><font color="#ffffff">read</font></b><font color="#ff0000"> -r s</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"Killing $s"</font>
-<font color="#ff0000"> tmux kill-session -t </font><font color="#bb00ff">"$s"</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">done</font></b>
-<font color="#ff0000">}</font>
+<pre>tmux::cleanup_default () {
+ <b><u><font color="#000000">local</font></u></b> s
+ tmux list-sessions | grep <font color="#808080">'^T.*: '</font> | grep -F -v attached |
+ cut -d: -f<font color="#000000">1</font> | <b><u><font color="#000000">while</font></u></b> <b><u><font color="#000000">read</font></u></b> -r s; <b><u><font color="#000000">do</font></u></b>
+ echo <font color="#808080">"Killing $s"</font>
+ tmux kill-session -t <font color="#808080">"$s"</font>
+ <b><u><font color="#000000">done</font></u></b>
+}
</pre>
<br />
<span>The cleanup function kills all open Tmux sessions that haven&#39;t been renamed properly yet—but only if they aren&#39;t attached (e.g., don&#39;t run in the foreground in any terminal). Cleaning them up automatically keeps my Tmux sessions as neat and tidy as possible. </span><br />
@@ -2026,16 +2026,16 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#7bc710">attach ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">readonly</font></b><font color="#ff0000"> </font><font color="#ff0000">session</font><font color="#F3E651">=</font><font color="#ff0000">$1</font>
-
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> -z </font><font color="#bb00ff">"$session"</font><font color="#ff0000"> </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> tmux attach-session </font><font color="#F3E651">||</font><font color="#ff0000"> tmux</font><font color="#F3E651">::</font><font color="#ff0000">new</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">else</font></b>
-<font color="#ff0000"> tmux attach-session -t </font><font color="#ff0000">$session</font><font color="#ff0000"> </font><font color="#F3E651">||</font><font color="#ff0000"> tmux</font><font color="#F3E651">::</font><font color="#ff0000">new </font><font color="#ff0000">$session</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
-<font color="#ff0000">}</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">ta</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#ff0000">attach</font>
+<pre>tmux::attach () {
+ <b><u><font color="#000000">readonly</font></u></b> session=$1
+
+ <b><u><font color="#000000">if</font></u></b> [ -z <font color="#808080">"$session"</font> ]; <b><u><font color="#000000">then</font></u></b>
+ tmux attach-session || tmux::new
+ <b><u><font color="#000000">else</font></u></b>
+ tmux attach-session -t $session || tmux::new $session
+ <b><u><font color="#000000">fi</font></u></b>
+}
+<b><u><font color="#000000">alias</font></u></b> ta=tmux::attach
</pre>
<br />
<span>If no session is specified (as the argument of the function), it will try to attach to the first open session. If no Tmux server is running, it will create a new one with <span class='inlinecode'>tmux::new</span>. Otherwise, with a session name given as the argument, it will attach to it. If unsuccessful (e.g., the session doesn&#39;t exist), it will be created and attached to.</span><br />
@@ -2048,12 +2048,12 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#7bc710">remote ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">readonly</font></b><font color="#ff0000"> </font><font color="#ff0000">server</font><font color="#F3E651">=</font><font color="#ff0000">$1</font>
-<font color="#ff0000"> tmux new -s </font><font color="#ff0000">$server</font><font color="#ff0000"> </font><font color="#bb00ff">"ssh -t $server 'tmux attach-session || tmux'"</font><font color="#ff0000"> </font><font color="#F3E651">||</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> tmux attach-session -d -t </font><font color="#ff0000">$server</font>
-<font color="#ff0000">}</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">tr</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#ff0000">remote</font>
+<pre>tmux::remote () {
+ <b><u><font color="#000000">readonly</font></u></b> server=$1
+ tmux new -s $server <font color="#808080">"ssh -t $server 'tmux attach-session || tmux'"</font> || \
+ tmux attach-session -d -t $server
+}
+<b><u><font color="#000000">alias</font></u></b> tr=tmux::remote
</pre>
<br />
<h3 style='display: inline' id='change-of-the-tmux-prefix-for-better-nesting'>Change of the Tmux prefix for better nesting</h3><br />
@@ -2076,15 +2076,15 @@ set-option -g prefix C-g
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#7bc710">search ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">session</font><font color="#F3E651">=</font><font color="#ff0000">$(</font><font color="#ff0000">tmux list-sessions </font><font color="#F3E651">|</font><font color="#ff0000"> fzf </font><font color="#F3E651">|</font><font color="#ff0000"> cut -d</font><font color="#F3E651">:</font><font color="#ff0000"> -f</font><font color="#bb00ff">1</font><font color="#F3E651">)</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> -z </font><font color="#bb00ff">"$TMUX"</font><font color="#ff0000"> </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> tmux attach-session -t </font><font color="#ff0000">$session</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">else</font></b>
-<font color="#ff0000"> tmux switch -t </font><font color="#ff0000">$session</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
-<font color="#ff0000">}</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">ts</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#ff0000">search</font>
+<pre>tmux::search () {
+ <b><u><font color="#000000">local</font></u></b> -r session=$(tmux list-sessions | fzf | cut -d: -f<font color="#000000">1</font>)
+ <b><u><font color="#000000">if</font></u></b> [ -z <font color="#808080">"$TMUX"</font> ]; <b><u><font color="#000000">then</font></u></b>
+ tmux attach-session -t $session
+ <b><u><font color="#000000">else</font></u></b>
+ tmux switch -t $session
+ <b><u><font color="#000000">fi</font></u></b>
+}
+<b><u><font color="#000000">alias</font></u></b> ts=tmux::search
</pre>
<br />
<span>All it does is list all currently open sessions in <span class='inlinecode'>fzf</span>, where one of them can be searched and selected through fuzzy find, and then either switch (if already inside a session) to the other session or attach to the other session (if not yet in Tmux).</span><br />
@@ -2111,15 +2111,15 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#7bc710">cluster_ssh ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> -f </font><font color="#bb00ff">"$1"</font><font color="#ff0000"> </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> tmux</font><font color="#F3E651">::</font><font color="#ff0000">tssh_from_file </font><font color="#ff0000">$1</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
+<pre>tmux::cluster_ssh () {
+ <b><u><font color="#000000">if</font></u></b> [ -f <font color="#808080">"$1"</font> ]; <b><u><font color="#000000">then</font></u></b>
+ tmux::tssh_from_file $1
+ <b><u><font color="#000000">return</font></u></b>
+ <b><u><font color="#000000">fi</font></u></b>
-<font color="#ff0000"> tmux</font><font color="#F3E651">::</font><font color="#ff0000">tssh_from_argument </font><font color="#ff0000">$@</font>
-<font color="#ff0000">}</font>
-<b><font color="#ffffff">alias</font></b><font color="#ff0000"> </font><font color="#ff0000">tssh</font><font color="#F3E651">=</font><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#ff0000">cluster_ssh</font>
+ tmux::tssh_from_argument $@
+}
+<b><u><font color="#000000">alias</font></u></b> tssh=tmux::cluster_ssh
</pre>
<br />
<span>This function is just a wrapper around the more complex <span class='inlinecode'>tmux::tssh_from_file</span> and <span class='inlinecode'>tmux::tssh_from_argument</span> functions, as you have learned already. Most of the magic happens there.</span><br />
@@ -2132,23 +2132,23 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#7bc710">tssh_from_argument ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">session</font><font color="#F3E651">=</font><font color="#ff0000">$1</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> </font><font color="#ff0000">first_server</font><font color="#F3E651">=</font><font color="#ff0000">$1</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b>
-
-<font color="#ff0000"> tmux new-session -d -s </font><font color="#ff0000">$session</font><font color="#ff0000"> </font><font color="#bb00ff">"ssh -t $first_server"</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">!</font><font color="#ff0000"> tmux list-session </font><font color="#F3E651">|</font><font color="#ff0000"> grep </font><font color="#bb00ff">"^$session:"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"Could not create session $session"</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><font color="#bb00ff">2</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
-
-<font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> server </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> </font><font color="#bb00ff">"${@[@]}"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b>
-<font color="#ff0000"> tmux split-window -t </font><font color="#ff0000">$session</font><font color="#ff0000"> </font><font color="#bb00ff">"tmux select-layout tiled; ssh -t $server"</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">done</font></b>
-
-<font color="#ff0000"> tmux setw -t </font><font color="#ff0000">$session</font><font color="#ff0000"> synchronize-panes on</font>
-<font color="#ff0000"> tmux -</font><font color="#bb00ff">2</font><font color="#ff0000"> attach-session -t </font><font color="#ff0000">$session</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> tmux -</font><font color="#bb00ff">2</font><font color="#ff0000"> switch-client -t </font><font color="#ff0000">$session</font>
-<font color="#ff0000">}</font>
+<pre>tmux::tssh_from_argument () {
+ <b><u><font color="#000000">local</font></u></b> -r session=$1; <b><u><font color="#000000">shift</font></u></b>
+ <b><u><font color="#000000">local</font></u></b> first_server=$1; <b><u><font color="#000000">shift</font></u></b>
+
+ tmux new-session -d -s $session <font color="#808080">"ssh -t $first_server"</font>
+ <b><u><font color="#000000">if</font></u></b> ! tmux list-session | grep <font color="#808080">"^$session:"</font>; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"Could not create session $session"</font>
+ <b><u><font color="#000000">return</font></u></b> <font color="#000000">2</font>
+ <b><u><font color="#000000">fi</font></u></b>
+
+ <b><u><font color="#000000">for</font></u></b> server <b><u><font color="#000000">in</font></u></b> <font color="#808080">"${@[@]}"</font>; <b><u><font color="#000000">do</font></u></b>
+ tmux split-window -t $session <font color="#808080">"tmux select-layout tiled; ssh -t $server"</font>
+ <b><u><font color="#000000">done</font></u></b>
+
+ tmux setw -t $session synchronize-panes on
+ tmux -<font color="#000000">2</font> attach-session -t $session | tmux -<font color="#000000">2</font> switch-client -t $session
+}
</pre>
<br />
<span>It expects at least two arguments. The first argument is the session name to create for the clustered SSH session. All other arguments are server hostnames or FQDNs to which to connect. The first one is used to make the initial session. All remaining ones are added to that session with <span class='inlinecode'>tmux split-window -t $session...</span>. At the end, we enable synchronized panes by default, so whenever you type, the commands will be sent to every SSH connection, thus allowing the neat ClusterSSH feature to run commands on multiple servers simultaneously. Once done, we attach (or switch, if already in Tmux) to it.</span><br />
@@ -2168,12 +2168,12 @@ bind-key P setw synchronize-panes on
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">tmux</font><font color="#F3E651">::</font><font color="#7bc710">tssh_from_file ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">serverlist</font><font color="#F3E651">=</font><font color="#ff0000">$1</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">session</font><font color="#F3E651">=</font><font color="#ff0000">$(</font><font color="#ff0000">basename </font><font color="#ff0000">$serverlist</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> cut -d</font><font color="#F3E651">.</font><font color="#ff0000"> -f</font><font color="#bb00ff">1</font><font color="#F3E651">)</font>
+<pre>tmux::tssh_from_file () {
+ <b><u><font color="#000000">local</font></u></b> -r serverlist=$1; <b><u><font color="#000000">shift</font></u></b>
+ <b><u><font color="#000000">local</font></u></b> -r session=$(basename $serverlist | cut -d. -f<font color="#000000">1</font>)
-<font color="#ff0000"> tmux</font><font color="#F3E651">::</font><font color="#ff0000">tssh_from_argument </font><font color="#ff0000">$session</font><font color="#ff0000"> </font><font color="#ff0000">$(</font><font color="#ff0000">awk </font><font color="#bb00ff">'{ print $1} '</font><font color="#ff0000"> </font><font color="#ff0000">$serverlist</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> sed </font><font color="#bb00ff">'s/.lan./.lan/g'</font><font color="#F3E651">)</font>
-<font color="#ff0000">}</font>
+ tmux::tssh_from_argument $session $(awk <font color="#808080">'{ print $1} '</font> $serverlist | sed <font color="#808080">'s/.lan./.lan/g'</font>)
+}
</pre>
<br />
<h3 style='display: inline' id='tssh-examples'><span class='inlinecode'>tssh</span> examples</h3><br />
@@ -2521,12 +2521,12 @@ Art by Laura Brown
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">Cluster </font><font color="#F3E651">:</font><font color="#ff0000">UK</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#F3E651">:</font><font color="#ff0000">uk01 </font><b><font color="#ffffff">do</font></b>
-<font color="#ff0000"> Customer</font><font color="#F3E651">.</font><font color="#ff0000">C1A1</font><font color="#F3E651">.</font><font color="#ff0000">segments</font><font color="#F3E651">.</font><font color="#ff0000">volumes</font><font color="#F3E651">.</font><font color="#ff0000">each </font><b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000">volume</font><font color="#F3E651">|</font>
-<font color="#ff0000"> puts volume</font><font color="#F3E651">.</font><font color="#ff0000">usage_stats</font>
-<font color="#ff0000"> volume</font><font color="#F3E651">.</font><font color="#ff0000">move_off! </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> volume</font><font color="#F3E651">.</font><font color="#ff0000">over_subscribed?</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">end</font></b>
-<b><font color="#ffffff">end</font></b>
+<pre>Cluster :UK, :uk01 <b><u><font color="#000000">do</font></u></b>
+ Customer.C1A1.segments.volumes.each <b><u><font color="#000000">do</font></u></b> |volume|
+ puts volume.usage_stats
+ volume.move_off! <b><u><font color="#000000">if</font></u></b> volume.over_subscribed?
+ <b><u><font color="#000000">end</font></u></b>
+<b><u><font color="#000000">end</font></u></b>
</pre>
<br />
<span>I am abandoning this project because my workplace has stopped the annual pet project competition, and I have other more important projects to work on at the moment.</span><br />
@@ -2900,38 +2900,38 @@ _____|_:_:_| (o)-(o) |_:_:_|--&#39;`-. ,--. ksh under-water (((\&#39;/
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/bin/ksh</font></i>
-
-<font color="#ff0000">ZONES_DIR</font><font color="#F3E651">=</font><font color="#ff0000">/var/nsd/zones/master</font><font color="#F3E651">/</font>
-<font color="#ff0000">DEFAULT_MASTER</font><font color="#F3E651">=</font><font color="#ff0000">fishfinger</font><font color="#F3E651">.</font><font color="#ff0000">buetow</font><font color="#F3E651">.</font><font color="#ff0000">org</font>
-<font color="#ff0000">DEFAULT_STANDBY</font><font color="#F3E651">=</font><font color="#ff0000">blowfish</font><font color="#F3E651">.</font><font color="#ff0000">buetow</font><font color="#F3E651">.</font><font color="#ff0000">org</font>
-
-<font color="#7bc710">determine_master_and_standby ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> </font><font color="#ff0000">master</font><font color="#F3E651">=</font><font color="#ff0000">$DEFAULT_MASTER</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> </font><font color="#ff0000">standby</font><font color="#F3E651">=</font><font color="#ff0000">$DEFAULT_STANDBY</font>
-
-<font color="#ff0000"> </font><font color="#F3E651">.</font>
-<font color="#ff0000"> </font><font color="#F3E651">.</font>
-<font color="#ff0000"> </font><font color="#F3E651">.</font>
-<font color="#ff0000"> </font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -i </font><font color="#ff0000">health_ok</font><font color="#F3E651">=</font><font color="#bb00ff">1</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">!</font><font color="#ff0000"> ftp -</font><font color="#bb00ff">4</font><font color="#ff0000"> -o - https</font><font color="#F3E651">://</font><font color="#ff0000">$master</font><font color="#ff0000">/index</font><font color="#F3E651">.</font><font color="#ff0000">txt </font><font color="#F3E651">|</font><font color="#ff0000"> grep -q </font><font color="#bb00ff">"Welcome to $master"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"https://$master/index.txt IPv4 health check failed"</font>
-<font color="#ff0000"> </font><font color="#ff0000">health_ok</font><font color="#F3E651">=</font><font color="#bb00ff">0</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">elif</font></b><font color="#ff0000"> </font><font color="#F3E651">!</font><font color="#ff0000"> ftp -</font><font color="#bb00ff">6</font><font color="#ff0000"> -o - https</font><font color="#F3E651">://</font><font color="#ff0000">$master</font><font color="#ff0000">/index</font><font color="#F3E651">.</font><font color="#ff0000">txt </font><font color="#F3E651">|</font><font color="#ff0000"> grep -q </font><font color="#bb00ff">"Welcome to $master"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"https://$master/index.txt IPv6 health check failed"</font>
-<font color="#ff0000"> </font><font color="#ff0000">health_ok</font><font color="#F3E651">=</font><font color="#bb00ff">0</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#ff0000">$health_ok</font><font color="#ff0000"> -eq </font><font color="#bb00ff">0</font><font color="#ff0000"> </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> </font><font color="#ff0000">tmp</font><font color="#F3E651">=</font><font color="#ff0000">$master</font>
-<font color="#ff0000"> </font><font color="#ff0000">master</font><font color="#F3E651">=</font><font color="#ff0000">$standby</font>
-<font color="#ff0000"> </font><font color="#ff0000">standby</font><font color="#F3E651">=</font><font color="#ff0000">$tmp</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
-
-<font color="#ff0000"> </font><font color="#F3E651">.</font>
-<font color="#ff0000"> </font><font color="#F3E651">.</font>
-<font color="#ff0000"> </font><font color="#F3E651">.</font>
-<font color="#ff0000">}</font>
+<pre><i><font color="silver">#!/bin/ksh</font></i>
+
+ZONES_DIR=/var/nsd/zones/master/
+DEFAULT_MASTER=fishfinger.buetow.org
+DEFAULT_STANDBY=blowfish.buetow.org
+
+determine_master_and_standby () {
+ <b><u><font color="#000000">local</font></u></b> master=$DEFAULT_MASTER
+ <b><u><font color="#000000">local</font></u></b> standby=$DEFAULT_STANDBY
+
+ .
+ .
+ .
+
+ <b><u><font color="#000000">local</font></u></b> -i health_ok=<font color="#000000">1</font>
+ <b><u><font color="#000000">if</font></u></b> ! ftp -<font color="#000000">4</font> -o - https://$master/index.txt | grep -q <font color="#808080">"Welcome to $master"</font>; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"https://$master/index.txt IPv4 health check failed"</font>
+ health_ok=<font color="#000000">0</font>
+ <b><u><font color="#000000">elif</font></u></b> ! ftp -<font color="#000000">6</font> -o - https://$master/index.txt | grep -q <font color="#808080">"Welcome to $master"</font>; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"https://$master/index.txt IPv6 health check failed"</font>
+ health_ok=<font color="#000000">0</font>
+ <b><u><font color="#000000">fi</font></u></b>
+ <b><u><font color="#000000">if</font></u></b> [ $health_ok -eq <font color="#000000">0</font> ]; <b><u><font color="#000000">then</font></u></b>
+ <b><u><font color="#000000">local</font></u></b> tmp=$master
+ master=$standby
+ standby=$tmp
+ <b><u><font color="#000000">fi</font></u></b>
+
+ .
+ .
+ .
+}
</pre>
<br />
<span>The failover scripts looks for the <span class='inlinecode'> ; Enable failover</span> string in the DNS zone files and swaps the <span class='inlinecode'>A</span> and <span class='inlinecode'>AAAA</span> records of the DNS entries accordingly:</span><br />
@@ -2940,42 +2940,42 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">fishfinger$ grep failover /var/nsd/zones/master/foo</font><font color="#F3E651">.</font><font color="#ff0000">zone</font><font color="#F3E651">.</font><font color="#ff0000">zone</font>
-<font color="#ff0000"> </font><font color="#bb00ff">300</font><font color="#ff0000"> IN A </font><font color="#bb00ff">46.23</font><font color="#F3E651">.</font><font color="#bb00ff">94.99</font><font color="#ff0000"> </font><font color="#F3E651">;</font><font color="#ff0000"> Enable failover</font>
-<font color="#ff0000"> </font><font color="#bb00ff">300</font><font color="#ff0000"> IN AAAA 2a03</font><font color="#F3E651">:</font><font color="#bb00ff">6000</font><font color="#F3E651">:</font><font color="#ff0000">6f67</font><font color="#F3E651">:</font><font color="#bb00ff">624</font><font color="#F3E651">::</font><font color="#bb00ff">99</font><font color="#ff0000"> </font><font color="#F3E651">;</font><font color="#ff0000"> Enable failover</font>
-<font color="#ff0000">www </font><font color="#bb00ff">300</font><font color="#ff0000"> IN A </font><font color="#bb00ff">46.23</font><font color="#F3E651">.</font><font color="#bb00ff">94.99</font><font color="#ff0000"> </font><font color="#F3E651">;</font><font color="#ff0000"> Enable failover</font>
-<font color="#ff0000">www </font><font color="#bb00ff">300</font><font color="#ff0000"> IN AAAA 2a03</font><font color="#F3E651">:</font><font color="#bb00ff">6000</font><font color="#F3E651">:</font><font color="#ff0000">6f67</font><font color="#F3E651">:</font><font color="#bb00ff">624</font><font color="#F3E651">::</font><font color="#bb00ff">99</font><font color="#ff0000"> </font><font color="#F3E651">;</font><font color="#ff0000"> Enable failover</font>
-<font color="#ff0000">standby </font><font color="#bb00ff">300</font><font color="#ff0000"> IN A </font><font color="#bb00ff">23.88</font><font color="#F3E651">.</font><font color="#bb00ff">35.144</font><font color="#ff0000"> </font><font color="#F3E651">;</font><font color="#ff0000"> Enable failover</font>
-<font color="#ff0000">standby </font><font color="#bb00ff">300</font><font color="#ff0000"> IN AAAA 2a01</font><font color="#F3E651">:</font><font color="#ff0000">4f8</font><font color="#F3E651">:</font><font color="#ff0000">c17</font><font color="#F3E651">:</font><font color="#ff0000">20f1</font><font color="#F3E651">::</font><font color="#bb00ff">42</font><font color="#ff0000"> </font><font color="#F3E651">;</font><font color="#ff0000"> Enable failover</font>
+<pre>fishfinger$ grep failover /var/nsd/zones/master/foo.zone.zone
+ <font color="#000000">300</font> IN A <font color="#000000">46.23</font>.<font color="#000000">94.99</font> ; Enable failover
+ <font color="#000000">300</font> IN AAAA 2a03:<font color="#000000">6000</font>:6f67:<font color="#000000">624</font>::<font color="#000000">99</font> ; Enable failover
+www <font color="#000000">300</font> IN A <font color="#000000">46.23</font>.<font color="#000000">94.99</font> ; Enable failover
+www <font color="#000000">300</font> IN AAAA 2a03:<font color="#000000">6000</font>:6f67:<font color="#000000">624</font>::<font color="#000000">99</font> ; Enable failover
+standby <font color="#000000">300</font> IN A <font color="#000000">23.88</font>.<font color="#000000">35.144</font> ; Enable failover
+standby <font color="#000000">300</font> IN AAAA 2a01:4f8:c17:20f1::<font color="#000000">42</font> ; Enable failover
</pre>
<br />
<!-- Generator: GNU source-highlight 3.1.9
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#7bc710">transform ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> sed -E </font><font color="#bb00ff">'</font>
-<font color="#bb00ff"> /IN A .*; Enable failover/ {</font>
-<font color="#bb00ff"> /^standby/! {</font>
-<font color="#bb00ff"> s/^(.*) 300 IN A (.*) ; (.*)/</font><font color="#ffffff">\1</font><font color="#bb00ff"> 300 IN A '</font><font color="#ff0000">$(</font><font color="#ff0000">cat /var/nsd/run/master_a</font><font color="#F3E651">)</font><font color="#bb00ff">' ; </font><font color="#ffffff">\3</font><font color="#bb00ff">/;</font>
-<font color="#bb00ff"> }</font>
-<font color="#bb00ff"> /^standby/ {</font>
-<font color="#bb00ff"> s/^(.*) 300 IN A (.*) ; (.*)/</font><font color="#ffffff">\1</font><font color="#bb00ff"> 300 IN A '</font><font color="#ff0000">$(</font><font color="#ff0000">cat /var/nsd/run/standby_a</font><font color="#F3E651">)</font><font color="#bb00ff">' ; </font><font color="#ffffff">\3</font><font color="#bb00ff">/;</font>
-<font color="#bb00ff"> }</font>
-<font color="#bb00ff"> }</font>
-<font color="#bb00ff"> /IN AAAA .*; Enable failover/ {</font>
-<font color="#bb00ff"> /^standby/! {</font>
-<font color="#bb00ff"> s/^(.*) 300 IN AAAA (.*) ; (.*)/</font><font color="#ffffff">\1</font><font color="#bb00ff"> 300 IN AAAA '</font><font color="#ff0000">$(</font><font color="#ff0000">cat /var/nsd/run/master_aaaa</font><font color="#F3E651">)</font><font color="#bb00ff">' ; </font><font color="#ffffff">\3</font><font color="#bb00ff">/;</font>
-<font color="#bb00ff"> }</font>
-<font color="#bb00ff"> /^standby/ {</font>
-<font color="#bb00ff"> s/^(.*) 300 IN AAAA (.*) ; (.*)/</font><font color="#ffffff">\1</font><font color="#bb00ff"> 300 IN AAAA '</font><font color="#ff0000">$(</font><font color="#ff0000">cat /var/nsd/run/standby_aaaa</font><font color="#F3E651">)</font><font color="#bb00ff">' ; </font><font color="#ffffff">\3</font><font color="#bb00ff">/;</font>
-<font color="#bb00ff"> }</font>
-<font color="#bb00ff"> }</font>
-<font color="#bb00ff"> / ; serial/ {</font>
-<font color="#bb00ff"> s/^( +) ([0-9]+) .*; (.*)/</font><font color="#ffffff">\1</font><font color="#bb00ff"> '</font><font color="#ff0000">$(</font><font color="#ff0000">date </font><font color="#F3E651">+%</font><font color="#ff0000">s</font><font color="#F3E651">)</font><font color="#bb00ff">' ; </font><font color="#ffffff">\3</font><font color="#bb00ff">/;</font>
-<font color="#bb00ff"> }</font>
-<font color="#bb00ff"> '</font>
-<font color="#ff0000">}</font>
+<pre>transform () {
+ sed -E <font color="#808080">'</font>
+<font color="#808080"> /IN A .*; Enable failover/ {</font>
+<font color="#808080"> /^standby/! {</font>
+<font color="#808080"> s/^(.*) 300 IN A (.*) ; (.*)/</font>\1<font color="#808080"> 300 IN A '</font>$(cat /var/nsd/run/master_a)<font color="#808080">' ; </font>\3<font color="#808080">/;</font>
+<font color="#808080"> }</font>
+<font color="#808080"> /^standby/ {</font>
+<font color="#808080"> s/^(.*) 300 IN A (.*) ; (.*)/</font>\1<font color="#808080"> 300 IN A '</font>$(cat /var/nsd/run/standby_a)<font color="#808080">' ; </font>\3<font color="#808080">/;</font>
+<font color="#808080"> }</font>
+<font color="#808080"> }</font>
+<font color="#808080"> /IN AAAA .*; Enable failover/ {</font>
+<font color="#808080"> /^standby/! {</font>
+<font color="#808080"> s/^(.*) 300 IN AAAA (.*) ; (.*)/</font>\1<font color="#808080"> 300 IN AAAA '</font>$(cat /var/nsd/run/master_aaaa)<font color="#808080">' ; </font>\3<font color="#808080">/;</font>
+<font color="#808080"> }</font>
+<font color="#808080"> /^standby/ {</font>
+<font color="#808080"> s/^(.*) 300 IN AAAA (.*) ; (.*)/</font>\1<font color="#808080"> 300 IN AAAA '</font>$(cat /var/nsd/run/standby_aaaa)<font color="#808080">' ; </font>\3<font color="#808080">/;</font>
+<font color="#808080"> }</font>
+<font color="#808080"> }</font>
+<font color="#808080"> / ; serial/ {</font>
+<font color="#808080"> s/^( +) ([0-9]+) .*; (.*)/</font>\1<font color="#808080"> '</font>$(date +%s)<font color="#808080">' ; </font>\3<font color="#808080">/;</font>
+<font color="#808080"> }</font>
+<font color="#808080"> '</font>
+}
</pre>
<br />
<span>After the failover, the script reloads <span class='inlinecode'>nsd</span> and performs a sanity check to see if DNS still works. If not, a rollback will be performed:</span><br />
@@ -2984,48 +2984,48 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#! Race condition !#</font></i>
-<font color="#ff0000"> </font>
-<b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> -f </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">bak </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> mv </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">bak </font><font color="#ff0000">$zone_file</font>
-<b><font color="#ffffff">fi</font></b>
-
-<font color="#ff0000">cat </font><font color="#ff0000">$zone_file</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> transform </font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">new</font><font color="#F3E651">.</font><font color="#ff0000">tmp </font>
-
-<font color="#ff0000">grep -v </font><font color="#bb00ff">' ; serial'</font><font color="#ff0000"> </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">new</font><font color="#F3E651">.</font><font color="#ff0000">tmp </font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">new</font><font color="#F3E651">.</font><font color="#ff0000">noserial</font><font color="#F3E651">.</font><font color="#ff0000">tmp</font>
-<font color="#ff0000">grep -v </font><font color="#bb00ff">' ; serial'</font><font color="#ff0000"> </font><font color="#ff0000">$zone_file</font><font color="#ff0000"> </font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">old</font><font color="#F3E651">.</font><font color="#ff0000">noserial</font><font color="#F3E651">.</font><font color="#ff0000">tmp</font>
-
-<font color="#ff0000">echo </font><font color="#bb00ff">"Has zone $zone_file changed?"</font>
-<b><font color="#ffffff">if</font></b><font color="#ff0000"> diff -u </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">old</font><font color="#F3E651">.</font><font color="#ff0000">noserial</font><font color="#F3E651">.</font><font color="#ff0000">tmp </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">new</font><font color="#F3E651">.</font><font color="#ff0000">noserial</font><font color="#F3E651">.</font><font color="#ff0000">tmp</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"The zone $zone_file hasn't changed"</font>
-<font color="#ff0000"> rm </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.*.</font><font color="#ff0000">tmp</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><font color="#bb00ff">0</font>
-<b><font color="#ffffff">fi</font></b>
-
-<font color="#ff0000">cp </font><font color="#ff0000">$zone_file</font><font color="#ff0000"> </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">bak</font>
-<font color="#ff0000">mv </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">new</font><font color="#F3E651">.</font><font color="#ff0000">tmp </font><font color="#ff0000">$zone_file</font>
-<font color="#ff0000">rm </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.*.</font><font color="#ff0000">tmp</font>
-<font color="#ff0000">echo </font><font color="#bb00ff">"Reloading nsd"</font>
-<font color="#ff0000">nsd-control reload</font>
-
-<b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">!</font><font color="#ff0000"> zone_is_ok </font><font color="#ff0000">$zone</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"Rolling back $zone_file changes"</font>
-<font color="#ff0000"> cp </font><font color="#ff0000">$zone_file</font><font color="#ff0000"> </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">invalid</font>
-<font color="#ff0000"> mv </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">bak </font><font color="#ff0000">$zone_file</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"Reloading nsd"</font>
-<font color="#ff0000"> nsd-control reload</font>
-<font color="#ff0000"> zone_is_ok </font><font color="#ff0000">$zone</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><font color="#bb00ff">3</font>
-<b><font color="#ffffff">fi</font></b>
-
-<b><font color="#ffffff">for</font></b><font color="#ff0000"> cleanup </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> invalid bak</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> -f </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">$cleanup</font><font color="#ff0000"> </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> rm </font><font color="#ff0000">$zone_file</font><font color="#F3E651">.</font><font color="#ff0000">$cleanup</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
-<b><font color="#ffffff">done</font></b>
-
-<font color="#ff0000">echo </font><font color="#bb00ff">"Failover of zone $zone to $MASTER completed"</font>
-<b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><font color="#bb00ff">1</font>
+<pre><i><font color="silver">#! Race condition !#</font></i>
+
+<b><u><font color="#000000">if</font></u></b> [ -f $zone_file.bak ]; <b><u><font color="#000000">then</font></u></b>
+ mv $zone_file.bak $zone_file
+<b><u><font color="#000000">fi</font></u></b>
+
+cat $zone_file | transform &gt; $zone_file.new.tmp
+
+grep -v <font color="#808080">' ; serial'</font> $zone_file.new.tmp &gt; $zone_file.new.noserial.tmp
+grep -v <font color="#808080">' ; serial'</font> $zone_file &gt; $zone_file.old.noserial.tmp
+
+echo <font color="#808080">"Has zone $zone_file changed?"</font>
+<b><u><font color="#000000">if</font></u></b> diff -u $zone_file.old.noserial.tmp $zone_file.new.noserial.tmp; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"The zone $zone_file hasn't changed"</font>
+ rm $zone_file.*.tmp
+ <b><u><font color="#000000">return</font></u></b> <font color="#000000">0</font>
+<b><u><font color="#000000">fi</font></u></b>
+
+cp $zone_file $zone_file.bak
+mv $zone_file.new.tmp $zone_file
+rm $zone_file.*.tmp
+echo <font color="#808080">"Reloading nsd"</font>
+nsd-control reload
+
+<b><u><font color="#000000">if</font></u></b> ! zone_is_ok $zone; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"Rolling back $zone_file changes"</font>
+ cp $zone_file $zone_file.invalid
+ mv $zone_file.bak $zone_file
+ echo <font color="#808080">"Reloading nsd"</font>
+ nsd-control reload
+ zone_is_ok $zone
+ <b><u><font color="#000000">return</font></u></b> <font color="#000000">3</font>
+<b><u><font color="#000000">fi</font></u></b>
+
+<b><u><font color="#000000">for</font></u></b> cleanup <b><u><font color="#000000">in</font></u></b> invalid bak; <b><u><font color="#000000">do</font></u></b>
+ <b><u><font color="#000000">if</font></u></b> [ -f $zone_file.$cleanup ]; <b><u><font color="#000000">then</font></u></b>
+ rm $zone_file.$cleanup
+ <b><u><font color="#000000">fi</font></u></b>
+<b><u><font color="#000000">done</font></u></b>
+
+echo <font color="#808080">"Failover of zone $zone to $MASTER completed"</font>
+<b><u><font color="#000000">return</font></u></b> <font color="#000000">1</font>
</pre>
<br />
<span>A non-zero return code (here, 3 when a rollback and 1 when a DNS failover was performed) will cause CRON to send an E-Mail with the whole script output.</span><br />
@@ -3082,13 +3082,13 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab"># Weekly auto-failover for Let's Encrypt automation</font></i>
-<b><font color="#ffffff">local</font></b><font color="#ff0000"> -i -r </font><font color="#ff0000">week_of_the_year</font><font color="#F3E651">=</font><font color="#ff0000">$(</font><font color="#ff0000">date </font><font color="#F3E651">+%</font><font color="#ff0000">U</font><font color="#F3E651">)</font>
-<b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#ff0000">$(</font><font color="#F3E651">(</font><font color="#ff0000"> week_of_the_year </font><font color="#F3E651">%</font><font color="#ff0000"> </font><font color="#bb00ff">2</font><font color="#ff0000"> </font><font color="#F3E651">))</font><font color="#ff0000"> -eq </font><font color="#bb00ff">0</font><font color="#ff0000"> </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> </font><font color="#ff0000">tmp</font><font color="#F3E651">=</font><font color="#ff0000">$master</font>
-<font color="#ff0000"> </font><font color="#ff0000">master</font><font color="#F3E651">=</font><font color="#ff0000">$standby</font>
-<font color="#ff0000"> </font><font color="#ff0000">standby</font><font color="#F3E651">=</font><font color="#ff0000">$tmp</font>
-<b><font color="#ffffff">fi</font></b>
+<pre><i><font color="silver"># Weekly auto-failover for Let's Encrypt automation</font></i>
+<b><u><font color="#000000">local</font></u></b> -i -r week_of_the_year=$(date +%U)
+<b><u><font color="#000000">if</font></u></b> [ $(( week_of_the_year % <font color="#000000">2</font> )) -eq <font color="#000000">0</font> ]; <b><u><font color="#000000">then</font></u></b>
+ <b><u><font color="#000000">local</font></u></b> tmp=$master
+ master=$standby
+ standby=$tmp
+<b><u><font color="#000000">fi</font></u></b>
</pre>
<br />
<span>This way, a DNS failover is performed weekly so that the ACME automation can update the Let&#39;s Encrypt certificates (for master and standby) before they expire on each VM.</span><br />
@@ -3462,8 +3462,8 @@ SSFISHKISSFISHKISSFISHKISSFISHKIS SFIS
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">$ doas installboot sd0 </font><i><font color="#ababab"># Update the bootloader (not for every upgrade required)</font></i>
-<font color="#ff0000">$ doas sysupgrade </font><i><font color="#ababab"># Update all binaries (including Kernel)</font></i>
+<pre>$ doas installboot sd0 <i><font color="silver"># Update the bootloader (not for every upgrade required)</font></i>
+$ doas sysupgrade <i><font color="silver"># Update all binaries (including Kernel)</font></i>
</pre>
<br />
<span><span class='inlinecode'>sysupgrade</span> downloaded and upgraded to the next release and rebooted the system. After the reboot, I run:</span><br />
@@ -3472,9 +3472,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">$ doas sysmerge </font><i><font color="#ababab"># Update system configuration files</font></i>
-<font color="#ff0000">$ doas pkg_add -u </font><i><font color="#ababab"># Update all packages</font></i>
-<font color="#ff0000">$ doas reboot </font><i><font color="#ababab"># Just in case, reboot one more time</font></i>
+<pre>$ doas sysmerge <i><font color="silver"># Update system configuration files</font></i>
+$ doas pkg_add -u <i><font color="silver"># Update all packages</font></i>
+$ doas reboot <i><font color="silver"># Just in case, reboot one more time</font></i>
</pre>
<br />
<span>That&#39;s it! Took me around 5 minutes in total! No issues, only these few comands, only 5 minutes! It just works! No problems, no conflicts, no tons (actually none) config file merge conflicts.</span><br />
@@ -3640,24 +3640,24 @@ jgs^^^^^^^`^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
-<font color="#7bc710">log ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">level</font><font color="#F3E651">=</font><font color="#bb00ff">"$1"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">message</font><font color="#F3E651">=</font><font color="#bb00ff">"$1"</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -i </font><font color="#ff0000">pid</font><font color="#F3E651">=</font><font color="#bb00ff">"$$"</font>
+log () {
+ <b><u><font color="#000000">local</font></u></b> -r level=<font color="#808080">"$1"</font>; <b><u><font color="#000000">shift</font></u></b>
+ <b><u><font color="#000000">local</font></u></b> -r message=<font color="#808080">"$1"</font>; <b><u><font color="#000000">shift</font></u></b>
+ <b><u><font color="#000000">local</font></u></b> -i pid=<font color="#808080">"$$"</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">callee</font><font color="#F3E651">=</font><font color="#ff0000">${FUNCNAME[1]}</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -r </font><font color="#ff0000">stamp</font><font color="#F3E651">=</font><font color="#ff0000">$(</font><font color="#ff0000">date </font><font color="#F3E651">+%</font><font color="#ff0000">Y</font><font color="#F3E651">%</font><font color="#ff0000">m</font><font color="#F3E651">%</font><font color="#ff0000">d-</font><font color="#F3E651">%</font><font color="#ff0000">H</font><font color="#F3E651">%</font><font color="#ff0000">M</font><font color="#F3E651">%</font><font color="#ff0000">S</font><font color="#F3E651">)</font>
+ <b><u><font color="#000000">local</font></u></b> -r callee=${FUNCNAME[1]}
+ <b><u><font color="#000000">local</font></u></b> -r stamp=$(date +%Y%m%d-%H%M%S)
-<font color="#ff0000"> echo </font><font color="#bb00ff">"$level|$stamp|$pid|$callee|$message"</font><font color="#ff0000"> </font><font color="#F3E651">&gt;&amp;</font><font color="#bb00ff">2</font>
-<font color="#ff0000">}</font>
+ echo <font color="#808080">"$level|$stamp|$pid|$callee|$message"</font> &gt;&amp;<font color="#000000">2</font>
+}
-<font color="#7bc710">at_home_friday_evening ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> log INFO </font><font color="#bb00ff">'One Peperoni Pizza, please'</font>
-<font color="#ff0000">}</font>
+at_home_friday_evening () {
+ log INFO <font color="#808080">'One Peperoni Pizza, please'</font>
+}
-<font color="#ff0000">at_home_friday_evening</font>
+at_home_friday_evening
</pre>
<br />
<span>The output is as follows:</span><br />
@@ -3666,8 +3666,8 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">❯ </font><font color="#F3E651">.</font><font color="#ff0000">/logexample</font><font color="#F3E651">.</font><font color="#ff0000">sh</font>
-<font color="#ff0000">INFO</font><font color="#F3E651">|</font><font color="#bb00ff">20231210</font><font color="#ff0000">-</font><font color="#bb00ff">082732</font><font color="#F3E651">|</font><font color="#bb00ff">123002</font><font color="#F3E651">|</font><font color="#ff0000">at_home_friday_evening</font><font color="#F3E651">|</font><font color="#ff0000">One Peperoni Pizza</font><font color="#F3E651">,</font><font color="#ff0000"> please</font>
+<pre>❯ ./logexample.sh
+INFO|<font color="#000000">20231210</font>-<font color="#000000">082732</font>|<font color="#000000">123002</font>|at_home_friday_evening|One Peperoni Pizza, please
</pre>
<br />
<h2 style='display: inline' id='--'><span class='inlinecode'>:(){ :|:&amp; };:</span></h2><br />
@@ -3701,18 +3701,18 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
-<font color="#7bc710">outer()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><font color="#7bc710">inner()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">'Intel inside!'</font>
-<font color="#ff0000"> }</font>
-<font color="#ff0000"> inner</font>
-<font color="#ff0000">}</font>
+outer() {
+ inner() {
+ echo <font color="#808080">'Intel inside!'</font>
+ }
+ inner
+}
-<font color="#ff0000">inner</font>
-<font color="#ff0000">outer</font>
-<font color="#ff0000">inner</font>
+inner
+outer
+inner
</pre>
<br />
<span>And let&#39;s execute it:</span><br />
@@ -3730,26 +3730,26 @@ Intel inside!
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
-<font color="#7bc710">outer1()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><font color="#7bc710">inner()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">'Intel inside!'</font>
-<font color="#ff0000"> }</font>
-<font color="#ff0000"> inner</font>
-<font color="#ff0000">}</font>
+outer1() {
+ inner() {
+ echo <font color="#808080">'Intel inside!'</font>
+ }
+ inner
+}
-<font color="#7bc710">outer2()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><font color="#7bc710">inner()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">'Wintel inside!'</font>
-<font color="#ff0000"> }</font>
-<font color="#ff0000"> inner</font>
-<font color="#ff0000">}</font>
+outer2() {
+ inner() {
+ echo <font color="#808080">'Wintel inside!'</font>
+ }
+ inner
+}
-<font color="#ff0000">outer1</font>
-<font color="#ff0000">inner</font>
-<font color="#ff0000">outer2</font>
-<font color="#ff0000">inner</font>
+outer1
+inner
+outer2
+inner
</pre>
<br />
<span>And let&#39;s run it:</span><br />
@@ -3770,14 +3770,14 @@ Wintel inside!
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
-<font color="#7bc710">some_expensive_operations()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"Doing expensive operations with '$1' from pid $$"</font>
-<font color="#ff0000">}</font>
+some_expensive_operations() {
+ echo <font color="#808080">"Doing expensive operations with '$1' from pid $$"</font>
+}
-<b><font color="#ffffff">for</font></b><font color="#ff0000"> i </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> {</font><font color="#bb00ff">0</font><font color="#F3E651">..</font><font color="#bb00ff">9</font><font color="#ff0000">}</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b><font color="#ff0000"> echo </font><font color="#ff0000">$i</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">done</font></b><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> xargs -P</font><font color="#bb00ff">10</font><font color="#ff0000"> -I{} bash -c </font><font color="#bb00ff">'some_expensive_operations "{}"'</font>
+<b><u><font color="#000000">for</font></u></b> i <b><u><font color="#000000">in</font></u></b> {<font color="#000000">0</font>..<font color="#000000">9</font>}; <b><u><font color="#000000">do</font></u></b> echo $i; <b><u><font color="#000000">done</font></u></b> \
+ | xargs -P<font color="#000000">10</font> -I{} bash -c <font color="#808080">'some_expensive_operations "{}"'</font>
</pre>
<br />
<span>We try here to run ten parallel processes; each of them should run the <span class='inlinecode'>some_expensive_operations</span> function with a different argument. The arguments are provided to <span class='inlinecode'>xargs</span> through <span class='inlinecode'>STDIN</span> one per line. When executed, we get this:</span><br />
@@ -3802,15 +3802,15 @@ bash: line 1: some_expensive_operations: command not found
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
-<font color="#7bc710">some_expensive_operations()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"Doing expensive operations with '$1' from pid $$"</font>
-<font color="#ff0000">}</font>
-<b><font color="#ffffff">export</font></b><font color="#ff0000"> -f some_expensive_operations</font>
+some_expensive_operations() {
+ echo <font color="#808080">"Doing expensive operations with '$1' from pid $$"</font>
+}
+<b><u><font color="#000000">export</font></u></b> -f some_expensive_operations
-<b><font color="#ffffff">for</font></b><font color="#ff0000"> i </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> {</font><font color="#bb00ff">0</font><font color="#F3E651">..</font><font color="#bb00ff">9</font><font color="#ff0000">}</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b><font color="#ff0000"> echo </font><font color="#ff0000">$i</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">done</font></b><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> xargs -P</font><font color="#bb00ff">10</font><font color="#ff0000"> -I{} bash -c </font><font color="#bb00ff">'some_expensive_operations "{}"'</font>
+<b><u><font color="#000000">for</font></u></b> i <b><u><font color="#000000">in</font></u></b> {<font color="#000000">0</font>..<font color="#000000">9</font>}; <b><u><font color="#000000">do</font></u></b> echo $i; <b><u><font color="#000000">done</font></u></b> \
+ | xargs -P<font color="#000000">10</font> -I{} bash -c <font color="#808080">'some_expensive_operations "{}"'</font>
</pre>
<br />
<span>When we run this now, we get:</span><br />
@@ -3835,19 +3835,19 @@ Doing expensive operations with &#39;9&#39; from pid 132840
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
-<font color="#7bc710">some_other_function()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"$1"</font>
-<font color="#ff0000">}</font>
+some_other_function() {
+ echo <font color="#808080">"$1"</font>
+}
-<font color="#7bc710">some_expensive_operations()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> some_other_function </font><font color="#bb00ff">"Doing expensive operations with '$1' from pid $$"</font>
-<font color="#ff0000">}</font>
-<b><font color="#ffffff">export</font></b><font color="#ff0000"> -f some_expensive_operations</font>
+some_expensive_operations() {
+ some_other_function <font color="#808080">"Doing expensive operations with '$1' from pid $$"</font>
+}
+<b><u><font color="#000000">export</font></u></b> -f some_expensive_operations
-<b><font color="#ffffff">for</font></b><font color="#ff0000"> i </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> {</font><font color="#bb00ff">0</font><font color="#F3E651">..</font><font color="#bb00ff">9</font><font color="#ff0000">}</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b><font color="#ff0000"> echo </font><font color="#ff0000">$i</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">done</font></b><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> xargs -P</font><font color="#bb00ff">10</font><font color="#ff0000"> -I{} bash -c </font><font color="#bb00ff">'some_expensive_operations "{}"'</font>
+<b><u><font color="#000000">for</font></u></b> i <b><u><font color="#000000">in</font></u></b> {<font color="#000000">0</font>..<font color="#000000">9</font>}; <b><u><font color="#000000">do</font></u></b> echo $i; <b><u><font color="#000000">done</font></u></b> \
+ | xargs -P<font color="#000000">10</font> -I{} bash -c <font color="#808080">'some_expensive_operations "{}"'</font>
</pre>
<br />
<span>... because <span class='inlinecode'>some_other_function</span> isn&#39;t exported! You will also need to add an <span class='inlinecode'>export -f some_other_function</span>!</span><br />
@@ -3860,22 +3860,22 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
-<font color="#7bc710">foo()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> </font><font color="#ff0000">foo</font><font color="#F3E651">=</font><font color="#ff0000">bar </font><i><font color="#ababab"># Declare local/dynamic variable</font></i>
-<font color="#ff0000"> bar</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"$foo"</font>
-<font color="#ff0000">}</font>
+foo() {
+ <b><u><font color="#000000">local</font></u></b> foo=bar <i><font color="silver"># Declare local/dynamic variable</font></i>
+ bar
+ echo <font color="#808080">"$foo"</font>
+}
-<font color="#7bc710">bar()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"$foo"</font>
-<font color="#ff0000"> </font><font color="#ff0000">foo</font><font color="#F3E651">=</font><font color="#ff0000">baz</font>
-<font color="#ff0000">}</font>
+bar() {
+ echo <font color="#808080">"$foo"</font>
+ foo=baz
+}
-<font color="#ff0000">foo</font><font color="#F3E651">=</font><font color="#ff0000">foo </font><i><font color="#ababab"># Declare global variable</font></i>
-<font color="#ff0000">foo </font><i><font color="#ababab"># Call function foo</font></i>
-<font color="#ff0000">echo </font><font color="#bb00ff">"$foo"</font>
+foo=foo <i><font color="silver"># Declare global variable</font></i>
+foo <i><font color="silver"># Call function foo</font></i>
+echo <font color="#808080">"$foo"</font>
</pre>
<br />
<span>Let&#39;s pause a minute. What do you think the output would be?</span><br />
@@ -3900,34 +3900,34 @@ foo
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
-<b><font color="#ffffff">declare</font></b><font color="#ff0000"> -r </font><font color="#ff0000">foo</font><font color="#F3E651">=</font><font color="#ff0000">foo</font>
-<b><font color="#ffffff">declare</font></b><font color="#ff0000"> -r </font><font color="#ff0000">bar</font><font color="#F3E651">=</font><font color="#ff0000">bar</font>
+<b><u><font color="#000000">declare</font></u></b> -r foo=foo
+<b><u><font color="#000000">declare</font></u></b> -r bar=bar
-<b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#bb00ff">"$foo"</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> foo </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#bb00ff">"$bar"</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> bar </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo ok1</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
-<b><font color="#ffffff">fi</font></b>
+<b><u><font color="#000000">if</font></u></b> [ <font color="#808080">"$foo"</font> = foo ]; <b><u><font color="#000000">then</font></u></b>
+ <b><u><font color="#000000">if</font></u></b> [ <font color="#808080">"$bar"</font> = bar ]; <b><u><font color="#000000">then</font></u></b>
+ echo ok1
+ <b><u><font color="#000000">fi</font></u></b>
+<b><u><font color="#000000">fi</font></u></b>
-<b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#bb00ff">"$foo"</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> foo </font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#bb00ff">"$bar"</font><font color="#ff0000"> </font><font color="#F3E651">==</font><font color="#ff0000"> bar </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo ok2a</font>
-<b><font color="#ffffff">fi</font></b>
+<b><u><font color="#000000">if</font></u></b> [ <font color="#808080">"$foo"</font> = foo ] &amp;&amp; [ <font color="#808080">"$bar"</font> == bar ]; <b><u><font color="#000000">then</font></u></b>
+ echo ok2a
+<b><u><font color="#000000">fi</font></u></b>
-<font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#bb00ff">"$foo"</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> foo </font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#bb00ff">"$bar"</font><font color="#ff0000"> </font><font color="#F3E651">==</font><font color="#ff0000"> bar </font><font color="#F3E651">]</font><font color="#ff0000"> </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> echo ok2b</font>
+[ <font color="#808080">"$foo"</font> = foo ] &amp;&amp; [ <font color="#808080">"$bar"</font> == bar ] &amp;&amp; echo ok2b
-<b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[[</font><font color="#ff0000"> </font><font color="#bb00ff">"$foo"</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> foo </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> </font><font color="#bb00ff">"$bar"</font><font color="#ff0000"> </font><font color="#F3E651">==</font><font color="#ff0000"> bar </font><font color="#F3E651">]];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo ok3a</font>
-<b><font color="#ffffff">fi</font></b>
+<b><u><font color="#000000">if</font></u></b> [[ <font color="#808080">"$foo"</font> = foo &amp;&amp; <font color="#808080">"$bar"</font> == bar ]]; <b><u><font color="#000000">then</font></u></b>
+ echo ok3a
+<b><u><font color="#000000">fi</font></u></b>
-<font color="#ff0000"> </font><font color="#F3E651">[[</font><font color="#ff0000"> </font><font color="#bb00ff">"$foo"</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> foo </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> </font><font color="#bb00ff">"$bar"</font><font color="#ff0000"> </font><font color="#F3E651">==</font><font color="#ff0000"> bar </font><font color="#F3E651">]]</font><font color="#ff0000"> </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> echo ok3b</font>
+ [[ <font color="#808080">"$foo"</font> = foo &amp;&amp; <font color="#808080">"$bar"</font> == bar ]] &amp;&amp; echo ok3b
-<b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><b><font color="#ffffff">test</font></b><font color="#ff0000"> </font><font color="#bb00ff">"$foo"</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> foo </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> </font><b><font color="#ffffff">test</font></b><font color="#ff0000"> </font><font color="#bb00ff">"$bar"</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> bar</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo ok4a</font>
-<b><font color="#ffffff">fi</font></b>
+<b><u><font color="#000000">if</font></u></b> <b><u><font color="#000000">test</font></u></b> <font color="#808080">"$foo"</font> = foo &amp;&amp; <b><u><font color="#000000">test</font></u></b> <font color="#808080">"$bar"</font> = bar; <b><u><font color="#000000">then</font></u></b>
+ echo ok4a
+<b><u><font color="#000000">fi</font></u></b>
-<b><font color="#ffffff">test</font></b><font color="#ff0000"> </font><font color="#bb00ff">"$foo"</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> foo </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> </font><b><font color="#ffffff">test</font></b><font color="#ff0000"> </font><font color="#bb00ff">"$bar"</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> bar </font><font color="#F3E651">&amp;&amp;</font><font color="#ff0000"> echo ok4b</font>
+<b><u><font color="#000000">test</font></u></b> <font color="#808080">"$foo"</font> = foo &amp;&amp; <b><u><font color="#000000">test</font></u></b> <font color="#808080">"$bar"</font> = bar &amp;&amp; echo ok4b
</pre>
<br />
<span>The output we get is:</span><br />
@@ -3951,18 +3951,18 @@ ok4b
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
-<i><font color="#ababab"># Single line comment</font></i>
+<i><font color="silver"># Single line comment</font></i>
-<i><font color="#ababab"># These are two single line</font></i>
-<i><font color="#ababab"># comments one after another</font></i>
+<i><font color="silver"># These are two single line</font></i>
+<i><font color="silver"># comments one after another</font></i>
-<font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#F3E651">&lt;&lt;</font><font color="#ff0000">COMMENT</font>
-<font color="#ff0000">This is another way a</font>
-<font color="#ff0000">multi line comment</font>
-<font color="#ff0000">could be written</font><font color="#F3E651">!</font>
-<font color="#ff0000">COMMENT</font>
+: &lt;&lt;COMMENT
+This is another way a
+multi line comment
+could be written!
+COMMENT
</pre>
<br />
<span>I will not demonstrate the execution of this script, as it won&#39;t print anything! It&#39;s obviously not the most pretty way of commenting on your code, but it could sometimes be handy!</span><br />
@@ -3975,11 +3975,11 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">#!/usr/bin/env bash</font></i>
+<pre><i><font color="silver">#!/usr/bin/env bash</font></i>
-<font color="#ff0000">echo foo</font>
-<font color="#ff0000">echo echo baz </font><font color="#F3E651">&gt;&gt;</font><font color="#ff0000"> </font><font color="#ff0000">$0</font>
-<font color="#ff0000">echo bar</font>
+echo foo
+echo echo baz &gt;&gt; $0
+echo bar
</pre>
<br />
<span>When it is run, it will do:</span><br />
@@ -4355,42 +4355,42 @@ photoalbum makemake
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> photoalbum makemake</font>
-<font color="#ff0000">You may now customize </font><font color="#F3E651">.</font><font color="#ff0000">/photoalbumrc and run make</font>
-
-<font color="#F3E651">%</font><font color="#ff0000"> cat Makefile</font>
-<font color="#ff0000">all</font><font color="#F3E651">:</font>
-<font color="#ff0000"> photoalbum generate photoalbumrc</font>
-<font color="#ff0000">clean</font><font color="#F3E651">:</font>
-<font color="#ff0000"> photoalbum clean photoalbumrc</font>
-
-<font color="#F3E651">%</font><font color="#ff0000"> cat photoalbumrc</font>
-<i><font color="#ababab"># The title of the photoalbum</font></i>
-<font color="#ff0000">TITLE</font><font color="#F3E651">=</font><font color="#bb00ff">'A simple Photoalbum'</font>
-
-<i><font color="#ababab"># Thumbnail height geometry</font></i>
-<font color="#ff0000">THUMBHEIGHT</font><font color="#F3E651">=</font><font color="#bb00ff">300</font>
-<i><font color="#ababab"># Normal geometry height (when viewing photo). Uncomment, to keep original size.</font></i>
-<font color="#ff0000">HEIGHT</font><font color="#F3E651">=</font><font color="#bb00ff">1200</font>
-<i><font color="#ababab"># Max previews per page.</font></i>
-<font color="#ff0000">MAXPREVIEWS</font><font color="#F3E651">=</font><font color="#bb00ff">40</font>
-<i><font color="#ababab"># Randomly shuffle all previews.</font></i>
-<i><font color="#ababab"># SHUFFLE=yes</font></i>
-
-<i><font color="#ababab"># Diverse directories, need to be full paths, not relative!</font></i>
-<font color="#ff0000">INCOMING_DIR</font><font color="#F3E651">=</font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/incoming</font>
-<font color="#ff0000">DIST_DIR</font><font color="#F3E651">=</font><font color="#ff0000">$(pwd)</font><font color="#ff0000">/dist</font>
-<font color="#ff0000">TEMPLATE_DIR</font><font color="#F3E651">=</font><font color="#ff0000">/usr/share/photoalbum/templates/default</font>
-<i><font color="#ababab">#TEMPLATE_DIR=/usr/share/photoalbum/templates/minimal</font></i>
-
-<i><font color="#ababab"># Includes a .tar of the incoming dir in the dist, can be yes or no</font></i>
-<font color="#ff0000">TARBALL_INCLUDE</font><font color="#F3E651">=</font><font color="#ff0000">yes</font>
-<font color="#ff0000">TARBALL_SUFFIX</font><font color="#F3E651">=.</font><font color="#ff0000">tar</font>
-<font color="#ff0000">TAR_OPTS</font><font color="#F3E651">=</font><font color="#bb00ff">'-c'</font>
-
-<i><font color="#ababab"># Some debugging options</font></i>
-<i><font color="#ababab">#set -e</font></i>
-<i><font color="#ababab">#set -x</font></i>
+<pre>% photoalbum makemake
+You may now customize ./photoalbumrc and run make
+
+% cat Makefile
+all:
+ photoalbum generate photoalbumrc
+clean:
+ photoalbum clean photoalbumrc
+
+% cat photoalbumrc
+<i><font color="silver"># The title of the photoalbum</font></i>
+TITLE=<font color="#808080">'A simple Photoalbum'</font>
+
+<i><font color="silver"># Thumbnail height geometry</font></i>
+THUMBHEIGHT=<font color="#000000">300</font>
+<i><font color="silver"># Normal geometry height (when viewing photo). Uncomment, to keep original size.</font></i>
+HEIGHT=<font color="#000000">1200</font>
+<i><font color="silver"># Max previews per page.</font></i>
+MAXPREVIEWS=<font color="#000000">40</font>
+<i><font color="silver"># Randomly shuffle all previews.</font></i>
+<i><font color="silver"># SHUFFLE=yes</font></i>
+
+<i><font color="silver"># Diverse directories, need to be full paths, not relative!</font></i>
+INCOMING_DIR=$(pwd)/incoming
+DIST_DIR=$(pwd)/dist
+TEMPLATE_DIR=/usr/share/photoalbum/templates/default
+<i><font color="silver">#TEMPLATE_DIR=/usr/share/photoalbum/templates/minimal</font></i>
+
+<i><font color="silver"># Includes a .tar of the incoming dir in the dist, can be yes or no</font></i>
+TARBALL_INCLUDE=yes
+TARBALL_SUFFIX=.tar
+TAR_OPTS=<font color="#808080">'-c'</font>
+
+<i><font color="silver"># Some debugging options</font></i>
+<i><font color="silver">#set -e</font></i>
+<i><font color="silver">#set -x</font></i>
</pre>
<br />
<span>In the case for <span class='inlinecode'>irregular.ninja</span>, I changed the defaults to the following:</span><br />
@@ -4399,38 +4399,38 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">--- photoalbumrc 2023-10-29 21:42:00.894202045 +0200</font>
-<font color="#ff0000">+++ photoalbumrc.new 2023-06-04 10:40:08.030994440 +0300</font>
-<font color="#ff0000">@@ -1,23 +1,24 @@</font>
-<font color="#ff0000"> # The title of the photoalbum</font>
-<font color="#ff0000">-TITLE='A simple Photoalbum'</font>
-<font color="#ff0000">+TITLE='Irregular.Ninja'</font>
-
-<font color="#ff0000"> # Thumbnail height geometry</font>
-<font color="#ff0000">-THUMBHEIGHT=300</font>
-<font color="#ff0000">+THUMBHEIGHT=400</font>
-<font color="#ff0000"> # Normal geometry height (when viewing photo). Uncomment, to keep original size.</font>
-<font color="#ff0000">-HEIGHT=1200</font>
-<font color="#ff0000">+HEIGHT=1800</font>
-<font color="#ff0000"> # Max previews per page.</font>
-<font color="#ff0000"> MAXPREVIEWS=40</font>
-<font color="#ff0000">-# Randomly shuffle all previews.</font>
-<font color="#ff0000">-# SHUFFLE=yes</font>
-<font color="#ff0000">+# Randomly shuffle</font>
-<font color="#ff0000">+SHUFFLE=yes</font>
-
-<font color="#ff0000"> # Diverse directories, need to be full paths, not relative!</font>
-<font color="#ff0000">-INCOMING_DIR=$(pwd)/incoming</font>
-<font color="#ff0000">+INCOMING_DIR=~/Nextcloud/Photos/irregular.ninja</font>
-<font color="#ff0000"> DIST_DIR=$(pwd)/dist</font>
-<font color="#ff0000"> TEMPLATE_DIR=/usr/share/photoalbum/templates/default</font>
-<font color="#ff0000"> #TEMPLATE_DIR=/usr/share/photoalbum/templates/minimal</font>
-
-<font color="#ff0000"> # Includes a .tar of the incoming dir in the dist, can be yes or no</font>
-<font color="#ff0000">-TARBALL_INCLUDE=yes</font>
-<font color="#ff0000">+TARBALL_INCLUDE=no</font>
-<font color="#ff0000"> TARBALL_SUFFIX=.tar</font>
-<font color="#ff0000"> TAR_OPTS='-c'</font>
+<pre>--- photoalbumrc 2023-10-29 21:42:00.894202045 +0200
++++ photoalbumrc.new 2023-06-04 10:40:08.030994440 +0300
+@@ -1,23 +1,24 @@
+ # The title of the photoalbum
+-TITLE='A simple Photoalbum'
++TITLE='Irregular.Ninja'
+
+ # Thumbnail height geometry
+-THUMBHEIGHT=300
++THUMBHEIGHT=400
+ # Normal geometry height (when viewing photo). Uncomment, to keep original size.
+-HEIGHT=1200
++HEIGHT=1800
+ # Max previews per page.
+ MAXPREVIEWS=40
+-# Randomly shuffle all previews.
+-# SHUFFLE=yes
++# Randomly shuffle
++SHUFFLE=yes
+
+ # Diverse directories, need to be full paths, not relative!
+-INCOMING_DIR=$(pwd)/incoming
++INCOMING_DIR=~/Nextcloud/Photos/irregular.ninja
+ DIST_DIR=$(pwd)/dist
+ TEMPLATE_DIR=/usr/share/photoalbum/templates/default
+ #TEMPLATE_DIR=/usr/share/photoalbum/templates/minimal
+
+ # Includes a .tar of the incoming dir in the dist, can be yes or no
+-TARBALL_INCLUDE=yes
++TARBALL_INCLUDE=no
+ TARBALL_SUFFIX=.tar
+ TAR_OPTS='-c'
</pre>
<br />
<span>So I changed the album title, adjusted some image and thumbnail dimensions, and I want all images to be randomly shuffled every time the album is generated! I also have all my photos in my Nextcloud Photo directory and don&#39;t want to copy them to the local <span class='inlinecode'>incoming</span> directory. Also, a tarball containing the whole album as a download isn&#39;t provided.</span><br />
@@ -4603,7 +4603,7 @@ blurs html index.html photos thumbs
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dtail --servers serverlist</font><font color="#F3E651">.</font><font color="#ff0000">txt --grep INFO --files </font><font color="#bb00ff">"/var/log/dserver/*.log"</font>
+<pre>% dtail --servers serverlist.txt --grep INFO --files <font color="#808080">"/var/log/dserver/*.log"</font>
</pre>
<br />
<span>Hint: you can also provide a comma separated server list, e.g.: <span class='inlinecode'>servers server1.example.org,server2.example.org:PORT,...</span></span><br />
@@ -4616,7 +4616,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dtail --servers serverlist</font><font color="#F3E651">.</font><font color="#ff0000">txt --grep INFO </font><font color="#bb00ff">"/var/log/dserver/*.log"</font>
+<pre>% dtail --servers serverlist.txt --grep INFO <font color="#808080">"/var/log/dserver/*.log"</font>
</pre>
<br />
<h2 style='display: inline' id='aggregating-logs'>Aggregating logs</h2><br />
@@ -4629,10 +4629,10 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dtail --servers serverlist</font><font color="#F3E651">.</font><font color="#ff0000">txt </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --files </font><font color="#bb00ff">'/var/log/dserver/*.log'</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --query </font><font color="#bb00ff">'from STATS select sum($goroutines),sum($cgocalls),</font>
-<font color="#bb00ff"> last($time),max(lifetimeConnections)'</font>
+<pre>% dtail --servers serverlist.txt \
+ --files <font color="#808080">'/var/log/dserver/*.log'</font> \
+ --query <font color="#808080">'from STATS select sum($goroutines),sum($cgocalls),</font>
+<font color="#808080"> last($time),max(lifetimeConnections)'</font>
</pre>
<br />
<span>Beware: For map-reduce queries to work, you have to ensure that DTail supports your log format. Check out the documentaiton of the DTail query language and the DTail log formats on the DTail homepage for more information.</span><br />
@@ -4645,10 +4645,10 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dtail --servers serverlist</font><font color="#F3E651">.</font><font color="#ff0000">txt </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --files </font><font color="#bb00ff">'/var/log/dserver/*.log'</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> </font><font color="#bb00ff">'from STATS select sum($goroutines),sum($cgocalls),</font>
-<font color="#bb00ff"> last($time),max(lifetimeConnections)'</font>
+<pre>% dtail --servers serverlist.txt \
+ --files <font color="#808080">'/var/log/dserver/*.log'</font> \
+ <font color="#808080">'from STATS select sum($goroutines),sum($cgocalls),</font>
+<font color="#808080"> last($time),max(lifetimeConnections)'</font>
</pre>
<br />
<span>Here is another example:</span><br />
@@ -4657,10 +4657,10 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dtail --servers serverlist</font><font color="#F3E651">.</font><font color="#ff0000">txt </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --files </font><font color="#bb00ff">'/var/log/dserver/*.log'</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --query </font><font color="#bb00ff">'from STATS select $hostname,max($goroutines),max($cgocalls),$loadavg,</font>
-<font color="#bb00ff"> lifetimeConnections group by $hostname order by max($cgocalls)'</font>
+<pre>% dtail --servers serverlist.txt \
+ --files <font color="#808080">'/var/log/dserver/*.log'</font> \
+ --query <font color="#808080">'from STATS select $hostname,max($goroutines),max($cgocalls),$loadavg,</font>
+<font color="#808080"> lifetimeConnections group by $hostname order by max($cgocalls)'</font>
</pre>
<br />
<a href='./dtail-usage-examples/dtail-map2.gif'><img alt='Tail map-reduce example 2' title='Tail map-reduce example 2' src='./dtail-usage-examples/dtail-map2.gif' /></a><br />
@@ -4671,9 +4671,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dtail --servers serverlist</font><font color="#F3E651">.</font><font color="#ff0000">txt </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --files </font><font color="#bb00ff">'/var/log/dserver/*.log'</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --query </font><font color="#bb00ff">'from STATS select ... outfile append result.csv'</font>
+<pre>% dtail --servers serverlist.txt \
+ --files <font color="#808080">'/var/log/dserver/*.log'</font> \
+ --query <font color="#808080">'from STATS select ... outfile append result.csv'</font>
</pre>
<br />
<h2 style='display: inline' id='how-to-use-dcat'>How to use <span class='inlinecode'>dcat</span></h2><br />
@@ -4686,7 +4686,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dcat --servers serverlist</font><font color="#F3E651">.</font><font color="#ff0000">txt --files /etc/hostname</font>
+<pre>% dcat --servers serverlist.txt --files /etc/hostname
</pre>
<br />
<a href='./dtail-usage-examples/dcat.gif'><img alt='Cat example' title='Cat example' src='./dtail-usage-examples/dcat.gif' /></a><br />
@@ -4697,7 +4697,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dcat --servers serverlist</font><font color="#F3E651">.</font><font color="#ff0000">txt /etc/hostname</font>
+<pre>% dcat --servers serverlist.txt /etc/hostname
</pre>
<br />
<h2 style='display: inline' id='how-to-use-dgrep'>How to use <span class='inlinecode'>dgrep</span></h2><br />
@@ -4708,9 +4708,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dgrep --servers server1</font><font color="#F3E651">.</font><font color="#ff0000">example</font><font color="#F3E651">.</font><font color="#ff0000">org</font><font color="#F3E651">:</font><font color="#bb00ff">2223</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --files /etc/passwd </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --regex nologin</font>
+<pre>% dgrep --servers server1.example.org:<font color="#000000">2223</font> \
+ --files /etc/passwd \
+ --regex nologin
</pre>
<br />
<span>Generally, <span class='inlinecode'>dgrep</span> is also a very useful way to search historic application logs for certain content.</span><br />
@@ -4727,10 +4727,10 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dmap --servers serverlist</font><font color="#F3E651">.</font><font color="#ff0000">txt </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --files </font><font color="#bb00ff">'/var/log/dserver/*.log'</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> --query </font><font color="#bb00ff">'from STATS select $hostname,max($goroutines),max($cgocalls),$loadavg,</font>
-<font color="#bb00ff"> lifetimeConnections group by $hostname order by max($cgocalls)'</font>
+<pre>% dmap --servers serverlist.txt \
+ --files <font color="#808080">'/var/log/dserver/*.log'</font> \
+ --query <font color="#808080">'from STATS select $hostname,max($goroutines),max($cgocalls),$loadavg,</font>
+<font color="#808080"> lifetimeConnections group by $hostname order by max($cgocalls)'</font>
</pre>
<br />
<span>Remember: For that to work, you have to make sure that DTail supports your log format. You can either use the ones already defined in <span class='inlinecode'>internal/mapr/logformat</span> or add an extension to support a custom log format. The example here works out of the box though, as DTail understands its own log format already. </span><br />
@@ -4753,9 +4753,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dmap --files /var/log/dserver/dserver</font><font color="#F3E651">.</font><font color="#ff0000">log</font>
-<font color="#ff0000"> --query </font><font color="#bb00ff">'from STATS select $hostname,max($goroutines),max($cgocalls),$loadavg,</font>
-<font color="#bb00ff"> lifetimeConnections group by $hostname order by max($cgocalls)'</font>
+<pre>% dmap --files /var/log/dserver/dserver.log
+ --query <font color="#808080">'from STATS select $hostname,max($goroutines),max($cgocalls),$loadavg,</font>
+<font color="#808080"> lifetimeConnections group by $hostname order by max($cgocalls)'</font>
</pre>
<br />
<span>As a shorthand version the following command can be used:</span><br />
@@ -4764,9 +4764,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dmap </font><font color="#bb00ff">'from STATS select $hostname,max($goroutines),max($cgocalls),$loadavg,</font>
-<font color="#bb00ff"> lifetimeConnections group by $hostname order by max($cgocalls)'</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> /var/log/dsever/dserver</font><font color="#F3E651">.</font><font color="#ff0000">log</font>
+<pre>% dmap <font color="#808080">'from STATS select $hostname,max($goroutines),max($cgocalls),$loadavg,</font>
+<font color="#808080"> lifetimeConnections group by $hostname order by max($cgocalls)'</font> \
+ /var/log/dsever/dserver.log
</pre>
<br />
<span>You can also use a file input pipe as follows:</span><br />
@@ -4775,9 +4775,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> cat /var/log/dserver/dserver</font><font color="#F3E651">.</font><font color="#ff0000">log </font><font color="#F3E651">|</font><font color="#ff0000"> </font><font color="#F3E651">\</font>
-<font color="#ff0000"> dmap </font><font color="#bb00ff">'from STATS select $hostname,max($goroutines),max($cgocalls),$loadavg,</font>
-<font color="#bb00ff"> lifetimeConnections group by $hostname order by max($cgocalls)'</font>
+<pre>% cat /var/log/dserver/dserver.log | \
+ dmap <font color="#808080">'from STATS select $hostname,max($goroutines),max($cgocalls),$loadavg,</font>
+<font color="#808080"> lifetimeConnections group by $hostname order by max($cgocalls)'</font>
</pre>
<br />
<h3 style='display: inline' id='aggregating-csv-files'>Aggregating CSV files</h3><br />
@@ -4788,16 +4788,16 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> cat example</font><font color="#F3E651">.</font><font color="#ff0000">csv</font>
-<font color="#ff0000">name</font><font color="#F3E651">,</font><font color="#ff0000">lastname</font><font color="#F3E651">,</font><font color="#ff0000">age</font><font color="#F3E651">,</font><font color="#ff0000">profession</font>
-<font color="#ff0000">Michael</font><font color="#F3E651">,</font><font color="#ff0000">Jordan</font><font color="#F3E651">,</font><font color="#bb00ff">40</font><font color="#F3E651">,</font><font color="#ff0000">Basketball player</font>
-<font color="#ff0000">Michael</font><font color="#F3E651">,</font><font color="#ff0000">Jackson</font><font color="#F3E651">,</font><font color="#bb00ff">100</font><font color="#F3E651">,</font><font color="#ff0000">Singer</font>
-<font color="#ff0000">Albert</font><font color="#F3E651">,</font><font color="#ff0000">Einstein</font><font color="#F3E651">,</font><font color="#bb00ff">200</font><font color="#F3E651">,</font><font color="#ff0000">Physician</font>
-<font color="#F3E651">%</font><font color="#ff0000"> dmap --query </font><font color="#bb00ff">'select lastname,name where age &gt; 40 logformat csv outfile result.csv'</font><font color="#ff0000"> example</font><font color="#F3E651">.</font><font color="#ff0000">csv</font>
-<font color="#F3E651">%</font><font color="#ff0000"> cat result</font><font color="#F3E651">.</font><font color="#ff0000">csv</font>
-<font color="#ff0000">lastname</font><font color="#F3E651">,</font><font color="#ff0000">name</font>
-<font color="#ff0000">Jackson</font><font color="#F3E651">,</font><font color="#ff0000">Michael</font>
-<font color="#ff0000">Einstein</font><font color="#F3E651">,</font><font color="#ff0000">Albert</font>
+<pre>% cat example.csv
+name,lastname,age,profession
+Michael,Jordan,<font color="#000000">40</font>,Basketball player
+Michael,Jackson,<font color="#000000">100</font>,Singer
+Albert,Einstein,<font color="#000000">200</font>,Physician
+% dmap --query <font color="#808080">'select lastname,name where age &gt; 40 logformat csv outfile result.csv'</font> example.csv
+% cat result.csv
+lastname,name
+Jackson,Michael
+Einstein,Albert
</pre>
<br />
<span>DMap can also be used to query and aggregate CSV files from remote servers.</span><br />
@@ -4810,44 +4810,44 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dtail /var/log/dserver/dserver</font><font color="#F3E651">.</font><font color="#ff0000">log</font>
+<pre>% dtail /var/log/dserver/dserver.log
</pre>
<br />
<!-- Generator: GNU source-highlight 3.1.9
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dtail --logLevel trace /var/log/dserver/dserver</font><font color="#F3E651">.</font><font color="#ff0000">log</font>
+<pre>% dtail --logLevel trace /var/log/dserver/dserver.log
</pre>
<br />
<!-- Generator: GNU source-highlight 3.1.9
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dcat /etc/passwd</font>
+<pre>% dcat /etc/passwd
</pre>
<br />
<!-- Generator: GNU source-highlight 3.1.9
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dcat --plain /etc/passwd </font><font color="#F3E651">&gt;</font><font color="#ff0000"> /etc/test</font>
-<i><font color="#ababab"># Should show no differences.</font></i>
-<font color="#ff0000">diff /etc/test /etc/passwd </font>
+<pre>% dcat --plain /etc/passwd &gt; /etc/test
+<i><font color="silver"># Should show no differences.</font></i>
+diff /etc/test /etc/passwd
</pre>
<br />
<!-- Generator: GNU source-highlight 3.1.9
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dgrep --regex ERROR --files /var/log/dserver/dsever</font><font color="#F3E651">.</font><font color="#ff0000">log</font>
+<pre>% dgrep --regex ERROR --files /var/log/dserver/dsever.log
</pre>
<br />
<!-- Generator: GNU source-highlight 3.1.9
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> dgrep --before </font><font color="#bb00ff">10</font><font color="#ff0000"> --after </font><font color="#bb00ff">10</font><font color="#ff0000"> --max </font><font color="#bb00ff">10</font><font color="#ff0000"> --grep ERROR /var/log/dserver/dsever</font><font color="#F3E651">.</font><font color="#ff0000">log</font>
+<pre>% dgrep --before <font color="#000000">10</font> --after <font color="#000000">10</font> --max <font color="#000000">10</font> --grep ERROR /var/log/dserver/dsever.log
</pre>
<br />
<span>Use <span class='inlinecode'>--help</span> for more available options. Or go to the DTail page for more information! Hope you find DTail useful!</span><br />
@@ -5017,9 +5017,9 @@ DC on fire:
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> -n </font><font color="#bb00ff">"$foo"</font><font color="#ff0000"> </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> echo </font><font color="#bb00ff">"$foo"</font>
-<b><font color="#ffffff">fi</font></b>
+<pre><b><u><font color="#000000">if</font></u></b> [ -n <font color="#808080">"$foo"</font> ]; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"$foo"</font>
+<b><u><font color="#000000">fi</font></u></b>
</pre>
<br />
<span>Please run <span class='inlinecode'>source-highlight --lang-list</span> for a list of all supported languages.</span><br />
@@ -5048,7 +5048,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">declare</font></b><font color="#ff0000"> -xr </font><font color="#ff0000">MASTODON_URI</font><font color="#F3E651">=</font><font color="#bb00ff">'https://fosstodon.org/@snonux'</font>
+<pre><b><u><font color="#000000">declare</font></u></b> -xr MASTODON_URI=<font color="#808080">'https://fosstodon.org/@snonux'</font>
</pre>
<br />
<span>and add the following into your <span class='inlinecode'>index.gmi</span>:</span><br />
@@ -5063,7 +5063,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">&lt;a</font></b><font color="#ff0000"> </font><b><font color="#F35E1E">href</font></b><font color="#F3E651">=</font><font color="#bb00ff">'https://fosstodon.org/@snonux'</font><font color="#ff0000"> </font><b><font color="#F35E1E">rel</font></b><font color="#F3E651">=</font><font color="#bb00ff">'me'</font><b><font color="#ffffff">&gt;</font></b><font color="#ff0000">Me at Mastodon</font><b><font color="#ffffff">&lt;/a&gt;</font></b>
+<pre><b><u><font color="#000000">&lt;a</font></u></b> <b><font color="#000000">href</font></b>=<font color="#808080">'https://fosstodon.org/@snonux'</font> <b><font color="#000000">rel</font></b>=<font color="#808080">'me'</font><b><u><font color="#000000">&gt;</font></u></b>Me at Mastodon<b><u><font color="#000000">&lt;/a&gt;</font></u></b>
</pre>
<br />
<h2 style='display: inline' id='more'>More</h2><br />
@@ -5563,11 +5563,11 @@ Have a nice day!
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">git clone https</font><font color="#F3E651">:</font><font color="#ff0000">//codeberg</font><font color="#F3E651">.</font><font color="#ff0000">org/snonux/gogios</font><font color="#F3E651">.</font><font color="#ff0000">git</font>
-<font color="#ff0000">cd gogios</font>
-<font color="#ff0000">go build -o gogios cmd/gogios/main</font><font color="#F3E651">.</font><font color="#ff0000">go</font>
-<font color="#ff0000">doas cp gogios /usr/local/bin/gogios</font>
-<font color="#ff0000">doas chmod </font><font color="#bb00ff">755</font><font color="#ff0000"> /usr/local/bin/gogios</font>
+<pre>git clone https://codeberg.org/snonux/gogios.git
+cd gogios
+go build -o gogios cmd/gogios/main.go
+doas cp gogios /usr/local/bin/gogios
+doas chmod <font color="#000000">755</font> /usr/local/bin/gogios
</pre>
<br />
<span>You can use cross-compilation if you want to compile Gogios for OpenBSD on a Linux system without installing the Go compiler on OpenBSD. Follow these steps:</span><br />
@@ -5576,9 +5576,9 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">export</font></b><font color="#ff0000"> </font><font color="#ff0000">GOOS</font><font color="#F3E651">=</font><font color="#ff0000">openbsd</font>
-<b><font color="#ffffff">export</font></b><font color="#ff0000"> </font><font color="#ff0000">GOARCH</font><font color="#F3E651">=</font><font color="#ff0000">amd64</font>
-<font color="#ff0000">go build -o gogios cmd/gogios/main</font><font color="#F3E651">.</font><font color="#ff0000">go</font>
+<pre><b><u><font color="#000000">export</font></u></b> GOOS=openbsd
+<b><u><font color="#000000">export</font></u></b> GOARCH=amd64
+go build -o gogios cmd/gogios/main.go
</pre>
<br />
<span>On your OpenBSD system, copy the binary to <span class='inlinecode'>/usr/local/bin/gogios</span> and set the correct permissions as described in the previous section. All steps described here you could automate with your configuration management system of choice. I use Rexify, the friendly configuration management system, to automate the installation, but that is out of the scope of this document.</span><br />
@@ -5593,11 +5593,11 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">doas adduser -group _gogios -batch _gogios</font>
-<font color="#ff0000">doas usermod -d /var/run/gogios _gogios</font>
-<font color="#ff0000">doas mkdir -p /var/run/gogios</font>
-<font color="#ff0000">doas chown _gogios</font><font color="#F3E651">:</font><font color="#ff0000">_gogios /var/run/gogios</font>
-<font color="#ff0000">doas chmod </font><font color="#bb00ff">750</font><font color="#ff0000"> /var/run/gogios</font>
+<pre>doas adduser -group _gogios -batch _gogios
+doas usermod -d /var/run/gogios _gogios
+doas mkdir -p /var/run/gogios
+doas chown _gogios:_gogios /var/run/gogios
+doas chmod <font color="#000000">750</font> /var/run/gogios
</pre>
<br />
<span>Please note that creating a user and group might differ depending on your operating system. For other operating systems, consult their documentation for creating system users and groups.</span><br />
@@ -5610,8 +5610,8 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">doas pkg_add monitoring-plugins</font>
-<font color="#ff0000">doas pkg_add nrpe </font><i><font color="#ababab"># If you want to execute checks remotely via NRPE.</font></i>
+<pre>doas pkg_add monitoring-plugins
+doas pkg_add nrpe <i><font color="silver"># If you want to execute checks remotely via NRPE.</font></i>
</pre>
<br />
<span>Once the installation is complete, you can find the monitoring plugins in the <span class='inlinecode'>/usr/local/libexec/nagios</span> directory, which then can be configured to be used in <span class='inlinecode'>gogios.json</span>.</span><br />
@@ -5638,41 +5638,41 @@ echo &#39;This is a test email from OpenBSD.&#39; | mail -s &#39;Test Email&#39;
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">EmailTo</font><font color="#ff0000">"</font><font color="#ff0000">:</font><font color="#ff0000"> "</font><font color="#bb00ff">paul@dev.buetow.org</font><font color="#ff0000">"</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">EmailFrom</font><font color="#ff0000">"</font><font color="#ff0000">:</font><font color="#ff0000"> "</font><font color="#bb00ff">gogios@buetow.org</font><font color="#ff0000">"</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">CheckTimeoutS</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#bb00ff">10</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">CheckConcurrency</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#bb00ff">2</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">StateDir</font><font color="#ff0000">"</font><font color="#ff0000">:</font><font color="#ff0000"> "</font><font color="#bb00ff">/var/run/gogios</font><font color="#ff0000">"</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Checks</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Check ICMP4 www.foo.zone</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Plugin</font><font color="#ff0000">"</font><font color="#ff0000">:</font><font color="#ff0000"> "</font><font color="#bb00ff">/usr/local/libexec/nagios/check_ping</font><font color="#ff0000">"</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Args</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-H</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">www.foo.zone</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-4</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-w</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">50,10%</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-c</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">100,15%</font><font color="#ff0000">"</font><font color="#ff0000"> </font><font color="#F3E651">],</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Retries</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#bb00ff">3</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">RetryInterval</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#bb00ff">10</font>
-<font color="#ff0000"> </font><font color="#F3E651">},</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Check ICMP6 www.foo.zone</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Plugin</font><font color="#ff0000">"</font><font color="#ff0000">:</font><font color="#ff0000"> "</font><font color="#bb00ff">/usr/local/libexec/nagios/check_ping</font><font color="#ff0000">"</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Args</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-H</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">www.foo.zone</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-6</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-w</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">50,10%</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-c</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">100,15%</font><font color="#ff0000">"</font><font color="#ff0000"> </font><font color="#F3E651">],</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Retries</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#bb00ff">3</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">RetryInterval</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#bb00ff">10</font>
-<font color="#ff0000"> </font><font color="#F3E651">},</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">www.foo.zone HTTP IPv4</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Plugin</font><font color="#ff0000">"</font><font color="#ff0000">:</font><font color="#ff0000"> "</font><font color="#bb00ff">/usr/local/libexec/nagios/check_http</font><font color="#ff0000">"</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Args</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">[</font><font color="#ff0000">"</font><font color="#ff0000">www.foo.zone</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-4</font><font color="#ff0000">"</font><font color="#F3E651">],</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">DependsOn</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">[</font><font color="#ff0000">"</font><font color="#ff0000">Check ICMP4 www.foo.zone</font><font color="#ff0000">"</font><font color="#F3E651">]</font>
-<font color="#ff0000"> </font><font color="#F3E651">},</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">www.foo.zone HTTP IPv6</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Plugin</font><font color="#ff0000">"</font><font color="#ff0000">:</font><font color="#ff0000"> "</font><font color="#bb00ff">/usr/local/libexec/nagios/check_http</font><font color="#ff0000">"</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Args</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">[</font><font color="#ff0000">"</font><font color="#ff0000">www.foo.zone</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-6</font><font color="#ff0000">"</font><font color="#F3E651">],</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">DependsOn</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">[</font><font color="#ff0000">"</font><font color="#ff0000">Check ICMP6 www.foo.zone</font><font color="#ff0000">"</font><font color="#F3E651">]</font>
-<font color="#ff0000"> </font><font color="#F3E651">}</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Check NRPE Disk Usage foo.zone</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">{</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Plugin</font><font color="#ff0000">"</font><font color="#ff0000">:</font><font color="#ff0000"> "</font><font color="#bb00ff">/usr/local/libexec/nagios/check_nrpe</font><font color="#ff0000">"</font><font color="#F3E651">,</font>
-<font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">Args</font><font color="#ff0000">"</font><font color="#ff0000">: </font><font color="#F3E651">[</font><font color="#ff0000">"</font><font color="#ff0000">-H</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">foo.zone</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-c</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">check_disk</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-p</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">5666</font><font color="#ff0000">"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">"</font><font color="#ff0000">-4</font><font color="#ff0000">"</font><font color="#F3E651">]</font>
-<font color="#ff0000"> </font><font color="#F3E651">}</font>
-<font color="#ff0000"> </font><font color="#F3E651">}</font>
-<font color="#F3E651">}</font>
+<pre>{
+ "EmailTo": "<font color="#808080">paul@dev.buetow.org</font>",
+ "EmailFrom": "<font color="#808080">gogios@buetow.org</font>",
+ "CheckTimeoutS": <font color="#000000">10</font>,
+ "CheckConcurrency": <font color="#000000">2</font>,
+ "StateDir": "<font color="#808080">/var/run/gogios</font>",
+ "Checks": {
+ "Check ICMP4 www.foo.zone": {
+ "Plugin": "<font color="#808080">/usr/local/libexec/nagios/check_ping</font>",
+ "Args": [ "-H", "www.foo.zone", "-4", "-w", "50,10%", "-c", "100,15%" ],
+ "Retries": <font color="#000000">3</font>,
+ "RetryInterval": <font color="#000000">10</font>
+ },
+ "Check ICMP6 www.foo.zone": {
+ "Plugin": "<font color="#808080">/usr/local/libexec/nagios/check_ping</font>",
+ "Args": [ "-H", "www.foo.zone", "-6", "-w", "50,10%", "-c", "100,15%" ],
+ "Retries": <font color="#000000">3</font>,
+ "RetryInterval": <font color="#000000">10</font>
+ },
+ "www.foo.zone HTTP IPv4": {
+ "Plugin": "<font color="#808080">/usr/local/libexec/nagios/check_http</font>",
+ "Args": ["www.foo.zone", "-4"],
+ "DependsOn": ["Check ICMP4 www.foo.zone"]
+ },
+ "www.foo.zone HTTP IPv6": {
+ "Plugin": "<font color="#808080">/usr/local/libexec/nagios/check_http</font>",
+ "Args": ["www.foo.zone", "-6"],
+ "DependsOn": ["Check ICMP6 www.foo.zone"]
+ }
+ "Check NRPE Disk Usage foo.zone": {
+ "Plugin": "<font color="#808080">/usr/local/libexec/nagios/check_nrpe</font>",
+ "Args": ["-H", "foo.zone", "-c", "check_disk", "-p", "5666", "-4"]
+ }
+ }
+}
</pre>
<br />
<ul>
@@ -5701,7 +5701,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">doas -u _gogios /usr/local/bin/gogios -cfg /etc/gogios</font><font color="#F3E651">.</font><font color="#ff0000">json</font>
+<pre>doas -u _gogios /usr/local/bin/gogios -cfg /etc/gogios.json
</pre>
<br />
<span>To run Gogios via CRON on OpenBSD as the <span class='inlinecode'>gogios</span> user and check all services once per minute, follow these steps:</span><br />
@@ -5951,7 +5951,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#ff0000">$ raku guprecords</font><font color="#F3E651">.</font><font color="#ff0000">raku --stats</font><font color="#F3E651">=</font><font color="#ff0000">dir</font><font color="#F3E651">=</font><font color="#ff0000">$HOME</font><font color="#ff0000">/git/uprecords/stats --all</font>
+<pre>$ raku guprecords.raku --stats=dir=$HOME/git/uprecords/stats --all
</pre>
<br />
<span>This command will generate a comprehensive uptime report from the collected statistics, making it easy to review and enjoy the data.</span><br />
@@ -6363,8 +6363,8 @@ Blablabla...
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><b><font color="#ffffff">declare</font></b><font color="#ff0000"> -xr </font><font color="#ff0000">PRE_GENERATE_HOOK</font><font color="#F3E651">=.</font><font color="#ff0000">/pre_generate_hook</font><font color="#F3E651">.</font><font color="#ff0000">sh</font>
-<b><font color="#ffffff">declare</font></b><font color="#ff0000"> -xr </font><font color="#ff0000">POST_PUBLISH_HOOK</font><font color="#F3E651">=.</font><font color="#ff0000">/post_publish_hook</font><font color="#F3E651">.</font><font color="#ff0000">sh</font>
+<pre><b><u><font color="#000000">declare</font></u></b> -xr PRE_GENERATE_HOOK=./pre_generate_hook.sh
+<b><u><font color="#000000">declare</font></u></b> -xr POST_PUBLISH_HOOK=./post_publish_hook.sh
</pre>
<br />
<h2 style='display: inline' id='use-of-safer-bash-options'>Use of safer Bash options</h2><br />
@@ -6381,10 +6381,10 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> cat gemfeed</font><font color="#F3E651">/</font><font color="#bb00ff">2023</font><font color="#ff0000">-</font><font color="#bb00ff">02</font><font color="#ff0000">-</font><font color="#bb00ff">26</font><font color="#ff0000">-title-here</font><font color="#F3E651">.</font><font color="#ff0000">gmi</font>
-<i><font color="#ababab"># Title here</font></i>
+<pre>% cat gemfeed/<font color="#000000">2023</font>-<font color="#000000">02</font>-<font color="#000000">26</font>-title-here.gmi
+<i><font color="silver"># Title here</font></i>
-<font color="#ff0000">The remaining content of the Gemtext file</font><font color="#F3E651">...</font>
+The remaining content of the Gemtext file...
</pre>
<br />
<span>Gemtexter will add a line starting with <span class='inlinecode'>&gt; Published at ...</span> now. Any subsequent Atom feed generation will then use that date.</span><br />
@@ -6393,12 +6393,12 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">%</font><font color="#ff0000"> cat gemfeed</font><font color="#F3E651">/</font><font color="#bb00ff">2023</font><font color="#ff0000">-</font><font color="#bb00ff">02</font><font color="#ff0000">-</font><font color="#bb00ff">26</font><font color="#ff0000">-title-here</font><font color="#F3E651">.</font><font color="#ff0000">gmi</font>
-<i><font color="#ababab"># Title here</font></i>
+<pre>% cat gemfeed/<font color="#000000">2023</font>-<font color="#000000">02</font>-<font color="#000000">26</font>-title-here.gmi
+<i><font color="silver"># Title here</font></i>
-<font color="#F3E651">&gt;</font><font color="#ff0000"> Published at </font><font color="#bb00ff">2023</font><font color="#ff0000">-</font><font color="#bb00ff">02</font><font color="#ff0000">-26T21</font><font color="#F3E651">:</font><font color="#bb00ff">43</font><font color="#F3E651">:</font><font color="#bb00ff">51</font><font color="#F3E651">+</font><font color="#bb00ff">01</font><font color="#F3E651">:</font><font color="#bb00ff">00</font>
+&gt; Published at <font color="#000000">2023</font>-<font color="#000000">02</font>-26T21:<font color="#000000">43</font>:<font color="#000000">51</font>+<font color="#000000">01</font>:<font color="#000000">00</font>
-<font color="#ff0000">The remaining content of the Gemtext file</font><font color="#F3E651">...</font>
+The remaining content of the Gemtext file...
</pre>
<br />
<h2 style='display: inline' id='xmllint-support'>XMLLint support</h2><br />
@@ -7047,10 +7047,10 @@ Art by \ \_! / __!
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><i><font color="#ababab">" Clipboard</font></i>
-<font color="#ff0000">vnoremap ,</font><b><font color="#ffffff">y</font></b><font color="#ff0000"> !pbcopy</font><font color="#ff0000">&lt;CR&gt;</font><font color="#ff0000">ugv</font>
-<font color="#ff0000">vnoremap ,</font><b><font color="#ffffff">i</font></b><font color="#ff0000"> !pbpaste</font><font color="#ff0000">&lt;CR&gt;</font>
-<font color="#ff0000">nmap ,</font><b><font color="#ffffff">i</font></b><font color="#ff0000"> !wpbpaste</font><font color="#ff0000">&lt;CR&gt;</font>
+<pre><i><font color="silver">" Clipboard</font></i>
+vnoremap ,<b><u><font color="#000000">y</font></u></b> !pbcopy&lt;CR&gt;ugv
+vnoremap ,<b><u><font color="#000000">i</font></u></b> !pbpaste&lt;CR&gt;
+nmap ,<b><u><font color="#000000">i</font></u></b> !wpbpaste&lt;CR&gt;
</pre>
<br />
<span>That&#39;s only a very few lines and does precisely what I want. It&#39;s quick and dirty but get&#39;s the job done! If VimScript becomes too cumbersome, I can use Lua for NeoVim scripting.</span><br />
@@ -7670,23 +7670,23 @@ jgs (________\ \
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#7bc710">check_dependencies ()</font><font color="#ff0000"> {</font>
-<font color="#ff0000"> </font><i><font color="#ababab"># At least, Bash 5 is required</font></i>
-<font color="#ff0000"> </font><b><font color="#ffffff">local</font></b><font color="#ff0000"> -i </font><font color="#ff0000">required_version</font><font color="#F3E651">=</font><font color="#bb00ff">5</font>
-<font color="#ff0000"> </font><font color="#ff0000">IFS</font><font color="#F3E651">=.</font><font color="#ff0000"> </font><b><font color="#ffffff">read</font></b><font color="#ff0000"> -ra version </font><font color="#F3E651">&lt;&lt;&lt;</font><font color="#ff0000"> </font><font color="#bb00ff">"$BASH_VERSION"</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">[</font><font color="#ff0000"> </font><font color="#bb00ff">"${version[0]}"</font><font color="#ff0000"> -lt </font><font color="#ff0000">$required_version</font><font color="#ff0000"> </font><font color="#F3E651">];</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> log ERROR </font><font color="#bb00ff">"ERROR, </font><font color="#ffffff">\"</font><font color="#bb00ff">bash</font><font color="#ffffff">\"</font><font color="#bb00ff"> must be at least at major version $required_version!"</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">exit</font></b><font color="#ff0000"> </font><font color="#bb00ff">2</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
-
-<font color="#ff0000"> </font><i><font color="#ababab"># These must be the GNU versions of the commands</font></i>
-<font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> tool </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> </font><font color="#ff0000">$DATE</font><font color="#ff0000"> </font><font color="#ff0000">$SED</font><font color="#ff0000"> </font><font color="#ff0000">$GREP</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">!</font><font color="#ff0000"> </font><font color="#ff0000">$tool</font><font color="#ff0000"> --version </font><font color="#F3E651">|</font><font color="#ff0000"> grep -q GNU</font><font color="#F3E651">;</font><font color="#ff0000"> </font><b><font color="#ffffff">then</font></b>
-<font color="#ff0000"> log ERROR </font><font color="#bb00ff">"ERROR, </font><font color="#ffffff">\"</font><font color="#bb00ff">$tool</font><font color="#ffffff">\"</font><font color="#bb00ff"> command is not the GNU version, please install!"</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">exit</font></b><font color="#ff0000"> </font><font color="#bb00ff">2</font>
-<font color="#ff0000"> </font><b><font color="#ffffff">fi</font></b>
-<font color="#ff0000"> </font><b><font color="#ffffff">done</font></b>
-<font color="#ff0000">}</font>
+<pre>check_dependencies () {
+ <i><font color="silver"># At least, Bash 5 is required</font></i>
+ <b><u><font color="#000000">local</font></u></b> -i required_version=<font color="#000000">5</font>
+ IFS=. <b><u><font color="#000000">read</font></u></b> -ra version &lt;&lt;&lt; <font color="#808080">"$BASH_VERSION"</font>
+ <b><u><font color="#000000">if</font></u></b> [ <font color="#808080">"${version[0]}"</font> -lt $required_version ]; <b><u><font color="#000000">then</font></u></b>
+ log ERROR <font color="#808080">"ERROR, </font>\"<font color="#808080">bash</font>\"<font color="#808080"> must be at least at major version $required_version!"</font>
+ <b><u><font color="#000000">exit</font></u></b> <font color="#000000">2</font>
+ <b><u><font color="#000000">fi</font></u></b>
+
+ <i><font color="silver"># These must be the GNU versions of the commands</font></i>
+ <b><u><font color="#000000">for</font></u></b> tool <b><u><font color="#000000">in</font></u></b> $DATE $SED $GREP; <b><u><font color="#000000">do</font></u></b>
+ <b><u><font color="#000000">if</font></u></b> ! $tool --version | grep -q GNU; <b><u><font color="#000000">then</font></u></b>
+ log ERROR <font color="#808080">"ERROR, </font>\"<font color="#808080">$tool</font>\"<font color="#808080"> command is not the GNU version, please install!"</font>
+ <b><u><font color="#000000">exit</font></u></b> <font color="#000000">2</font>
+ <b><u><font color="#000000">fi</font></u></b>
+ <b><u><font color="#000000">done</font></u></b>
+}
</pre>
<br />
<span>Especially macOS users didn&#39;t read the <span class='inlinecode'>README</span> carefully enough to install GNU Grep, GNU Sed and GNU Date before using Gemtexter.</span><br />
@@ -7707,7 +7707,7 @@ http://www.gnu.org/software/src-highlite -->
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
-<pre><font color="#F3E651">.</font><font color="#ff0000">/gemtexter --generate </font><font color="#bb00ff">'.*hello.*'</font>
+<pre>./gemtexter --generate <font color="#808080">'.*hello.*'</font>
</pre>
<br />
<h3 style='display: inline' id='revamped-git-support'>Revamped <span class='inlinecode'>git</span> support</h3><br />
diff --git a/gemfeed/index.html b/gemfeed/index.html
index 3a7cfd48..8eded312 100644
--- a/gemfeed/index.html
+++ b/gemfeed/index.html
@@ -8,6 +8,9 @@
<link rel="stylesheet" href="style-override.css" />
</head>
<body>
+<p class="header">
+View this page as <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/index.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/index.gmi">Gemtext</a>
+</p>
<h1 style='display: inline' id='gemfeed-of-foozone'>Gemfeed of foo.zone</h1><br />
<br />
<h2 style='display: inline' id='to-be-in-the-zone'>To be in the .zone!</h2><br />
@@ -84,7 +87,7 @@
<a class='textlink' href='./2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html'>2008-12-29 - Using my Nokia N95 for fixing my MTA</a><br />
<a class='textlink' href='./2008-06-26-perl-poetry.html'>2008-06-26 - Perl Poetry</a><br />
<p class="footer">
-Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.0-stable</a> |
+Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
<a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
</p>