Initial commit - code done, other stuff partial
This commit is contained in:
commit
0f497ee7c2
11 changed files with 392 additions and 0 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
site-files/index.html
|
||||
output
|
2
Dockerfile
Normal file
2
Dockerfile
Normal file
|
@ -0,0 +1,2 @@
|
|||
FROM python:slim-bookworm
|
||||
RUN apt update && apt install -y pandoc
|
31
README.md
Normal file
31
README.md
Normal 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
21
dd-progress-to-file.py
Normal 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()
|
BIN
site-files/feed-the-void.png
Normal file
BIN
site-files/feed-the-void.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 628 KiB |
12
site-files/index.md
Normal file
12
site-files/index.md
Normal 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
11
site-files/make-page.sh
Executable 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
219
site-files/prism.css
Normal 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
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
68
site-files/style.css
Normal 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
18
site-files/template.html
Normal 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>
|
Loading…
Reference in a new issue