2022-02-08
This commit is contained in:
parent
5b8e914783
commit
d5df24e20d
144
homepage/blog
144
homepage/blog
@ -37,6 +37,150 @@ __NAVIGATION__
|
|||||||
</PRE></BODY></HTML>
|
</PRE></BODY></HTML>
|
||||||
|
|
||||||
|
|
||||||
|
2022-02-08
|
||||||
|
|
||||||
|
If you had ghosts in your blood cocaine would totally work on getting
|
||||||
|
rid of the ghosts.
|
||||||
|
|
||||||
|
|
||||||
|
2022-02-07
|
||||||
|
|
||||||
|
#!/bin/sh
|
||||||
|
set -ex;mkdir -p blah;python -c "import os;os.chdir('blah')
|
||||||
|
with open('../$0', 'r') as f:
|
||||||
|
for day in f.read().split('\n\n\n'):
|
||||||
|
if day.split('\n')[0] == '#!/bin/sh':
|
||||||
|
prefix='\n'.join(day.split('\n')[day.split('\n').index(
|
||||||
|
'exit 0')+1:])+'\n';continue
|
||||||
|
elif day.split('\n')[0][:4] == '<!--': suffix=day;continue
|
||||||
|
with open(day.split('\n')[0]+'.html', 'x') as g:
|
||||||
|
g.write(prefix+day+'\n'+suffix)
|
||||||
|
";cd blah;for f in *.html;do #in glob we trust
|
||||||
|
test -z "$last" || sed -i "s,__NAVIGATION__,$nav<A HREF=\"$f\">\></A></P>," \
|
||||||
|
"$last";nav="<P>";test -z "$last"||nav="$nav<A HREF=\"$last\">\<</A>"
|
||||||
|
nav="$nav<A HREF=\"index.html\">^</A>";last="$f";done
|
||||||
|
sed -i "s,__NAVIGATION__,$nav</P>," "$last";for f in *.html;do #e unibus puellam
|
||||||
|
fi="$(echo "$f" | cut -d . -f 1)";test "$fi" = "index" && continue
|
||||||
|
printf '<A HREF="/blah/%s.html">%s</A>\n' "$fi" "$fi"; done|sort -r|\
|
||||||
|
sed -e "1i<!DOCTYPE html><HTML><HEAD><TITLE>blah</TITLE></HEAD><BODY><PRE>\
|
||||||
|
<A HREF="..">..</A>" -e '$a</PRE></BODY></HTML>'>index.html
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
That's the source code to this blog, in its entirety. My writing
|
||||||
|
process was simple:
|
||||||
|
- write the beginning and initial Python portion
|
||||||
|
- pass out
|
||||||
|
- wake up at 0600 not knowing who or where I am
|
||||||
|
- see this code and continue it
|
||||||
|
- pass out again
|
||||||
|
- wake up at 1700 knowing who but not where I am
|
||||||
|
- write most of the rest
|
||||||
|
- pass out again
|
||||||
|
- wake up half an hour later, finish
|
||||||
|
|
||||||
|
It's organized in sections though it doesn't appear to be organized
|
||||||
|
whatsoever:
|
||||||
|
|
||||||
|
#!/bin/sh
|
||||||
|
set -ex
|
||||||
|
mkdir -p blah
|
||||||
|
python -c "
|
||||||
|
import os
|
||||||
|
os.chdir('blah')
|
||||||
|
with open('../$0', 'r') as f:
|
||||||
|
for day in f.read().split('\n\n\n'):
|
||||||
|
if day.split('\n')[0] == '#!/bin/sh':
|
||||||
|
prefix = '\n'.join(
|
||||||
|
day.split('\n')[
|
||||||
|
day.split('\n').index('exit 0')+1:
|
||||||
|
|
||||||
|
]
|
||||||
|
) + '\n'
|
||||||
|
continue
|
||||||
|
elif day.split('\n')[0][:4] == '<!--':
|
||||||
|
suffix = day
|
||||||
|
continue
|
||||||
|
with open(day.split('\n')[0]+'.html', 'x') as g:
|
||||||
|
g.write(prefix + day + '\n' + suffix)
|
||||||
|
"
|
||||||
|
|
||||||
|
This splits the blog into days, where each day is delimited by three
|
||||||
|
newlines. Every day is two lines apart.
|
||||||
|
A day that starts with the POSIX shell shebang is the /prefix/, which
|
||||||
|
is prepended to each day. It cuts off everything until after "exit 0", the end
|
||||||
|
of the script, and after that is the actual HTML prefix to each blah page.
|
||||||
|
A day that starts as an HTML comment is the /suffix/, appended to each
|
||||||
|
day. This obligates an HTML comment at the end of each post, the same comment,
|
||||||
|
so I just made it something sort of interesting yet sort of bog standard.
|
||||||
|
I explained this poorly but I spread the code out so it's a little
|
||||||
|
easier to read, I think it's pretty simple. git.sr.ht/~trinity/homepage/tree
|
||||||
|
/main/blog, you can see how it's laid out.
|
||||||
|
Each day, prefixed and suffixed, is output as its own [day].html to the
|
||||||
|
created blah/ directory.
|
||||||
|
|
||||||
|
Next:
|
||||||
|
|
||||||
|
cd blah
|
||||||
|
for f in *.html
|
||||||
|
do
|
||||||
|
test -z "$last" || sed -i \
|
||||||
|
-e "s,_NAVIGATION_,$nav<A HREF=\"$f\">\></A></P>," "$last"
|
||||||
|
nav="<P>"
|
||||||
|
test -z "$last" \
|
||||||
|
|| nav="$nav<A HREF=\"$last\">\<</A>"
|
||||||
|
nav="$nav<A HREF=\"index.html\">^</A>"
|
||||||
|
last="$f"
|
||||||
|
done
|
||||||
|
sed -i "s,_NAVIGATION_,$nav</P>," "$last"
|
||||||
|
|
||||||
|
This replaces _NAVIGATION_ with an actual navigation bar. The actual
|
||||||
|
string has two underscores before and after NAVIGATION but this blog is held
|
||||||
|
together with shoelaces and bubble gum and I don't wanna fuck around and find
|
||||||
|
out.
|
||||||
|
I don't know how this works, I let my fingers handle the flow.
|
||||||
|
(The secret is that I just run it in my head and adjust the
|
||||||
|
beginnings and ends until it runs in my head for two times
|
||||||
|
correctly. Then as long as state doesn't drift it's all good.
|
||||||
|
This is fucky and I don't know how to explain it and I don't
|
||||||
|
really know how it all goes about but you can do really
|
||||||
|
complex but really really tight program flow just by vibing
|
||||||
|
against it and letting your fingers tap tap tap, yknow?)
|
||||||
|
|
||||||
|
Next:
|
||||||
|
|
||||||
|
for f in *.html
|
||||||
|
do
|
||||||
|
fi="$(echo "$f" | cut -d . -f 1)"
|
||||||
|
test "$fi" = "index" \
|
||||||
|
&& continue
|
||||||
|
printf '<A HREF="/blah/%s.html">%s</A>\n' "$fi" "$fi"
|
||||||
|
done \
|
||||||
|
| sort -r \
|
||||||
|
| sed \
|
||||||
|
-e "1i\
|
||||||
|
<!DOCTYPE html><HTML><HEAD><TITLE>blah</TITLE></HEAD><BODY><PRE><A HREF="..">..</A>" \
|
||||||
|
-e '$a</PRE></BODY></HTML>' \
|
||||||
|
> index.html
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
This takes all the files in blah/, builds an index, adds a prefix and
|
||||||
|
suffix to the stream, and outputs it all to blah/index.html in one go. This is
|
||||||
|
the simplest part of the script and I was worried it would be hard but it
|
||||||
|
wasn't really, it just required a little bit of embracing of UNIX piping.
|
||||||
|
|
||||||
|
["Streambreak"]: After experiencing a genocide, Ada Karina time travels
|
||||||
|
back to the past to prevent it from happening. However things start diverging
|
||||||
|
from plan when a soup-fueled arsonist grows from nuisance to idol to
|
||||||
|
geopolitical disaster.
|
||||||
|
["Antero"]: Tales from a future dystopia where the very formation of
|
||||||
|
memories is outlawed.
|
||||||
|
["Sponge"]: Olive Edgerton is an employee at an impossibly popular
|
||||||
|
burger joint, where every ingredient is grown or produced in-house.
|
||||||
|
["Saikokon"]: After an apocalypse, the last survivor is selected as an
|
||||||
|
exhibit at Saikokon, a conference for psychic time travelers.
|
||||||
|
["Pasture"]: Tales from after the end of the world.
|
||||||
|
|
||||||
|
|
||||||
2023-02-06
|
2023-02-06
|
||||||
|
|
||||||
2022年03月02日
|
2022年03月02日
|
||||||
|
Loading…
Reference in New Issue
Block a user