Initial commit - code done, other stuff partial

This commit is contained in:
askiiart 2023-11-20 18:00:13 -06:00
commit 0f497ee7c2
Signed by untrusted user who does not match committer: askiiart
GPG key ID: BC3800E55FB54D67
11 changed files with 392 additions and 0 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
site-files/index.html
output

2
Dockerfile Normal file
View file

@ -0,0 +1,2 @@
FROM python:slim-bookworm
RUN apt update && apt install -y pandoc

31
README.md Normal file
View file

@ -0,0 +1,31 @@
# F E E D T H E V O I D
<!-- Note that there's a zero-width space between the spaces so that all 3 render -->
![Useful Linux Tips: Run dd if=/dev/zero of=/dev/null to feed nothing to the void](/feed-the-void.png)
**Witness the void consume zeroes for all eternity**
---
This puts the output of `dd` into a file, which is then read and made into a webpage every second. It's just a bodged-together mess, but it works*
\* Disclaimer: No idea if this works, I'm from the past where the program wasn't done yet.
## Docker
`docker run`:
```sh
docker run -v .:/data registry.askiiart.net/askiiart/feed-the-void
```
`docker-compose.yml`:
```yml
version: "3.7"
services:
feed-the-void:
image: registry.askiiart.net/askiiart/feed-the-void
volumes:
- .:/data
```

21
dd-progress-to-file.py Normal file
View file

@ -0,0 +1,21 @@
#!/usr/bin/env python3
# From https://stackoverflow.com/a/25755038
from subprocess import Popen, PIPE, STDOUT
from os import remove
shell = Popen(['dd', 'if=/dev/zero', 'of=/dev/null', 'status=progress'],
stdout=PIPE, stderr=STDOUT, universal_newlines=True, bufsize=1)
remove('output')
try:
for line in iter(shell.stdout.readline, b''):
f = open('output', 'w')
if (line.strip() != ''): # Ignore empty lines (always 1 at the start)
line = line.rstrip()
print(line)
f.write(line)
f.close()
except KeyboardInterrupt:
f.close()
exit()

Binary file not shown.

After

Width:  |  Height:  |  Size: 628 KiB

12
site-files/index.md Normal file
View file

@ -0,0 +1,12 @@
# F E E D T H E V O I D
<!-- Note that there's a zero-width space between the spaces so that all 3 render -->
```sh
dd if=/dev/zero of=/dev/null status=progress
```
```txt
output here
```
![Useful Linux Tips: Run dd if=/dev/zero of=/dev/null to feed nothing to the void](feed-the-void.png)

11
site-files/make-page.sh Executable file
View file

@ -0,0 +1,11 @@
#!/usr/bin/env bash
set -e
while true; do
dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
pandoc -f markdown-smart --data-dir . --template ${dir}/template.html -t html -o $dir/tmp.html $dir/index.md --metadata title="$(grep -m 1 -oP '(?<=^# ).*' $dir/index.md | cat)"
sed -i "s/output here/$(sed 's/\//\\\//g' $dir/../output)/g" $dir/tmp.html
sed "s/sourceCode /language-/g" $dir/tmp.html > $dir/index.html
rm -f $dir/tmp.html
sleep 1
done

219
site-files/prism.css Normal file
View file

@ -0,0 +1,219 @@
/* PrismJS 1.29.0
https://prismjs.com/download.html#themes=prism-okaidia&languages=bash+shell-session&plugins=line-numbers+toolbar+copy-to-clipboard */
code[class*=language-],
pre[class*=language-] {
color: #f8f8f2;
background: 0 0;
text-shadow: 0 1px rgba(0, 0, 0, .3);
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
font-size: 1em;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none
}
pre[class*=language-] {
padding: 1em;
margin: .5em 0;
overflow: auto;
border-radius: .3em
}
:not(pre)>code[class*=language-],
pre[class*=language-] {
background: #121212
}
:not(pre)>code[class*=language-] {
padding: .1em;
border-radius: .3em;
white-space: normal
}
.token.cdata,
.token.comment,
.token.doctype,
.token.prolog {
color: #8292a2
}
.token.punctuation {
color: #f8f8f2
}
.token.namespace {
opacity: .7
}
.token.constant,
.token.deleted,
.token.property,
.token.symbol,
.token.tag {
color: #f92672
}
.token.boolean,
.token.number {
color: #ae81ff
}
.token.attr-name,
.token.builtin,
.token.char,
.token.inserted,
.token.selector,
.token.string {
color: #a6e22e
}
.language-css .token.string,
.style .token.string,
.token.entity,
.token.operator,
.token.url,
.token.variable {
color: #f8f8f2
}
.token.atrule,
.token.attr-value,
.token.class-name,
.token.function {
color: #e6db74
}
.token.keyword {
color: #66d9ef
}
.token.important,
.token.regex {
color: #fd971f
}
.token.bold,
.token.important {
font-weight: 700
}
.token.italic {
font-style: italic
}
.token.entity {
cursor: help
}
pre[class*=language-].line-numbers {
position: relative;
padding-left: 3.8em;
counter-reset: linenumber
}
pre[class*=language-].line-numbers>code {
position: relative;
white-space: inherit
}
.line-numbers .line-numbers-rows {
position: absolute;
pointer-events: none;
top: 0;
font-size: 100%;
left: -3.8em;
width: 3em;
letter-spacing: -1px;
border-right: 1px solid #999;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none
}
.line-numbers-rows>span {
display: block;
counter-increment: linenumber
}
.line-numbers-rows>span:before {
content: counter(linenumber);
color: #999;
display: block;
padding-right: .8em;
text-align: right
}
div.code-toolbar {
position: relative
}
div.code-toolbar>.toolbar {
position: absolute;
z-index: 10;
top: .3em;
right: .2em;
transition: opacity .3s ease-in-out;
opacity: 0
}
div.code-toolbar:hover>.toolbar {
opacity: 1
}
div.code-toolbar:focus-within>.toolbar {
opacity: 1
}
div.code-toolbar>.toolbar>.toolbar-item {
display: inline-block
}
div.code-toolbar>.toolbar>.toolbar-item>a {
cursor: pointer
}
div.code-toolbar>.toolbar>.toolbar-item>button {
background: 0 0;
border: 0;
color: inherit;
font: inherit;
line-height: normal;
overflow: visible;
padding: 0;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none
}
div.code-toolbar>.toolbar>.toolbar-item>a,
div.code-toolbar>.toolbar>.toolbar-item>button,
div.code-toolbar>.toolbar>.toolbar-item>span {
color: #bbb;
font-size: .8em;
padding: 0 .5em;
background: #f5f2f0;
background: rgba(224, 224, 224, .2);
box-shadow: 0 2px 0 0 rgba(0, 0, 0, .2);
border-radius: .5em
}
div.code-toolbar>.toolbar>.toolbar-item>a:focus,
div.code-toolbar>.toolbar>.toolbar-item>a:hover,
div.code-toolbar>.toolbar>.toolbar-item>button:focus,
div.code-toolbar>.toolbar>.toolbar-item>button:hover,
div.code-toolbar>.toolbar>.toolbar-item>span:focus,
div.code-toolbar>.toolbar>.toolbar-item>span:hover {
color: inherit;
text-decoration: none
}

8
site-files/prism.js Normal file

File diff suppressed because one or more lines are too long

68
site-files/style.css Normal file
View file

@ -0,0 +1,68 @@
body {
color: #dadada;
background: #202020;
margin: 1em auto;
max-width: 90vw;
padding: 0 .62em;
font: 1.0em/1.35 sans-serif
}
a:link,
a:visited {
color: #80c47b;
}
a:hover,
a:visited:hover {
color: #6bb794
}
h1,
h2,
h3 {
line-height: 1.2
}
code {
background: #121212
}
pre {
background: #121212
}
wrap {
word-wrap: break-word
}
@media (max-device-width: 1200px) {
h1 {
line-height: 1.2;
font-size: 40px;
}
h2 {
line-height: 1.2;
font-size: 30px;
}
body {
font-size: 20px;
}
pre,
code {
font-size: 16px;
}
}
@media print {
body {
max-width: none
}
}
footer {
text-align: center;
}

18
site-files/template.html Normal file
View file

@ -0,0 +1,18 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta content="width=device-width, initial-scale=1" charset="utf-8" />
<link rel="icon" href="feed-the-void.png" type="image/icon">
<meta http-equiv="refresh" content="5" />
<title>$title$</title>
<link href="prism.css" rel="stylesheet" />
<link href="style.css" rel="stylesheet" />
</head>
<body class="line-numbers">
$body$
<script src="prism.js"></script>
</body>
<footer>
<p><a href="https://git.askiiart.net/askiiart/feed-the-void">code</a> | <b>this page refreshes every 5 seconds</b></p>
</footer>
</html>