From 9cb56dabb676391a9382731347e8d2b07b9437a5 Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Sun, 7 Apr 2024 13:25:49 +0200 Subject: big cleanup --- sites/apl.pmikkelsen.com/_werc/lib/footer.inc | 1 - sites/apl.pmikkelsen.com/_werc/lib/top_bar.inc | 8 - sites/apl.pmikkelsen.com/favicon.ico | Bin 2576 -> 0 bytes sites/apl.pmikkelsen.com/index.md | 2 +- sites/lpa.pmikkelsen.com/_werc/lib/footer.inc | 1 - sites/lpa.pmikkelsen.com/_werc/lib/top_bar.inc | 8 - sites/lpa.pmikkelsen.com/favicon.ico | Bin 2576 -> 0 bytes sites/pmikkelsen.com/_files/djv.tar | Bin 1822720 -> 0 bytes sites/pmikkelsen.com/_files/djvmono.tar | Bin 993280 -> 0 bytes sites/pmikkelsen.com/_files/faces.patch | 105 ---- sites/pmikkelsen.com/_files/ndb.diff | 70 --- sites/pmikkelsen.com/_files/websocket-webfs.patch | 565 --------------------- .../_tmp/agda-dfa/Agda.Primitive.Cubical.html | 55 -- .../_tmp/agda-dfa/Agda.Primitive.html | 35 -- sites/pmikkelsen.com/_tmp/agda-dfa/Agda.css | 39 -- sites/pmikkelsen.com/_tmp/agda-dfa/DFA.html | 115 ----- sites/pmikkelsen.com/_werc/config | 2 +- sites/pmikkelsen.com/_werc/lib/footer.inc | 1 - sites/pmikkelsen.com/_werc/lib/top_bar.inc | 11 - sites/pmikkelsen.com/favicon.ico | Bin 2576 -> 0 bytes sites/pmikkelsen.com/images/2048.gif | Bin 4157248 -> 0 bytes sites/pmikkelsen.com/images/acme-in-action.png | Bin 286658 -> 0 bytes sites/pmikkelsen.com/images/cdude.png | Bin 20432 -> 0 bytes sites/pmikkelsen.com/images/creepy_glenda.jpg | Bin 36669 -> 0 bytes sites/pmikkelsen.com/images/cursed.png | Bin 18433 -> 0 bytes sites/pmikkelsen.com/images/discordgif.gif | Bin 9196759 -> 0 bytes sites/pmikkelsen.com/images/djvfonts.png | Bin 138021 -> 0 bytes sites/pmikkelsen.com/images/fear.jpg | Bin 48380 -> 0 bytes sites/pmikkelsen.com/images/hehegame.gif | Bin 5903435 -> 0 bytes sites/pmikkelsen.com/images/hehegame2.gif | Bin 5903435 -> 0 bytes sites/pmikkelsen.com/images/hehegame3.gif | Bin 10636922 -> 0 bytes sites/pmikkelsen.com/images/kykeliky.png | Bin 1055680 -> 0 bytes sites/pmikkelsen.com/images/linuxreverse.gif | Bin 201797 -> 0 bytes sites/pmikkelsen.com/images/mordor.gif | Bin 1620703 -> 0 bytes sites/pmikkelsen.com/images/rustdude.png | Bin 18584 -> 0 bytes sites/pmikkelsen.com/images/walkoff.png | Bin 19140 -> 0 bytes sites/pmikkelsen.com/images/wip-discord.png | Bin 55180 -> 0 bytes .../pmikkelsen.com/me/how-i-started-using-acme.md | 2 +- sites/pmikkelsen.com/plan9/discord.md | 2 +- sites/pmikkelsen.com/plan9/fonts.md | 6 +- sites/pmikkelsen.com/plan9/lets_encrypt.md | 2 +- .../plan9/mounting-9p-over-drawterm.md | 2 +- sites/pmikkelsen.com/plan9/webfs-websocket.md | 4 +- sites/prolog.pmikkelsen.com/_werc/lib/footer.inc | 1 - sites/prolog.pmikkelsen.com/_werc/lib/top_bar.inc | 8 - sites/prolog.pmikkelsen.com/favicon.ico | Bin 2576 -> 0 bytes sites/prolog.pmikkelsen.com/index.md | 2 +- 47 files changed, 12 insertions(+), 1035 deletions(-) delete mode 100644 sites/apl.pmikkelsen.com/_werc/lib/footer.inc delete mode 100644 sites/apl.pmikkelsen.com/_werc/lib/top_bar.inc delete mode 100644 sites/apl.pmikkelsen.com/favicon.ico delete mode 100644 sites/lpa.pmikkelsen.com/_werc/lib/footer.inc delete mode 100644 sites/lpa.pmikkelsen.com/_werc/lib/top_bar.inc delete mode 100644 sites/lpa.pmikkelsen.com/favicon.ico delete mode 100644 sites/pmikkelsen.com/_files/djv.tar delete mode 100644 sites/pmikkelsen.com/_files/djvmono.tar delete mode 100644 sites/pmikkelsen.com/_files/faces.patch delete mode 100644 sites/pmikkelsen.com/_files/ndb.diff delete mode 100644 sites/pmikkelsen.com/_files/websocket-webfs.patch delete mode 100644 sites/pmikkelsen.com/_tmp/agda-dfa/Agda.Primitive.Cubical.html delete mode 100644 sites/pmikkelsen.com/_tmp/agda-dfa/Agda.Primitive.html delete mode 100644 sites/pmikkelsen.com/_tmp/agda-dfa/Agda.css delete mode 100644 sites/pmikkelsen.com/_tmp/agda-dfa/DFA.html delete mode 100644 sites/pmikkelsen.com/_werc/lib/footer.inc delete mode 100644 sites/pmikkelsen.com/_werc/lib/top_bar.inc delete mode 100644 sites/pmikkelsen.com/favicon.ico delete mode 100644 sites/pmikkelsen.com/images/2048.gif delete mode 100644 sites/pmikkelsen.com/images/acme-in-action.png delete mode 100644 sites/pmikkelsen.com/images/cdude.png delete mode 100644 sites/pmikkelsen.com/images/creepy_glenda.jpg delete mode 100644 sites/pmikkelsen.com/images/cursed.png delete mode 100644 sites/pmikkelsen.com/images/discordgif.gif delete mode 100644 sites/pmikkelsen.com/images/djvfonts.png delete mode 100644 sites/pmikkelsen.com/images/fear.jpg delete mode 100644 sites/pmikkelsen.com/images/hehegame.gif delete mode 100644 sites/pmikkelsen.com/images/hehegame2.gif delete mode 100644 sites/pmikkelsen.com/images/hehegame3.gif delete mode 100644 sites/pmikkelsen.com/images/kykeliky.png delete mode 100644 sites/pmikkelsen.com/images/linuxreverse.gif delete mode 100644 sites/pmikkelsen.com/images/mordor.gif delete mode 100644 sites/pmikkelsen.com/images/rustdude.png delete mode 100644 sites/pmikkelsen.com/images/walkoff.png delete mode 100644 sites/pmikkelsen.com/images/wip-discord.png delete mode 100644 sites/prolog.pmikkelsen.com/_werc/lib/footer.inc delete mode 100644 sites/prolog.pmikkelsen.com/_werc/lib/top_bar.inc delete mode 100644 sites/prolog.pmikkelsen.com/favicon.ico (limited to 'sites') diff --git a/sites/apl.pmikkelsen.com/_werc/lib/footer.inc b/sites/apl.pmikkelsen.com/_werc/lib/footer.inc deleted file mode 100644 index 2deed52..0000000 --- a/sites/apl.pmikkelsen.com/_werc/lib/footer.inc +++ /dev/null @@ -1 +0,0 @@ -Powered by werc © Peter Mikkelsen 2022 \ No newline at end of file diff --git a/sites/apl.pmikkelsen.com/_werc/lib/top_bar.inc b/sites/apl.pmikkelsen.com/_werc/lib/top_bar.inc deleted file mode 100644 index 4c23cf3..0000000 --- a/sites/apl.pmikkelsen.com/_werc/lib/top_bar.inc +++ /dev/null @@ -1,8 +0,0 @@ -
- APL9 source code | - pmikkelsen's site | - 9front -
- -
-
diff --git a/sites/apl.pmikkelsen.com/favicon.ico b/sites/apl.pmikkelsen.com/favicon.ico deleted file mode 100644 index 745367e..0000000 Binary files a/sites/apl.pmikkelsen.com/favicon.ico and /dev/null differ diff --git a/sites/apl.pmikkelsen.com/index.md b/sites/apl.pmikkelsen.com/index.md index f27aac5..3e3eb8a 100644 --- a/sites/apl.pmikkelsen.com/index.md +++ b/sites/apl.pmikkelsen.com/index.md @@ -57,5 +57,5 @@ time, to get `⍶⍸⍹⍷⍣` and so on. Please email me if you have questions [![A picture of APL9 in action][2]][2] -[2]: /_images/apl-screenshot.png +[2]: https://images.pmikkelsen.com/apl-screenshot.png [1]: https://dyalog.com diff --git a/sites/lpa.pmikkelsen.com/_werc/lib/footer.inc b/sites/lpa.pmikkelsen.com/_werc/lib/footer.inc deleted file mode 100644 index d69228a..0000000 --- a/sites/lpa.pmikkelsen.com/_werc/lib/footer.inc +++ /dev/null @@ -1 +0,0 @@ -Powered by werc © Peter Mikkelsen 2024 \ No newline at end of file diff --git a/sites/lpa.pmikkelsen.com/_werc/lib/top_bar.inc b/sites/lpa.pmikkelsen.com/_werc/lib/top_bar.inc deleted file mode 100644 index 730a160..0000000 --- a/sites/lpa.pmikkelsen.com/_werc/lib/top_bar.inc +++ /dev/null @@ -1,8 +0,0 @@ -
- LPA source code | - pmikkelsen's site | - 9front -
- -
-
diff --git a/sites/lpa.pmikkelsen.com/favicon.ico b/sites/lpa.pmikkelsen.com/favicon.ico deleted file mode 100644 index 745367e..0000000 Binary files a/sites/lpa.pmikkelsen.com/favicon.ico and /dev/null differ diff --git a/sites/pmikkelsen.com/_files/djv.tar b/sites/pmikkelsen.com/_files/djv.tar deleted file mode 100644 index 5d60262..0000000 Binary files a/sites/pmikkelsen.com/_files/djv.tar and /dev/null differ diff --git a/sites/pmikkelsen.com/_files/djvmono.tar b/sites/pmikkelsen.com/_files/djvmono.tar deleted file mode 100644 index 1fb0c7d..0000000 Binary files a/sites/pmikkelsen.com/_files/djvmono.tar and /dev/null differ diff --git a/sites/pmikkelsen.com/_files/faces.patch b/sites/pmikkelsen.com/_files/faces.patch deleted file mode 100644 index 3309c1b..0000000 --- a/sites/pmikkelsen.com/_files/faces.patch +++ /dev/null @@ -1,105 +0,0 @@ -From 5595dbb332eae353832dbc2ad11ef92aeb8fcab0 -From: Peter Mikkelsen -Date: Mon, 28 Jun 2021 21:45:53 +0000 -Subject: [PATCH] Add -u flag to faces, making it only show unread messages. - ---- -diff 658757abed7be283e06bae3b1722fc2703334d74 5595dbb332eae353832dbc2ad11ef92aeb8fcab0 ---- a/sys/man/1/faces Sun Jun 27 02:13:58 2021 -+++ b/sys/man/1/faces Mon Jun 28 23:45:53 2021 -@@ -4,7 +4,7 @@ - .SH SYNOPSIS - .B faces - [ --.B -ihc -+.B -ihcu - ] [ - .B -m - .I maildir -@@ -99,6 +99,15 @@ - rather than the current state of the mail box. - In particular, faces are not removed from the screen when messages are deleted. - Also, in this mode clicking button 1 in the display will clear the window. -+.PP -+The -+.B -u -+flag causes -+.I faces -+to read in the mailbox like with the -+.B -i -+flag, but it only shows the unread ones. -+When right-clicking on a message icon in this mode, the message is both plumbed and removed from the view. - .PP - .I Seemail - is an ---- a/sys/src/cmd/faces/main.c Sun Jun 27 02:13:58 2021 -+++ b/sys/src/cmd/faces/main.c Mon Jun 28 23:45:53 2021 -@@ -10,6 +10,7 @@ - int history = 0; /* use old interface, showing history of mailbox rather than current state */ - int initload = 0; /* initialize program with contents of mail box */ - int clickrm = 0; /* allows removing mail faces by left clicking */ -+int onlyunread = 0; /* initialize program with unread messages, remove when clicked */ - - enum - { -@@ -358,6 +359,28 @@ - unlockdisplay(display); - } - -+int -+isunread(char *dir, char *num) -+{ -+ char buf[1024], flags[8]; -+ int n, fd, unread; -+ -+ snprint(buf, sizeof(buf), "%s/%s/flags", dir, num); -+ fd = open(buf, OREAD); -+ if(fd < 0) -+ return 0; -+ n = readn(fd, flags, 7); -+ close(fd); -+ if(n != 7) -+ return 0; -+ flags[n] = '\0'; -+ if(strchr(flags, 's') != nil) -+ unread = 0; -+ else -+ unread = 1; -+ return unread; -+} -+ - void - loadmboxfaces(char *maildir) - { -@@ -370,7 +393,8 @@ - chdir(maildir); - while((n = dirread(dirfd, &d)) > 0){ - for(i=0; iTall) -+ if(type < 0 || type >Tcaa) - return 0; - return rrtname[type] != nil; - } -@@ -1891,7 +1892,7 @@ - char *t; - - t = nil; -- if(type >= 0 && type <= Tall) -+ if(type >= 0 && type <= Tcaa) - t = rrtname[type]; - if(t==nil){ - snprint(buf, len, "%d", type); -diff -r 4adb989bc93e sys/src/cmd/ndb/dns.h ---- a/sys/src/cmd/ndb/dns.h Tue Nov 03 20:47:14 2020 +0100 -+++ b/sys/src/cmd/ndb/dns.h Sun Nov 29 16:42:47 2020 +0100 -@@ -71,6 +71,7 @@ - Tmailb= 253, /* { Tmb, Tmg, Tmr } */ - Tmaila= 254, /* obsolete */ - Tall= 255, /* all records */ -+ Tcaa= 257, /* Certification authority restriction */ - - /* classes */ - Csym= 0, /* internal symbols */ diff --git a/sites/pmikkelsen.com/_files/websocket-webfs.patch b/sites/pmikkelsen.com/_files/websocket-webfs.patch deleted file mode 100644 index 77c44b0..0000000 --- a/sites/pmikkelsen.com/_files/websocket-webfs.patch +++ /dev/null @@ -1,565 +0,0 @@ -From 424bcc25db6c3de73678fe43d44e4b408cd0434d -From: Peter Mikkelsen -Date: Wed, 23 Jun 2021 15:44:24 +0000 -Subject: [PATCH] Initial buggy version of adding websocket support to webfs - - -It can create connections but doesn't handle errors very well yet. ---- -diff ce73821f3575921e24f839b21c7be60520a9dc42 424bcc25db6c3de73678fe43d44e4b408cd0434d ---- a/sys/src/cmd/webfs/fns.h Mon Jun 21 17:38:11 2021 -+++ b/sys/src/cmd/webfs/fns.h Wed Jun 23 17:44:24 2021 -@@ -41,3 +41,6 @@ - int authenticate(Url *u, Url *ru, char *method, char *s); - void flushauth(Url *u, char *t); - void http(char *m, Url *u, Key *shdr, Buq *qbody, Buq *qpost); -+ -+/* websocket */ -+void websocket(int fd, Buq *qbody, Buq *qpost); ---- a/sys/src/cmd/webfs/fs.c Mon Jun 21 17:38:11 2021 -+++ b/sys/src/cmd/webfs/fs.c Wed Jun 23 17:44:24 2021 -@@ -4,6 +4,7 @@ - #include - #include - #include <9p.h> -+#include - - #include "dat.h" - #include "fns.h" -@@ -19,10 +20,12 @@ - Url *baseurl; - Url *url; - Key *hdr; -+ int wantwebsocket; - - int obody; /* body opend */ - int cbody; /* body closed */ - Buq *qbody; -+ Buq *websocketin; /* websocket input */ - }; - - struct Webfid -@@ -121,6 +124,8 @@ - - buclose(cl->qbody, 0); - bufree(cl->qbody); -+ buclose(cl->websocketin, 0); -+ bufree(cl->websocketin); - - while(k = cl->hdr){ - cl->hdr = k->next; -@@ -384,6 +389,25 @@ - if(cl->qbody == nil){ - char *m; - -+ if(f->level == Qbody && (!strcmp(cl->url->scheme, "ws") || !strcmp(cl->url->scheme, "wss"))){ -+ cl->wantwebsocket = 1; -+ cl->websocketin = bualloc(64*1024); -+ if(!lookkey(cl->hdr, "Upgrade")) -+ cl->hdr = addkey(cl->hdr, "Upgrade", "websocket"); -+ if(!lookkey(cl->hdr, "Connection")) -+ cl->hdr = addkey(cl->hdr, "Connection", "upgrade"); -+ if(!lookkey(cl->hdr, "Sec-WebSocket-Version")) -+ cl->hdr = addkey(cl->hdr, "Sec-WebSocket-Version", "13"); -+ if(!lookkey(cl->hdr, "Sec-WebSocket-Key")){ -+ uchar nonce[16]; -+ char *b64nonce; -+ genrandom(nonce, 16); -+ b64nonce = smprint("%.*[", 16, nonce); -+ cl->hdr = addkey(cl->hdr, "Sec-WebSocket-Key", b64nonce); -+ free(b64nonce); -+ } -+ } -+ - if(cl->url == nil){ - respond(r, "no url set"); - return; -@@ -413,7 +437,7 @@ - if(agent && !lookkey(cl->hdr, "User-Agent")) - cl->hdr = addkey(cl->hdr, "User-Agent", agent); - -- http(m, cl->url, cl->hdr, cl->qbody, f->buq); -+ http(m, cl->url, cl->hdr, cl->qbody, cl->wantwebsocket ? cl->websocketin : f->buq); - cl->request[0] = 0; - cl->url = nil; - cl->hdr = nil; -@@ -683,6 +707,11 @@ - case Qpost: - bureq(f->buq, r); - return; -+ case Qbody: -+ if(f->client->wantwebsocket){ -+ bureq(f->client->websocketin, r); -+ return; -+ } - } - respond(r, "not implemented"); - } ---- a/sys/src/cmd/webfs/http.c Mon Jun 21 17:38:11 2021 -+++ b/sys/src/cmd/webfs/http.c Wed Jun 23 17:44:24 2021 -@@ -131,7 +131,7 @@ - if(strcmp(proxy->scheme, "https") == 0) - fd = tlswrap(fd, proxy->host); - } else { -- if(strcmp(u->scheme, "https") == 0) -+ if(strcmp(u->scheme, "https") == 0 || strcmp(u->scheme, "wss") == 0) - fd = tlswrap(fd, u->host); - } - if(fd < 0){ -@@ -520,7 +520,7 @@ - void - http(char *m, Url *u, Key *shdr, Buq *qbody, Buq *qpost) - { -- int i, l, n, try, pid, fd, cfd, needlength, chunked, retry, nobody, badauth; -+ int i, l, n, try, pid, fd, cfd, needlength, chunked, retry, nobody, badauth, wantwebsocket; - char *s, *x, buf[8192+2], status[256], method[16], *host; - vlong length, offset; - Url ru, tu, *nu; -@@ -549,8 +549,13 @@ - break; - } - -+ if(!strcmp(u->scheme, "ws") || !strcmp(u->scheme, "wss")) -+ wantwebsocket = 1; -+ else -+ wantwebsocket = 0; -+ - notify(catch); -- if(qpost){ -+ if(qpost && !wantwebsocket){ - /* file for spooling the postbody if we need to restart the request */ - snprint(buf, sizeof(buf), "/tmp/http.%d.%d.post", getppid(), getpid()); - fd = create(buf, OEXCL|ORDWR|ORCLOSE, 0600); -@@ -565,7 +570,7 @@ - badauth = 0; - for(try = 0; try < 12; try++){ - strcpy(status, "0 No status"); -- if(u == nil || (strcmp(u->scheme, "http") && strcmp(u->scheme, "https"))){ -+ if(u == nil || (strcmp(u->scheme, "http") && strcmp(u->scheme, "https") && strcmp(u->scheme, "ws") && strcmp(u->scheme, "wss"))){ - werrstr("bad url scheme"); - break; - } -@@ -591,7 +596,7 @@ - - length = 0; - chunked = 0; -- if(qpost){ -+ if(qpost && !wantwebsocket){ - /* have to read it to temp file to figure out the length */ - if(fd >= 0 && needlength && lookkey(shdr, "Content-Length") == nil){ - seek(fd, 0, 2); -@@ -700,7 +705,7 @@ - goto Retry; - } - -- if(qpost && !h->tunnel){ -+ if(qpost && !h->tunnel && !wantwebsocket){ - h->cancel = 0; - if((pid = rfork(RFMEM|RFPROC)) <= 0){ - int ifd; -@@ -802,8 +807,42 @@ - goto Status; - } - goto Error; -- case 100: /* Continue */ - case 101: /* Switching Protocols */ -+ if(wantwebsocket){ -+ int ok = 1; -+ char *wskey = lookkey(shdr, "Sec-WebSocket-Key"); -+ -+ k = getkey(rhdr, "Upgrade"); -+ if(k == nil || cistrcmp(k->val, "websocket") != 0) -+ ok = 0; -+ -+ k = getkey(rhdr, "Connection"); -+ if(k == nil && cistrcmp(k->val, "upgrade") != 0) -+ ok = 0; -+ -+ k = getkey(rhdr, "Sec-WebSocket-Accept"); -+ if(k == nil || wskey == nil) -+ ok = 0; -+ else{ -+ uchar digest[SHA1dlen]; -+ char *str = smprint("%s258EAFA5-E914-47DA-95CA-C5AB0DC85B11", wskey); -+ -+ sha1((uchar*)str, strlen(str), digest, nil); -+ char *val = smprint("%.*[", SHA1dlen, digest); -+ if(strcmp(val, k->val) != 0) -+ ok = 0; -+ free(str); -+ free(val); -+ } -+ -+ if(ok){ -+ qbody->url = u; u = nil; -+ qbody->hdr = rhdr; rhdr = nil; -+ websocket(h->fd, qbody, qpost); -+ } -+ goto Error; -+ } -+ case 100: /* Continue */ - case 102: /* Processing */ - case 103: /* Early Hints */ - while(k = rhdr){ ---- a/sys/src/cmd/webfs/mkfile Mon Jun 21 17:38:11 2021 -+++ b/sys/src/cmd/webfs/mkfile Wed Jun 23 17:44:24 2021 -@@ -3,6 +3,6 @@ - TARG=webfs - - HFILES=fns.h dat.h --OFILES=sub.$O url.$O buq.$O http.$O fs.$O -+OFILES=sub.$O url.$O buq.$O http.$O websocket.$O fs.$O - - -+#include -+#include -+#include -+#include <9p.h> -+#include -+ -+#include "dat.h" -+#include "fns.h" -+ -+typedef struct Frame Frame; -+typedef struct Message Message; -+ -+struct Frame -+{ -+ int final; -+ int opcode; -+ int masked; -+ uchar maskkey[4]; -+ uvlong length; -+ uchar *data; -+ -+ Frame *next; /* Chain frames in a message together */ -+}; -+ -+struct Message -+{ -+ int type; -+ uvlong length; -+ uchar *data; -+}; -+ -+enum { -+ ContinueFrame = 0x0, -+ TextFrame = 0x1, -+ BinaryFrame = 0x2, -+ CloseFrame = 0x8, -+ PingFrame = 0x9, -+ PongFrame = 0xA, -+}; -+ -+void writemessage(int, Message *); -+ -+void -+maskframe(Frame *f) -+{ -+ uvlong i; -+ for(i = 0; i < f->length; i++) -+ f->data[i] = f->data[i] ^ f->maskkey[i%4]; -+} -+ -+Frame * -+readframe(int fd) -+{ -+ Frame *f = malloc(sizeof(Frame)); -+ long n; -+ int offset; -+ uchar len; -+ -+ uchar buf[4096]; -+ -+Again: -+ offset = 0; -+ n = read(fd, buf, 2); -+ if(n != 2) -+ goto Error; -+ -+ f->final = (buf[offset] >> 7) & 0x1; -+ /* ignore rsv1, rsv2, rsv3 */ -+ f->opcode = buf[offset] & 0x0F; -+ offset++; -+ -+ f->masked = (buf[offset] >> 7) & 0x1; -+ len = buf[offset] & 0x7F; -+ offset++; -+ -+ if(len <= 125) -+ f->length = len; -+ else if(len == 126){ -+ n = read(fd, buf+offset, 2); -+ if(n != 2) -+ goto Error; -+ -+ f->length = buf[offset++] << 8; -+ f->length |= buf[offset++]; -+ }else if(len == 127){ -+ n = read(fd, buf+offset, 8); -+ if(n != 8) -+ goto Error; -+ f->length = (uvlong)buf[offset++] << 56; -+ f->length |= (uvlong)buf[offset++] << 48; -+ f->length |= (uvlong)buf[offset++] << 40; -+ f->length |= (uvlong)buf[offset++] << 32; -+ f->length |= buf[offset++] << 24; -+ f->length |= buf[offset++] << 16; -+ f->length |= buf[offset++] << 8; -+ f->length |= buf[offset++]; -+ } -+ -+ if(f->masked){ -+ n = read(fd, buf+offset, 4); -+ if(n != 4) -+ goto Error; -+ -+ f->maskkey[0] = buf[offset++]; -+ f->maskkey[1] = buf[offset++]; -+ f->maskkey[2] = buf[offset++]; -+ f->maskkey[3] = buf[offset]; -+ } -+ -+ f->data = malloc(f->length); -+ readn(fd, f->data, f->length); -+ if(f->masked) -+ maskframe(f); -+ -+ if(f->opcode == PingFrame){ -+ Message *m = malloc(sizeof(Message)); -+ m->type = PongFrame; -+ m->length = f->length; -+ m->data = f->data; -+ writemessage(fd, m); /* SHOULD LOCK */ -+ free(m); -+ free(f->data); -+ goto Again; -+ } -+ -+ return f; -+Error: -+ exits("Readframe failed"); -+ return nil; -+} -+ -+Message * -+framestomessage(Frame *frames) -+{ -+ Message *m = malloc(sizeof(Message)); -+ uvlong length = 0; -+ uvlong offset = 0; -+ -+ Frame *f; -+ for(f = frames; f != nil; f = f->next) -+ length += f->length; -+ -+ m->type = frames->opcode; -+ m->length = length; -+ m->data = malloc(length); -+ for(f = frames; f != nil; f = f->next){ -+ memcpy(m->data + offset, f->data, f->length); -+ offset += f->length; -+ } -+ -+ return m; -+} -+ -+Message * -+readmsg(int fd) -+{ -+ Frame *frames = readframe(fd); -+ Frame *last = frames; -+ Message *m; -+ -+ while(!last->final){ -+ last->next = readframe(fd); -+ last = last->next; -+ } -+ last->next = nil; -+ -+ m = framestomessage(frames); -+ while(frames){ -+ Frame *f = frames->next; -+ free(frames->data); -+ free(frames); -+ frames = f; -+ } -+ return m; -+} -+ -+void -+writeframe(int fd, Frame *f) -+{ -+ uchar *buf; -+ uvlong totsize = 0; -+ uvlong offset = 0; -+ int lenbytes = 0; -+ -+ totsize += 2; /* Always there */ -+ if(f->length == 126) -+ lenbytes = 2; -+ else if(f->length == 127) -+ lenbytes = 8; -+ totsize += lenbytes; -+ -+ if(f->masked) -+ totsize += 4; -+ -+ totsize += f->length; -+ -+ buf = malloc(totsize); -+ -+ buf[offset] = f->final << 7; -+ buf[offset++] |= f->opcode; -+ buf[offset] = f->masked << 7; -+ -+ if(lenbytes == 0) -+ buf[offset++] |= f->length; -+ else if(lenbytes == 2) -+ buf[offset++] |= 126; -+ else if(lenbytes == 8) -+ buf[offset++] |= 127; -+ -+ if(lenbytes == 2){ -+ buf[offset++] = 0xFF & (f->length >> 8); -+ buf[offset++] = 0xFF & f->length; -+ }else if(lenbytes == 8){ -+ buf[offset++] = 0xFF & (f->length >> 56); -+ buf[offset++] = 0xFF & (f->length >> 48); -+ buf[offset++] = 0xFF & (f->length >> 40); -+ buf[offset++] = 0xFF & (f->length >> 32); -+ buf[offset++] = 0xFF & (f->length >> 24); -+ buf[offset++] = 0xFF & (f->length >> 16); -+ buf[offset++] = 0xFF & (f->length >> 8); -+ buf[offset++] = 0xFF & f->length; -+ } -+ -+ if(f->masked){ -+ buf[offset++] = f->maskkey[0]; -+ buf[offset++] = f->maskkey[1]; -+ buf[offset++] = f->maskkey[2]; -+ buf[offset++] = f->maskkey[3]; -+ } -+ -+ memcpy(buf + offset, f->data, f->length); -+ write(fd, buf, totsize); -+} -+ -+void -+writemessage(int fd, Message *m) -+{ -+ /* Could split up the message into frames but not right now. */ -+ -+ Frame *f = malloc(sizeof(Frame)); -+ f->final = 1; -+ f->opcode = m->type; -+ f->masked = 1; -+ genrandom(f->maskkey, 4); -+ f->length = m->length; -+ f->data = malloc(f->length); -+ memcpy(f->data, m->data, f->length); -+ maskframe(f); -+ f->next = nil; -+ -+ writeframe(fd, f); -+ free(f->data); -+ free(f); -+} -+ -+void -+websocketrecv(int fd, Buq *qbody) -+{ -+ /* -+ * Plan: Read frames and when we have a whole message do: -+ * 1) If control, act on it -+ * 2) If data, format as text and buwrite it -+ */ -+ while(1){ -+ Message *m = readmsg(fd); -+ //print("Received message type=%d length=%ulld\n", m->type, m->length); -+ -+ if(m->type == TextFrame || m->type == BinaryFrame){ -+ char *header; -+ if(m->type == TextFrame) -+ header = smprint("t %0.20ulld", m->length); -+ else -+ header = smprint("b %0.20ulld", m->length); -+ buwrite(qbody, header, 22); -+ buwrite(qbody, m->data, m->length); -+ } -+ free(m->data); -+ free(m); -+ } -+} -+ -+void -+websocketsend(int fd, Buq *qpost) -+{ -+ /* buread messages and pack them up in frames and send them */ -+ char buf[64]; -+ long n; -+ Message *m; -+ while(1){ -+ n = buread(qpost, buf, 22); -+ if(n != 22){ -+ buclose(qpost, "Header short"); -+ return; -+ } -+ buf[n] = 0; -+ -+ m = malloc(sizeof(Message)); -+ if(buf[0] == 't') -+ m->type = TextFrame; -+ else if(buf[0] == 'b') -+ m->type = BinaryFrame; -+ -+ char *ret; -+ m->length = strtoull(buf+2, &ret, 10); -+ if(ret != buf+22){ -+ buclose(qpost, "Header format wrong"); -+ return; -+ } -+ -+ m->data = malloc(m->length); -+ n = 0; -+ while(n < m->length){ -+ uvlong missing = m->length - n; -+ n += buread(qpost, m->data + n, (missing < 8192) ? missing : 8192); -+ } -+ -+ writemessage(fd, m); -+ free(m->data); -+ free(m); -+ } -+} -+ -+void -+websocket(int fd, Buq *qbody, Buq *qpost) -+{ -+ buwrite(qbody, "websocket ready\n", 16); -+ switch(rfork(RFPROC|RFMEM)){ -+ default: -+ websocketrecv(fd, qbody); -+ break; -+ case 0: -+ websocketsend(fd, qpost); -+ goto End; -+ case -1: -+ buclose(qbody, "can't fork"); -+ bufree(qbody); -+ buclose(qpost, "can't fork"); -+ bufree(qpost); -+ break; -+ } -+End: -+ close(fd); -+ buclose(qbody, nil); -+ bufree(qbody); -+ buclose(qpost, nil); -+ bufree(qpost); -+ exits(nil); -+} diff --git a/sites/pmikkelsen.com/_tmp/agda-dfa/Agda.Primitive.Cubical.html b/sites/pmikkelsen.com/_tmp/agda-dfa/Agda.Primitive.Cubical.html deleted file mode 100644 index 1be20f5..0000000 --- a/sites/pmikkelsen.com/_tmp/agda-dfa/Agda.Primitive.Cubical.html +++ /dev/null @@ -1,55 +0,0 @@ - -Agda.Primitive.Cubical
{-# OPTIONS --cubical --no-subtyping #-}
-
-module Agda.Primitive.Cubical where
-
-{-# BUILTIN INTERVAL I  #-}  -- I : Setω
-
-{-# BUILTIN IZERO    i0 #-}
-{-# BUILTIN IONE     i1 #-}
-
-infix  30 primINeg
-infixr 20 primIMin primIMax
-
-primitive
-    primIMin : I  I  I
-    primIMax : I  I  I
-    primINeg : I  I
-
-{-# BUILTIN ISONE    IsOne    #-}  -- IsOne : I → Setω
-
-postulate
-  itIsOne : IsOne i1
-  IsOne1  :  i j  IsOne i  IsOne (primIMax i j)
-  IsOne2  :  i j  IsOne j  IsOne (primIMax i j)
-
-{-# BUILTIN ITISONE  itIsOne  #-}
-{-# BUILTIN ISONE1   IsOne1   #-}
-{-# BUILTIN ISONE2   IsOne2   #-}
-
--- Partial : ∀{ℓ} (i : I) (A : Set ℓ) → Set ℓ
--- Partial i A = IsOne i → A
-
-{-# BUILTIN PARTIAL  Partial  #-}
-{-# BUILTIN PARTIALP PartialP #-}
-
-postulate
-  isOneEmpty :  {} {A : Partial i0 (Set )}  PartialP i0 A
-
-{-# BUILTIN ISONEEMPTY isOneEmpty #-}
-
-primitive
-  primPOr :  {} (i j : I) {A : Partial (primIMax i j) (Set )}
-             (u : PartialP i  z  A (IsOne1 i j z)))
-             (v : PartialP j  z  A (IsOne2 i j z)))
-             PartialP (primIMax i j) A
-
-  -- Computes in terms of primHComp and primTransp
-  primComp :  {} (A : (i : I)  Set ( i)) {φ : I} (u :  i  Partial φ (A i)) (a : A i0)  A i1
-
-syntax primPOr p q u t = [ p  u , q  t ]
-
-primitive
-  primTransp :  {} (A : (i : I)  Set ( i)) (φ : I) (a : A i0)  A i1
-  primHComp  :  {} {A : Set } {φ : I} (u :  i  Partial φ A) (a : A)  A
-
\ No newline at end of file diff --git a/sites/pmikkelsen.com/_tmp/agda-dfa/Agda.Primitive.html b/sites/pmikkelsen.com/_tmp/agda-dfa/Agda.Primitive.html deleted file mode 100644 index 5829754..0000000 --- a/sites/pmikkelsen.com/_tmp/agda-dfa/Agda.Primitive.html +++ /dev/null @@ -1,35 +0,0 @@ - -Agda.Primitive
-- The Agda primitives (preloaded).
-
-{-# OPTIONS --without-K --no-subtyping #-}
-
-module Agda.Primitive where
-
-------------------------------------------------------------------------
--- Universe levels
-------------------------------------------------------------------------
-
-infixl 6 _⊔_
-
--- Level is the first thing we need to define.
--- The other postulates can only be checked if built-in Level is known.
-
-postulate
-  Level : Set
-
--- MAlonzo compiles Level to (). This should be safe, because it is
--- not possible to pattern match on levels.
-
-{-# BUILTIN LEVEL Level #-}
-
-postulate
-  lzero : Level
-  lsuc  : ( : Level)  Level
-  _⊔_   : (ℓ₁ ℓ₂ : Level)  Level
-
-{-# BUILTIN LEVELZERO lzero #-}
-{-# BUILTIN LEVELSUC  lsuc  #-}
-{-# BUILTIN LEVELMAX  _⊔_   #-}
-
-{-# BUILTIN SETOMEGA Setω #-}
-
\ No newline at end of file diff --git a/sites/pmikkelsen.com/_tmp/agda-dfa/Agda.css b/sites/pmikkelsen.com/_tmp/agda-dfa/Agda.css deleted file mode 100644 index 3a4b225..0000000 --- a/sites/pmikkelsen.com/_tmp/agda-dfa/Agda.css +++ /dev/null @@ -1,39 +0,0 @@ -/* Aspects. */ -.Agda .Comment { color: #B22222 } -.Agda .Background {} -.Agda .Markup { color: #000000 } -.Agda .Keyword { color: #CD6600 } -.Agda .String { color: #B22222 } -.Agda .Number { color: #A020F0 } -.Agda .Symbol { color: #404040 } -.Agda .PrimitiveType { color: #0000CD } -.Agda .Pragma { color: black } -.Agda .Operator {} - -/* NameKinds. */ -.Agda .Bound { color: black } -.Agda .Generalizable { color: black } -.Agda .InductiveConstructor { color: #008B00 } -.Agda .CoinductiveConstructor { color: #8B7500 } -.Agda .Datatype { color: #0000CD } -.Agda .Field { color: #EE1289 } -.Agda .Function { color: #0000CD } -.Agda .Module { color: #A020F0 } -.Agda .Postulate { color: #0000CD } -.Agda .Primitive { color: #0000CD } -.Agda .Record { color: #0000CD } - -/* OtherAspects. */ -.Agda .DottedPattern {} -.Agda .UnsolvedMeta { color: black; background: yellow } -.Agda .UnsolvedConstraint { color: black; background: yellow } -.Agda .TerminationProblem { color: black; background: #FFA07A } -.Agda .IncompletePattern { color: black; background: #F5DEB3 } -.Agda .Error { color: red; text-decoration: underline } -.Agda .TypeChecks { color: black; background: #ADD8E6 } -.Agda .Deadcode { color: black; background: #808080 } -.Agda .ShadowingInTelescope { color: black; background: #808080 } - -/* Standard attributes. */ -.Agda a { text-decoration: none } -.Agda a[href]:hover { background-color: #B4EEB4 } diff --git a/sites/pmikkelsen.com/_tmp/agda-dfa/DFA.html b/sites/pmikkelsen.com/_tmp/agda-dfa/DFA.html deleted file mode 100644 index 308e205..0000000 --- a/sites/pmikkelsen.com/_tmp/agda-dfa/DFA.html +++ /dev/null @@ -1,115 +0,0 @@ - -DFA
module DFA where
-
--- A pair type 
-record _×_ (A B : Set) : Set where
-  constructor _,_
-  field
-    fst : A
-    snd : B
-
--- A list type
-infixr 5 _∷_
-data List (a : Set) : Set where
-  [] : List a
-  _∷_ : a  List a  List a
-
--- Elements of type x ∈ xs is a proof that x is somewhere in xs
-data _∈_ {A : Set}(x : A) : (xs : List A)  Set where
-  here :  {xs}  x  (x  xs)
-  there :  {y xs}  x  xs  x  (y  xs)
-
--- Elements of type a ≡ b is a proof that a and b are the same
-data _≡_ {A : Set}(x : A) : A  Set where
-  refl : x  x
-
--- The empty type. There are no members of this type, so it is the same as false
-data  : Set where
-
--- Negation is defined by a function that takes a proof and returns ⊥, which is impossible. In agda an inhabited type means a proof, and an uninhabited means no proof.
-¬_ : Set  Set
-¬ A = A  
-
--- A DFA is a five tuple of Q Σ q₀ δ F
-record DFA (Q : Set) (Σ : Set) (q₀ : Q) (δ : Q × Σ  Q) (F : List Q) : Set where
-
--- The DFArun data type keeps track of a running dfa.
-data DFArun {Q Σ q₀ δ F}(dfa : DFA Q Σ q₀ δ F) : (q : Q)  (w : List Σ)  Set where
-  empty : {q : Q}  q  F  DFArun dfa q []
-  acceptOne : {ws : List Σ} 
-              (w : Σ) 
-              (q : Q) 
-              DFArun dfa (δ (q , w)) ws 
-              DFArun dfa q (w  ws)
-
--- Accepts dfa w is a proof that running the dfa with input w is possible form the start state q₀
-data Accepts {Q Σ q₀ δ F}(dfa : DFA Q Σ q₀ δ F) : (w : List Σ)  Set where
-  accepts : ∀{w}  DFArun dfa q₀ w  Accepts dfa w
-
--- CantAccept dfa q w is a proof that running the dfa on imput w is impossible if we want to start at state q₀. It has to start in q instead.
-data CantAccept {Q Σ q₀ δ F}(dfa : DFA Q Σ q₀ δ F) : (q : Q)  (w : List Σ)  Set where
-  cantAccept :  {w q}  DFArun dfa q w  ¬(q  q₀)  CantAccept dfa q w
-
-
--- w ∈Lang dfa gives either a proof that w is in the language of the dfa, or that it isn't.
-data _∈Lang_ {Q Σ q₀ δ F}(w : List Σ)(dfa : DFA Q Σ q₀ δ F) : Set where
-  inLang : Accepts dfa w  w ∈Lang dfa
-  notInLang : ∀{q}  CantAccept dfa q w  w ∈Lang dfa
-
-
-
-
--- Test stuff. Create a DFA which only accepts an input with an even number of a's
-
-data TestQ : Set where
-  evenNumberOfAs : TestQ
-  oddNumberOfAs : TestQ
-
-data TestΣ : Set where
-  a : TestΣ
-  b : TestΣ
-
-Testδ : TestQ × TestΣ  TestQ
-Testδ (evenNumberOfAs , a) = oddNumberOfAs
-Testδ (evenNumberOfAs , b) = evenNumberOfAs
-Testδ (oddNumberOfAs , a) = evenNumberOfAs
-Testδ (oddNumberOfAs , b) = oddNumberOfAs
-
-TestF : List TestQ
-TestF = evenNumberOfAs  []
-
-TestDFA : DFA TestQ TestΣ evenNumberOfAs Testδ TestF
-TestDFA = _ -- Since a DFA is a record with no fields, agda can infer it
-
--- Try to construct proofs for different input strings
-
-input₁ input₂ input₃ : List TestΣ
-input₁ = [] -- Empty string
-input₂ = a  b  a  a  b  [] -- Three a's
-input₃ = b  b  a  b  a  [] -- Two a's
-
-
--- The proofs are found automatically by agda, and no other proofs would type check
-proof₁ : input₁ ∈Lang TestDFA -- Proof that input₁ is in the language
-proof₁ = inLang (accepts (empty here))
-
-proof₂ : input₂ ∈Lang TestDFA -- Proof that input₂ is not in the language
-proof₂ = notInLang
-           (cantAccept
-            (acceptOne a oddNumberOfAs
-             (acceptOne b evenNumberOfAs
-              (acceptOne a evenNumberOfAs
-               (acceptOne a oddNumberOfAs
-                (acceptOne b evenNumberOfAs (empty here))))))
-             ()))
-
-proof₃ : input₃ ∈Lang TestDFA -- Proof that input₃ is in the language
-proof₃ = inLang
-           (accepts
-            (acceptOne b evenNumberOfAs
-             (acceptOne b evenNumberOfAs
-              (acceptOne a evenNumberOfAs
-               (acceptOne b oddNumberOfAs
-                (acceptOne a oddNumberOfAs (empty here)))))))
-
-
\ No newline at end of file diff --git a/sites/pmikkelsen.com/_werc/config b/sites/pmikkelsen.com/_werc/config index 85a49d9..c71d503 100644 --- a/sites/pmikkelsen.com/_werc/config +++ b/sites/pmikkelsen.com/_werc/config @@ -1,3 +1,3 @@ masterSite=pmikkelsen.com siteTitle='Peter's website' -siteSubTitle='random notes' +siteSubTitle='- random notes' diff --git a/sites/pmikkelsen.com/_werc/lib/footer.inc b/sites/pmikkelsen.com/_werc/lib/footer.inc deleted file mode 100644 index 90fc345..0000000 --- a/sites/pmikkelsen.com/_werc/lib/footer.inc +++ /dev/null @@ -1 +0,0 @@ -Powered by werc © Peter Mikkelsen 2019-2024 diff --git a/sites/pmikkelsen.com/_werc/lib/top_bar.inc b/sites/pmikkelsen.com/_werc/lib/top_bar.inc deleted file mode 100644 index 5e5c7bc..0000000 --- a/sites/pmikkelsen.com/_werc/lib/top_bar.inc +++ /dev/null @@ -1,11 +0,0 @@ -
- sourcehut | - gitlab | - prolog | - APL9 | - 9front -
- -
-
- diff --git a/sites/pmikkelsen.com/favicon.ico b/sites/pmikkelsen.com/favicon.ico deleted file mode 100644 index 745367e..0000000 Binary files a/sites/pmikkelsen.com/favicon.ico and /dev/null differ diff --git a/sites/pmikkelsen.com/images/2048.gif b/sites/pmikkelsen.com/images/2048.gif deleted file mode 100644 index 19dd98f..0000000 Binary files a/sites/pmikkelsen.com/images/2048.gif and /dev/null differ diff --git a/sites/pmikkelsen.com/images/acme-in-action.png b/sites/pmikkelsen.com/images/acme-in-action.png deleted file mode 100644 index b74d9dc..0000000 Binary files a/sites/pmikkelsen.com/images/acme-in-action.png and /dev/null differ diff --git a/sites/pmikkelsen.com/images/cdude.png b/sites/pmikkelsen.com/images/cdude.png deleted file mode 100644 index 66ee18d..0000000 Binary files a/sites/pmikkelsen.com/images/cdude.png and /dev/null differ diff --git a/sites/pmikkelsen.com/images/creepy_glenda.jpg b/sites/pmikkelsen.com/images/creepy_glenda.jpg deleted file mode 100644 index c1a35ba..0000000 Binary files a/sites/pmikkelsen.com/images/creepy_glenda.jpg and /dev/null differ diff --git a/sites/pmikkelsen.com/images/cursed.png b/sites/pmikkelsen.com/images/cursed.png deleted file mode 100644 index f92e06e..0000000 Binary files a/sites/pmikkelsen.com/images/cursed.png and /dev/null differ diff --git a/sites/pmikkelsen.com/images/discordgif.gif b/sites/pmikkelsen.com/images/discordgif.gif deleted file mode 100644 index 207af41..0000000 Binary files a/sites/pmikkelsen.com/images/discordgif.gif and /dev/null differ diff --git a/sites/pmikkelsen.com/images/djvfonts.png b/sites/pmikkelsen.com/images/djvfonts.png deleted file mode 100644 index 86d58a4..0000000 Binary files a/sites/pmikkelsen.com/images/djvfonts.png and /dev/null differ diff --git a/sites/pmikkelsen.com/images/fear.jpg b/sites/pmikkelsen.com/images/fear.jpg deleted file mode 100644 index b585dfc..0000000 Binary files a/sites/pmikkelsen.com/images/fear.jpg and /dev/null differ diff --git a/sites/pmikkelsen.com/images/hehegame.gif b/sites/pmikkelsen.com/images/hehegame.gif deleted file mode 100644 index 5c385cb..0000000 Binary files a/sites/pmikkelsen.com/images/hehegame.gif and /dev/null differ diff --git a/sites/pmikkelsen.com/images/hehegame2.gif b/sites/pmikkelsen.com/images/hehegame2.gif deleted file mode 100644 index 5c385cb..0000000 Binary files a/sites/pmikkelsen.com/images/hehegame2.gif and /dev/null differ diff --git a/sites/pmikkelsen.com/images/hehegame3.gif b/sites/pmikkelsen.com/images/hehegame3.gif deleted file mode 100644 index 231f8ef..0000000 Binary files a/sites/pmikkelsen.com/images/hehegame3.gif and /dev/null differ diff --git a/sites/pmikkelsen.com/images/kykeliky.png b/sites/pmikkelsen.com/images/kykeliky.png deleted file mode 100644 index 0144cae..0000000 Binary files a/sites/pmikkelsen.com/images/kykeliky.png and /dev/null differ diff --git a/sites/pmikkelsen.com/images/linuxreverse.gif b/sites/pmikkelsen.com/images/linuxreverse.gif deleted file mode 100644 index 6684116..0000000 Binary files a/sites/pmikkelsen.com/images/linuxreverse.gif and /dev/null differ diff --git a/sites/pmikkelsen.com/images/mordor.gif b/sites/pmikkelsen.com/images/mordor.gif deleted file mode 100644 index fe13c09..0000000 Binary files a/sites/pmikkelsen.com/images/mordor.gif and /dev/null differ diff --git a/sites/pmikkelsen.com/images/rustdude.png b/sites/pmikkelsen.com/images/rustdude.png deleted file mode 100644 index c184664..0000000 Binary files a/sites/pmikkelsen.com/images/rustdude.png and /dev/null differ diff --git a/sites/pmikkelsen.com/images/walkoff.png b/sites/pmikkelsen.com/images/walkoff.png deleted file mode 100644 index 871bb7c..0000000 Binary files a/sites/pmikkelsen.com/images/walkoff.png and /dev/null differ diff --git a/sites/pmikkelsen.com/images/wip-discord.png b/sites/pmikkelsen.com/images/wip-discord.png deleted file mode 100644 index 2ecafcc..0000000 Binary files a/sites/pmikkelsen.com/images/wip-discord.png and /dev/null differ diff --git a/sites/pmikkelsen.com/me/how-i-started-using-acme.md b/sites/pmikkelsen.com/me/how-i-started-using-acme.md index 9e37dd7..143839b 100644 --- a/sites/pmikkelsen.com/me/how-i-started-using-acme.md +++ b/sites/pmikkelsen.com/me/how-i-started-using-acme.md @@ -114,4 +114,4 @@ text in sam with is another editor written by Rob Pike, and I quite like that one too for smaller projects. You can read more about sam [here](http://sam.cat-v.org/). -[1]: /images/acme-in-action.png \ No newline at end of file +[1]: https://images.pmikkelsen.com/acme-in-action.png diff --git a/sites/pmikkelsen.com/plan9/discord.md b/sites/pmikkelsen.com/plan9/discord.md index 8a9815f..fd7a508 100644 --- a/sites/pmikkelsen.com/plan9/discord.md +++ b/sites/pmikkelsen.com/plan9/discord.md @@ -80,4 +80,4 @@ I don't even notice it is not running locally. * No, this has not been tested very much, it just seems to do the job well enough for now. -[1]: /images/discordgif.gif +[1]: https://images.pmikkelsen.com/discordgif.gif diff --git a/sites/pmikkelsen.com/plan9/fonts.md b/sites/pmikkelsen.com/plan9/fonts.md index 6cd6780..d062276 100644 --- a/sites/pmikkelsen.com/plan9/fonts.md +++ b/sites/pmikkelsen.com/plan9/fonts.md @@ -4,9 +4,9 @@ By default 9front uses a font called VGA but its too small for my eyes. The fonts I use (dejavu) look like this[![an image showing the fonts][1]][1] and are attached below: -[proportional font](/_files/djv.tar) +[proportional font](https://files.pmikkelsen.com/djv.tar) -[monospace font](/_files/djvmono.tar) +[monospace font](https://files.pmikkelsen.com/djvmono.tar) They can be recreated by having them installed on linux and doing the following from linux with plan9port installed. @@ -26,4 +26,4 @@ Finally change your `lib/profile` to use `/lib/font/bit/djv/font` :) Note that 9front includes truetypefs which allows you to use `.ttf` files directly, but I find the results are better looking this way. -[1]: /images/djvfonts.png \ No newline at end of file +[1]: https://images.pmikkelsen.com/djvfonts.png diff --git a/sites/pmikkelsen.com/plan9/lets_encrypt.md b/sites/pmikkelsen.com/plan9/lets_encrypt.md index c22d0fa..a7eae3a 100644 --- a/sites/pmikkelsen.com/plan9/lets_encrypt.md +++ b/sites/pmikkelsen.com/plan9/lets_encrypt.md @@ -10,7 +10,7 @@ Install certbot on linux and run the following command certbot certonly --manual -d pmikkelsen.com -d vps1.pmikkelsen.com and do the challenges, they should be easy. -I use the diff [here](/_files/ndb.diff) to make 9fronts dns server understand the needed records. +I use the diff [here](https://files.pmikkelsen.com/ndb.diff) to make 9fronts dns server understand the needed records. *EDIT*: As of Sun Feb 14 2021, this patch is no longer needed since cinap pushed a [proper fix](http://code.9front.org/hg/plan9front/rev/73935ff27172). diff --git a/sites/pmikkelsen.com/plan9/mounting-9p-over-drawterm.md b/sites/pmikkelsen.com/plan9/mounting-9p-over-drawterm.md index 414b9f2..cb04b97 100644 --- a/sites/pmikkelsen.com/plan9/mounting-9p-over-drawterm.md +++ b/sites/pmikkelsen.com/plan9/mounting-9p-over-drawterm.md @@ -55,4 +55,4 @@ This means I can just go into any directory on the server, type `linux ghci` and The bind net trick still blows my mind a bit, since it is so trivial, yet so powerful. It is also fun to think about how one would do this on other systems than plan9, which I can't even imagine. -[1]: /images/linuxreverse.gif +[1]: https://images.pmikkelsen.com/linuxreverse.gif diff --git a/sites/pmikkelsen.com/plan9/webfs-websocket.md b/sites/pmikkelsen.com/plan9/webfs-websocket.md index c229f95..084411b 100644 --- a/sites/pmikkelsen.com/plan9/webfs-websocket.md +++ b/sites/pmikkelsen.com/plan9/webfs-websocket.md @@ -1,7 +1,7 @@ # Creating websocket connections via 9front's webfs With the following patch (note: work in progress, contains bugs), 9front's webfs can be used -to create websocket connections. The patch is available [here](/_files/websocket-webfs.patch). +to create websocket connections. The patch is available [here](https://files.pmikkelsen.com/websocket-webfs.patch). ## The idea @@ -74,4 +74,4 @@ back to the user. ## Bugs Yes. The code doesn't really handle errors or connection shutdowns yet. Also, I need to add proper cleanup code -around in different places. \ No newline at end of file +around in different places. diff --git a/sites/prolog.pmikkelsen.com/_werc/lib/footer.inc b/sites/prolog.pmikkelsen.com/_werc/lib/footer.inc deleted file mode 100644 index 996a89a..0000000 --- a/sites/prolog.pmikkelsen.com/_werc/lib/footer.inc +++ /dev/null @@ -1 +0,0 @@ -Powered by werc © Peter Mikkelsen 2020-2022 \ No newline at end of file diff --git a/sites/prolog.pmikkelsen.com/_werc/lib/top_bar.inc b/sites/prolog.pmikkelsen.com/_werc/lib/top_bar.inc deleted file mode 100644 index e6a79eb..0000000 --- a/sites/prolog.pmikkelsen.com/_werc/lib/top_bar.inc +++ /dev/null @@ -1,8 +0,0 @@ - - -
-
diff --git a/sites/prolog.pmikkelsen.com/favicon.ico b/sites/prolog.pmikkelsen.com/favicon.ico deleted file mode 100644 index 745367e..0000000 Binary files a/sites/prolog.pmikkelsen.com/favicon.ico and /dev/null differ diff --git a/sites/prolog.pmikkelsen.com/index.md b/sites/prolog.pmikkelsen.com/index.md index 730d8c0..e1e24df 100644 --- a/sites/prolog.pmikkelsen.com/index.md +++ b/sites/prolog.pmikkelsen.com/index.md @@ -69,4 +69,4 @@ and many more all listed [here](https://git.sr.ht/~pmikkelsen/pprolog/tree/maste [![A picture of pprolog in action][1]][1] -[1]: /_images/prolog-screenshot.png +[1]: https://images.pmikkelsen.com/prolog-screenshot.png -- cgit v1.2.3