diff options
author | mjfernez <mjf@mjfer.net> | 2023-07-14 13:21:13 -0400 |
---|---|---|
committer | mjfernez <mjf@mjfer.net> | 2023-07-14 13:21:13 -0400 |
commit | 002118777ddf2f81d2894d81bc7fadc64dbbc36f (patch) | |
tree | e7552ee092e4f4601c96d3a1c97de5f066b637ec /thoughts | |
parent | d96c7cad92b025ad80a8fe64f91d1c215272e313 (diff) | |
download | site-files-002118777ddf2f81d2894d81bc7fadc64dbbc36f.tar.gz |
Add script to update TOC links
With commit 50b72b5787338ee3c0ef0a4aebfcdf8acf3c3a08 in ezcms,
the default behavior for links changes to open in a new tab. This script
helps override the option for table of content links by updating
"target" to point to "_self"
Diffstat (limited to 'thoughts')
-rw-r--r-- | thoughts/syntax/my-worst-habit.html | 25 | ||||
-rw-r--r-- | thoughts/syntax/random-python-idiosyncrasies.html | 115 |
2 files changed, 63 insertions, 77 deletions
diff --git a/thoughts/syntax/my-worst-habit.html b/thoughts/syntax/my-worst-habit.html index 65f19d8..e7fa960 100644 --- a/thoughts/syntax/my-worst-habit.html +++ b/thoughts/syntax/my-worst-habit.html @@ -1,11 +1,11 @@ <!DOCTYPE html> -<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> +<html lang="" xml:lang="" xmlns="http://www.w3.org/1999/xhtml"> <head> - <meta charset="utf-8" /> - <meta name="generator" content="pandoc" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> - <title>my-worst-habit</title> - <style> +<meta charset="utf-8"/> +<meta content="pandoc" name="generator"/> +<meta content="width=device-width, initial-scale=1.0, user-scalable=yes" name="viewport"/> +<title>my-worst-habit</title> +<style> html { line-height: 1.5; font-family: Georgia, serif; @@ -181,18 +181,18 @@ through Klim -- a horrible form of powdered milk tasting like rancid chalk -- and pick up on the results. They hock everything to pay the gas bill, and when the man comes around to shut it off for the non-payment, you can hear their screams for miles. When a citizen is -sick from needing it he says "I got the klinks" or "That old stove -climbing up my back." +sick from needing it he says "I got the klinks" or "That old stove +climbing up my back." -Nutmeg. I quote from the author's article on narcotic drugs in the -British Journal of Addiction (see Appendix): "Convicts and sailors +Nutmeg. I quote from the author's article on narcotic drugs in the +British Journal of Addiction (see Appendix): "Convicts and sailors sometimes have recourse to nutmeg. About a tablespoon is swallowed with water. Result vaguely similar to marijuana with side effects of headache and nausea. There are a number of narcotics of the nutmeg family in use among the Indians of South America. They are usually administered by sniffing a dried powder of the plant. The medicine men take these noxious substances and go into convulsive states. Their -twitchings and mutterings are thought to have prophetic significance.")</code></pre> +twitchings and mutterings are thought to have prophetic significance.")</code></pre> <p>This is the only example I know that dares to put parentheses <em>and</em> a long quote within parentheses, unless we're counting math textbooks. In a way it works, since if information is ever @@ -203,7 +203,7 @@ the reader to scroll down in the hopes that the story continues.</p> <p>But just in case you think I'm just picking on William S. Burroughs, here's an example I regrettably wrote to a coworker recently with some details removed:</p> -<pre><code>[...] As a precaution, I did review $NOBODY's recent +<pre><code>[...] As a precaution, I did review $NOBODY's recent $THING_I_WAS_ASKED_TO_REVIEW (if you would like a detailed report on that, I can pull that together for you).</code></pre> <p>Somehow, I managed to take the <em>one</em> point worth emphasizing @@ -212,3 +212,4 @@ that, I can pull that together for you).</code></pre> complain when I overuse parentheses. I deserve it.</p> </body> </html> + diff --git a/thoughts/syntax/random-python-idiosyncrasies.html b/thoughts/syntax/random-python-idiosyncrasies.html index dc67e4d..5c6ecef 100644 --- a/thoughts/syntax/random-python-idiosyncrasies.html +++ b/thoughts/syntax/random-python-idiosyncrasies.html @@ -1,11 +1,11 @@ <!DOCTYPE html> -<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> +<html lang="" xml:lang="" xmlns="http://www.w3.org/1999/xhtml"> <head> - <meta charset="utf-8" /> - <meta name="generator" content="pandoc" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> - <title>random-python-idiosyncrasies</title> - <style> +<meta charset="utf-8"/> +<meta content="pandoc" name="generator"/> +<meta content="width=device-width, initial-scale=1.0, user-scalable=yes" name="viewport"/> +<title>random-python-idiosyncrasies</title> +<style> html { line-height: 1.5; font-family: Georgia, serif; @@ -222,25 +222,21 @@ <nav id="TOC" role="doc-toc"> <h2 id="toc-title">Contents</h2> <ul> -<li><a href="#coding-style-guide">Coding Style Guide</a> +<li><a href="#coding-style-guide" target="_self">Coding Style Guide</a> <ul> -<li><a -href="#strings-are-double-quoted.-keys-and-chars-are-single-quoted.">1) +<li><a href="#strings-are-double-quoted.-keys-and-chars-are-single-quoted." target="_self">1) <em>Strings</em> are <em>double-quoted</em>. <em>Keys</em> and <em>chars</em> are <em>single-quoted</em>.</a></li> -<li><a href="#long-strings-belong-in-parentheses">2) Long strings belong +<li><a href="#long-strings-belong-in-parentheses" target="_self">2) Long strings belong in parentheses</a></li> -<li><a -href="#tabs-are-four-spaces-and-spaces-are-always-preferred-to-tabs">3) +<li><a href="#tabs-are-four-spaces-and-spaces-are-always-preferred-to-tabs" target="_self">3) Tabs are four spaces and spaces are <em>ALWAYS</em> preferred to tabs</a></li> -<li><a -href="#always-add-spaces-between-arithmetic-but-never-for-brackets">4) +<li><a href="#always-add-spaces-between-arithmetic-but-never-for-brackets" target="_self">4) Always add spaces between arithmetic, but never for brackets</a></li> -<li><a href="#everything-should-be-snake_case">5) EVERYTHING should be +<li><a href="#everything-should-be-snake_case" target="_self">5) EVERYTHING should be snake_case</a></li> -<li><a -href="#if-its-over-100-lines-you-probably-need-a-new-file-and-a-class">6) +<li><a href="#if-its-over-100-lines-you-probably-need-a-new-file-and-a-class" target="_self">6) If it's over 100 lines, you probably need a new file (and a class)</a></li> </ul></li> @@ -258,13 +254,11 @@ inconsistent</li> if you have a good argument for doing things a particular, I don't really care.</p> <p><em>BUT</em> first and foremost, <em>code must comply with PEP8 -first</em>. This is easy to automate. I like <a -href="https://pypi.org/project/black/">black</a> since it's easy to use +first</em>. This is easy to automate. I like <a href="https://pypi.org/project/black/">black</a> since it's easy to use but there' plenty of advanced linters out there.</p> <p>I usually invoke it like this to turn off forcing double quotes and force the line length to 72:</p> -<div class="sourceCode" id="cb1"><pre -class="sourceCode bash"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="ex">black</span> <span class="at">-S</span> <span class="at">-l</span> 72 file.py</span></code></pre></div> +<div class="sourceCode" id="cb1"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb1-1"><a aria-hidden="true" href="#cb1-1" tabindex="-1"></a><span class="ex">black</span> <span class="at">-S</span> <span class="at">-l</span> 72 file.py</span></code></pre></div> <p>That aside, I have the following idiosyncracies:</p> <h2 id="strings-are-double-quoted.-keys-and-chars-are-single-quoted.">1) <em>Strings</em> are <em>double-quoted</em>. <em>Keys</em> and @@ -272,32 +266,29 @@ class="sourceCode bash"><code class="sourceCode bash"><span id="cb1-1"><a href=" <p>This is really just because I like how C does it. And Cpython's C-based so why not?</p> <p>Like so:</p> -<div class="sourceCode" id="cb2"><pre -class="sourceCode python"><code class="sourceCode python"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a>string <span class="op">=</span> <span class="st">"This is a phrase"</span></span> -<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a>word <span class="op">=</span> <span class="st">"word"</span></span> -<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a>cur_char <span class="op">=</span> <span class="st">'a'</span></span> -<span id="cb2-4"><a href="#cb2-4" aria-hidden="true" tabindex="-1"></a>newline <span class="op">=</span> <span class="st">'</span><span class="ch">\n</span><span class="st">'</span> <span class="co"># note, two characters, but it's still ONE char out</span></span> -<span id="cb2-5"><a href="#cb2-5" aria-hidden="true" tabindex="-1"></a><span class="co"># keys are single-quoted to avoid confusion</span></span> -<span id="cb2-6"><a href="#cb2-6" aria-hidden="true" tabindex="-1"></a>dictionary <span class="op">=</span> { <span class="st">'key'</span> <span class="st">"1245dqw3w431"</span>, <span class="st">'return'</span>: newline }</span></code></pre></div> +<div class="sourceCode" id="cb2"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb2-1"><a aria-hidden="true" href="#cb2-1" tabindex="-1"></a>string <span class="op">=</span> <span class="st">"This is a phrase"</span></span> +<span id="cb2-2"><a aria-hidden="true" href="#cb2-2" tabindex="-1"></a>word <span class="op">=</span> <span class="st">"word"</span></span> +<span id="cb2-3"><a aria-hidden="true" href="#cb2-3" tabindex="-1"></a>cur_char <span class="op">=</span> <span class="st">'a'</span></span> +<span id="cb2-4"><a aria-hidden="true" href="#cb2-4" tabindex="-1"></a>newline <span class="op">=</span> <span class="st">'</span><span class="ch">\n</span><span class="st">'</span> <span class="co"># note, two characters, but it's still ONE char out</span></span> +<span id="cb2-5"><a aria-hidden="true" href="#cb2-5" tabindex="-1"></a><span class="co"># keys are single-quoted to avoid confusion</span></span> +<span id="cb2-6"><a aria-hidden="true" href="#cb2-6" tabindex="-1"></a>dictionary <span class="op">=</span> { <span class="st">'key'</span> <span class="st">"1245dqw3w431"</span>, <span class="st">'return'</span>: newline }</span></code></pre></div> <p>The only exception is for strings with quotes in them (anything to avoid escapes, really)</p> -<div class="sourceCode" id="cb3"><pre -class="sourceCode python"><code class="sourceCode python"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a>quoted_string <span class="op">=</span> (</span> -<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a> <span class="st">'"You miss 100</span><span class="sc">% o</span><span class="st">f the shots you don'</span>t take <span class="op">-</span> Wayne Gretsky<span class="st">"'</span></span> -<span id="cb3-3"><a href="#cb3-3" aria-hidden="true" tabindex="-1"></a><span class="er"> ' - Michael Scott'</span></span> -<span id="cb3-4"><a href="#cb3-4" aria-hidden="true" tabindex="-1"></a><span class="er">)</span></span></code></pre></div> +<div class="sourceCode" id="cb3"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb3-1"><a aria-hidden="true" href="#cb3-1" tabindex="-1"></a>quoted_string <span class="op">=</span> (</span> +<span id="cb3-2"><a aria-hidden="true" href="#cb3-2" tabindex="-1"></a> <span class="st">'"You miss 100</span><span class="sc">% o</span><span class="st">f the shots you don'</span>t take <span class="op">-</span> Wayne Gretsky<span class="st">"'</span></span> +<span id="cb3-3"><a aria-hidden="true" href="#cb3-3" tabindex="-1"></a><span class="er"> ' - Michael Scott'</span></span> +<span id="cb3-4"><a aria-hidden="true" href="#cb3-4" tabindex="-1"></a><span class="er">)</span></span></code></pre></div> <p>That brings me to my next point.</p> <h2 id="long-strings-belong-in-parentheses">2) Long strings belong in parentheses</h2> <p>As in:</p> -<div class="sourceCode" id="cb4"><pre -class="sourceCode python"><code class="sourceCode python"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a>longboi <span class="op">=</span> (</span> -<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a> <span class="st">"This is a really long string usefull when making help menus. Be</span><span class="ch">\n</span><span class="st">"</span></span> -<span id="cb4-3"><a href="#cb4-3" aria-hidden="true" tabindex="-1"></a> <span class="st">"sure to leave s space at the end of each line, or add a new line</span><span class="ch">\n</span><span class="st">"</span></span> -<span id="cb4-4"><a href="#cb4-4" aria-hidden="true" tabindex="-1"></a> <span class="st">"when needed.</span><span class="ch">\n\n</span><span class="st">"</span></span> -<span id="cb4-5"><a href="#cb4-5" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb4-6"><a href="#cb4-6" aria-hidden="true" tabindex="-1"></a> <span class="st">"Try your best to keep formatting accurate like this."</span></span> -<span id="cb4-7"><a href="#cb4-7" aria-hidden="true" tabindex="-1"></a>)</span></code></pre></div> +<div class="sourceCode" id="cb4"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb4-1"><a aria-hidden="true" href="#cb4-1" tabindex="-1"></a>longboi <span class="op">=</span> (</span> +<span id="cb4-2"><a aria-hidden="true" href="#cb4-2" tabindex="-1"></a> <span class="st">"This is a really long string usefull when making help menus. Be</span><span class="ch">\n</span><span class="st">"</span></span> +<span id="cb4-3"><a aria-hidden="true" href="#cb4-3" tabindex="-1"></a> <span class="st">"sure to leave s space at the end of each line, or add a new line</span><span class="ch">\n</span><span class="st">"</span></span> +<span id="cb4-4"><a aria-hidden="true" href="#cb4-4" tabindex="-1"></a> <span class="st">"when needed.</span><span class="ch">\n\n</span><span class="st">"</span></span> +<span id="cb4-5"><a aria-hidden="true" href="#cb4-5" tabindex="-1"></a></span> +<span id="cb4-6"><a aria-hidden="true" href="#cb4-6" tabindex="-1"></a> <span class="st">"Try your best to keep formatting accurate like this."</span></span> +<span id="cb4-7"><a aria-hidden="true" href="#cb4-7" tabindex="-1"></a>)</span></code></pre></div> <h2 id="tabs-are-four-spaces-and-spaces-are-always-preferred-to-tabs">3) Tabs are four spaces and spaces are <em>ALWAYS</em> preferred to tabs</h2> @@ -305,36 +296,30 @@ tabs</h2> <h2 id="always-add-spaces-between-arithmetic-but-never-for-brackets">4) Always add spaces between arithmetic, but never for brackets</h2> <p>It's a pain to read:</p> -<div class="sourceCode" id="cb5"><pre -class="sourceCode python"><code class="sourceCode python"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="dv">1</span><span class="op">/</span>(<span class="dv">2</span><span class="op">*</span>sqrt(pi))<span class="op">*</span>exp(x<span class="op">**</span><span class="dv">2</span>)</span></code></pre></div> +<div class="sourceCode" id="cb5"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb5-1"><a aria-hidden="true" href="#cb5-1" tabindex="-1"></a><span class="dv">1</span><span class="op">/</span>(<span class="dv">2</span><span class="op">*</span>sqrt(pi))<span class="op">*</span>exp(x<span class="op">**</span><span class="dv">2</span>)</span></code></pre></div> <p>Do this</p> -<div class="sourceCode" id="cb6"><pre -class="sourceCode python"><code class="sourceCode python"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="dv">1</span> <span class="op">/</span> (<span class="dv">2</span> <span class="op">*</span> sqrt(pi)) <span class="op">*</span> exp(x <span class="op">**</span> <span class="dv">2</span>)</span></code></pre></div> +<div class="sourceCode" id="cb6"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb6-1"><a aria-hidden="true" href="#cb6-1" tabindex="-1"></a><span class="dv">1</span> <span class="op">/</span> (<span class="dv">2</span> <span class="op">*</span> sqrt(pi)) <span class="op">*</span> exp(x <span class="op">**</span> <span class="dv">2</span>)</span></code></pre></div> <p>The same goes for logic operators</p> -<div class="sourceCode" id="cb7"><pre -class="sourceCode python"><code class="sourceCode python"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a>true <span class="op">&</span> false <span class="op">^</span> true</span></code></pre></div> +<div class="sourceCode" id="cb7"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb7-1"><a aria-hidden="true" href="#cb7-1" tabindex="-1"></a>true <span class="op">&</span> false <span class="op">^</span> true</span></code></pre></div> <h2 id="everything-should-be-snake_case">5) EVERYTHING should be snake_case</h2> <p>This is python. Unless there's a compatibility thing (like a library's code was written that way, or it matches an API variable), snake_case is preferred.</p> -<div class="sourceCode" id="cb8"><pre -class="sourceCode python"><code class="sourceCode python"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a>user_input <span class="op">=</span> <span class="bu">int</span>(<span class="bu">input</span>()) <span class="co"># variable</span></span> -<span id="cb8-2"><a href="#cb8-2" aria-hidden="true" tabindex="-1"></a>MAX_INPUT <span class="op">=</span> <span class="dv">1000</span> <span class="co"># constant</span></span> -<span id="cb8-3"><a href="#cb8-3" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> judge_input(_input, _max): <span class="co"># function</span></span> -<span id="cb8-4"><a href="#cb8-4" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> _max <span class="op">></span> _input:</span> -<span id="cb8-5"><a href="#cb8-5" aria-hidden="true" tabindex="-1"></a> <span class="bu">print</span>(<span class="st">"Too big!"</span>)</span> -<span id="cb8-6"><a href="#cb8-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb8-7"><a href="#cb8-7" aria-hidden="true" tabindex="-1"></a>judge_input(user_input, MAX_INPUT</span> -<span id="cb8-8"><a href="#cb8-8" aria-hidden="true" tabindex="-1"></a><span class="kw">class</span> Input_Judger: <span class="co"># a class</span></span> -<span id="cb8-9"><a href="#cb8-9" aria-hidden="true" tabindex="-1"></a> <span class="co"># etc etc</span></span></code></pre></div> +<div class="sourceCode" id="cb8"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb8-1"><a aria-hidden="true" href="#cb8-1" tabindex="-1"></a>user_input <span class="op">=</span> <span class="bu">int</span>(<span class="bu">input</span>()) <span class="co"># variable</span></span> +<span id="cb8-2"><a aria-hidden="true" href="#cb8-2" tabindex="-1"></a>MAX_INPUT <span class="op">=</span> <span class="dv">1000</span> <span class="co"># constant</span></span> +<span id="cb8-3"><a aria-hidden="true" href="#cb8-3" tabindex="-1"></a><span class="kw">def</span> judge_input(_input, _max): <span class="co"># function</span></span> +<span id="cb8-4"><a aria-hidden="true" href="#cb8-4" tabindex="-1"></a> <span class="cf">if</span> _max <span class="op">></span> _input:</span> +<span id="cb8-5"><a aria-hidden="true" href="#cb8-5" tabindex="-1"></a> <span class="bu">print</span>(<span class="st">"Too big!"</span>)</span> +<span id="cb8-6"><a aria-hidden="true" href="#cb8-6" tabindex="-1"></a></span> +<span id="cb8-7"><a aria-hidden="true" href="#cb8-7" tabindex="-1"></a>judge_input(user_input, MAX_INPUT</span> +<span id="cb8-8"><a aria-hidden="true" href="#cb8-8" tabindex="-1"></a><span class="kw">class</span> Input_Judger: <span class="co"># a class</span></span> +<span id="cb8-9"><a aria-hidden="true" href="#cb8-9" tabindex="-1"></a> <span class="co"># etc etc</span></span></code></pre></div> <p>Example exception:</p> -<div class="sourceCode" id="cb9"><pre -class="sourceCode python"><code class="sourceCode python"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="co"># this doesn't actually work, but you get the idea</span></span> -<span id="cb9-2"><a href="#cb9-2" aria-hidden="true" tabindex="-1"></a>r <span class="op">=</span> requests.get(<span class="st">"www.debian.org"</span>)</span> -<span id="cb9-3"><a href="#cb9-3" aria-hidden="true" tabindex="-1"></a>pageSize <span class="op">=</span> r.json()[<span class="st">'pageSize'</span>] <span class="co"># camel case ok</span></span></code></pre></div> -<h2 -id="if-its-over-100-lines-you-probably-need-a-new-file-and-a-class">6) +<div class="sourceCode" id="cb9"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb9-1"><a aria-hidden="true" href="#cb9-1" tabindex="-1"></a><span class="co"># this doesn't actually work, but you get the idea</span></span> +<span id="cb9-2"><a aria-hidden="true" href="#cb9-2" tabindex="-1"></a>r <span class="op">=</span> requests.get(<span class="st">"www.debian.org"</span>)</span> +<span id="cb9-3"><a aria-hidden="true" href="#cb9-3" tabindex="-1"></a>pageSize <span class="op">=</span> r.json()[<span class="st">'pageSize'</span>] <span class="co"># camel case ok</span></span></code></pre></div> +<h2 id="if-its-over-100-lines-you-probably-need-a-new-file-and-a-class">6) If it's over 100 lines, you probably need a new file (and a class)</h2> <p>This is more of a general coding thing, but I've encountered so many 1000 line monster out there, I need to reiterate it. I understand how @@ -344,8 +329,8 @@ Road</em> it comes out as a scroll Merlin himself would be proud of.</p> <p>But coming back to the scroll in a week half-drunk and half-tired is not a situation you want to be caught in. You can always import <em>any</em> python code you write with a simple:</p> -<div class="sourceCode" id="cb10"><pre -class="sourceCode python"><code class="sourceCode python"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> filename</span></code></pre></div> +<div class="sourceCode" id="cb10"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb10-1"><a aria-hidden="true" href="#cb10-1" tabindex="-1"></a><span class="im">import</span> filename</span></code></pre></div> <p>As long as it's in the same directory.</p> </body> </html> + |