diff options
36 files changed, 217 insertions, 100 deletions
@@ -2,10 +2,10 @@ *.pub homelab-wiki/wiki.env homelab-wiki/images/* -edaweb.conf +*edaweb.conf markdowns/ -static/images/random.jpg -static/zips/*.zip +*random.jpg +*.zip .nfs* static/images/Thumbs.db nitter/nitter.conf diff --git a/.gitmodules b/.gitmodules index 1b086ba..e69de29 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +0,0 @@ -[submodule "nitter/nitter"] - path = nitter/nitter - url = git@github.com:zedeus/nitter.git - branch = guest_accounts @@ -3,12 +3,10 @@ MAINTAINER Eden Attenborough "eden.attenborough@outlook.com" ENV TZ=Europe/London RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN apt-get update -y -RUN apt-get install -y python3-pip python3-dev build-essential clang libffi-dev libxml2-dev libxslt-dev libjpeg-dev zlib1g-dev tmux cron +RUN apt-get install -y python3-pip python3-dev build-essential clang libffi-dev libxml2-dev libxslt-dev libjpeg-dev zlib1g-dev COPY . /app WORKDIR /app RUN pip3 install -r requirements.txt -RUN echo "*/30 * * * * root python3 /app/edaweb/cache.py > /proc/1/fd/1 2>/proc/1/fd/2" > /etc/crontab - ENTRYPOINT ["bash"] CMD ["entrypoint.sh"] diff --git a/Dockerfile_cron b/Dockerfile_cron new file mode 100755 index 0000000..dea3208 --- /dev/null +++ b/Dockerfile_cron @@ -0,0 +1,11 @@ +FROM reg.reaweb.uk/edaweb +MAINTAINER Eden Attenborough "eden.attenborough@outlook.com" +ENV TZ=Europe/London +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone +RUN apt-get update -y +RUN apt-get install -y tmux cron + +RUN echo "*/30 * * * * root python3 /app/edaweb/cache.py > /proc/1/fd/1 2>/proc/1/fd/2" > /etc/crontab + +ENTRYPOINT ["bash"] +CMD ["cron_entrypoint.sh"] diff --git a/cron_entrypoint.sh b/cron_entrypoint.sh new file mode 100644 index 0000000..2d98169 --- /dev/null +++ b/cron_entrypoint.sh @@ -0,0 +1,6 @@ +rm -rvf /app/edaweb/edaweb.conf/ +ln -s /app/edaweb.conf /app/edaweb/edaweb.conf +printenv | grep -v "no_proxy" >> /etc/environment +# tmux new-session -d -s "cron" 'cron -f || bash && bash'; +cron -f + diff --git a/docker-compose.yml b/docker-compose.yml index 67976bf..01bf365 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,3 @@ -version: '3' services: edaweb: build: @@ -8,13 +7,33 @@ services: volumes: - /tmp/:/media/ISOs/ - ./edaweb/static/:/app/edaweb/static/ - - ./edaweb.conf:/app/edaweb/edaweb.conf - - ./edaweb-docker.pem:/keys/docker-key.pem + - ./edaweb.conf:/app/edaweb.conf + - edaweb-tmp:/tmp/ ports: - "6969:6969" + external_links: + - mariadb:mysql + - transmission_1:transmission + mac_address: 44:c8:09:a7:d0:93 + networks: + db-network: + rr-net: + ipv4_address: "192.168.23.13" + restart: unless-stopped + + edaweb_cron: + build: + context: . + dockerfile: Dockerfile_cron + image: reg.reaweb.uk/edaweb_cron + volumes: + - /tmp/:/media/ISOs/ + - ./edaweb/static/:/app/edaweb/static/ + - ./edaweb.conf:/app/edaweb.conf + - ./edaweb-docker.pem:/keys/docker-key.pem + - edaweb-tmp:/tmp/ networks: - db-network - - edaweb-net external_links: - mariadb:mysql restart: unless-stopped @@ -33,17 +52,19 @@ services: - "6970:80" networks: - db-network - - edaweb-net external_links: - mariadb:mysql restart: unless-stopped -networks: - edaweb-net: - external: - name: edaweb-net +volumes: + edaweb-tmp: +networks: db-network: - external: - name: mariadb + external: true + name: mariadb + + rr-net: + external: true + name: rr-net diff --git a/edaweb/app.py b/edaweb/app.py index 436df7a..36fe8bb 100644 --- a/edaweb/app.py +++ b/edaweb/app.py @@ -214,26 +214,26 @@ def get_iso_cd(): id_ = id_ ) -@app.route("/random") -def serve_random(): - try: - tags = flask.request.args['tags'].split(" ") - except KeyError: - flask.abort(400) - - sbi = services.get_random_image(tags) - req = urllib.request.Request(sbi.imurl) - mediaContent = urllib.request.urlopen(req).read() - with open(os.path.join(os.path.dirname(__file__), "static", "images", "random.jpg"), "wb") as f: - f.write(mediaContent) - - with database.Database() as db: - return flask.render_template( - "random.html.j2", - **get_template_items("random image", db), - sbi = sbi, - localimg = "/img/random.jpg?seed=%i" % random.randint(0, 9999) - ) +#@app.route("/random") +#def serve_random(): +# try: +# tags = flask.request.args['tags'].split(" ") +# except KeyError: +# flask.abort(400) +# +# sbi = services.get_random_image(tags) +# req = urllib.request.Request(sbi.imurl) +# mediaContent = urllib.request.urlopen(req).read() +# with open(os.path.join(os.path.dirname(__file__), "static", "images", "random.jpg"), "wb") as f: +# f.write(mediaContent) +# +# with database.Database() as db: +# return flask.render_template( +# "random.html.j2", +# **get_template_items("random image", db), +# sbi = sbi, +# localimg = "/img/random.jpg?seed=%i" % random.randint(0, 9999) +# ) @app.route("/questions") def serve_questions(): diff --git a/edaweb/database.py b/edaweb/database.py index dab56e7..c6553a6 100644 --- a/edaweb/database.py +++ b/edaweb/database.py @@ -20,8 +20,11 @@ class Database: passwd:str = None def __enter__(self): + config_path = os.path.join(os.path.dirname(__file__), "..", "edaweb.conf") + if not os.path.exists(config_path): + raise FileNotFoundError("Could not find edaweb.conf config file") self.config = configparser.ConfigParser(interpolation = None) - self.config.read(os.path.join(os.path.dirname(__file__), "edaweb.conf")) + self.config.read(config_path) if self.safeLogin: self.__connection = pymysql.connect( @@ -44,7 +47,7 @@ class Database: def get_header_links(self): with self.__connection.cursor() as cursor: - cursor.execute("SELECT name, link FROM headerLinks ORDER BY name;") + cursor.execute("SELECT name, link FROM headerLinks WHERE display = true ORDER BY name;") return cursor.fetchall() def get_image(self, imageName): @@ -64,7 +67,7 @@ class Database: def get_header_articles(self): with self.__connection.cursor() as cursor: - cursor.execute("SELECT articleName, link FROM headerArticles;") + cursor.execute("SELECT articleName, link FROM headerArticles WHERE display = true;") return cursor.fetchall() def get_all_categories(self): diff --git a/edaweb/services.py b/edaweb/services.py index 87af050..bb70d2a 100644 --- a/edaweb/services.py +++ b/edaweb/services.py @@ -22,8 +22,11 @@ import time import os theLastId = 0 +config_path = os.path.join(os.path.dirname(__file__), "..", "edaweb.conf") +if not os.path.exists(config_path): + raise FileNotFoundError("Could not find edaweb.conf config file") CONFIG = configparser.ConfigParser(interpolation = None) -CONFIG.read(os.path.join(os.path.dirname(__file__), "edaweb.conf")) +CONFIG.read(config_path) def humanbytes(B): 'Return the given bytes as a human friendly KB, MB, GB, or TB string' @@ -247,8 +250,19 @@ def parse_tweet(tweet_url): return dt, replying_to, text, images -def scrape_whispa(whispa_url, since): - tree = html.fromstring(requests.get(whispa_url).content.decode()) +def scrape_whispa(whispa_url, since = None): + # add a bit of wiggle room in case i don't answer the questions in order (i often do this) + if since is None: + stop_at = datetime.datetime(year = 2001, month = 8, day = 12) + else: + stop_at = since - datetime.timedelta(days = 14) + print("The newest Q&A timestamp in the database was %s, we will stop looking at %s." % (since.astimezone().isoformat(), stop_at.astimezone().isoformat())) + + html_ = requests.get(whispa_url).content.decode() + # with open("temp.html", "w") as f: + # f.write(html_) + + tree = html.fromstring(html_) qnas = [] # we're not doing proper HTML scraping here really... since the site uses client side rendering # we rather parse the JS scripts to get the JSON payload of useful information... sadly this looks horrible @@ -256,18 +270,33 @@ def scrape_whispa(whispa_url, since): js = str(script.text) if "receivedFeedback" in js: # my god this is horrible... - for j in json.loads(json.loads(js[19:-1])[1][2:])[0][3]["loadedUser"]["receivedFeedback"]: - dt = datetime.datetime.fromisoformat(j["childFeedback"][0]["createdAt"][:-1]) - - qnas.append({ - # "id": int(str(maths.modf(maths.log(int(j["id"], 16)))[0])[2:]), + parsed_json = json.loads(json.loads(js[19:-1])[1][2:])[0][3]["loadedUser"]["receivedFeedback"] + # print(json.dumps(parsed_json, indent = 4)) + # with open("whispas_%i.json" % i, "w") as f: + # json.dump(parsed_json, f, indent = 4) + for j in parsed_json: + if j["_count"]["childFeedback"] < 0: + continue + + answer_url = "https://apiv4.whispa.sh/feedbacks/%s/children/public" % j["id"] + req = requests.get(answer_url) + firstanswer = req.json()["data"][0] + dt = datetime.datetime.fromisoformat(firstanswer["createdAt"][:-1]) + + qna = { + # "id": int(j["id"], base = 16), "id": int(dt.timestamp()), - "link": None, + "link": answer_url, "datetime": dt, "question": j["content"], - "answer": j["childFeedback"][0]["content"], + "answer": firstanswer["content"], "host": "whispa.sh" - }) + } + print(qna) + qnas.append(qna) + if dt <= stop_at: + print("Met the threshold for oldest Q&A, so stopped looking.") + break return qnas def get_docker_containers(host, ssh_key_path): @@ -336,7 +365,7 @@ def get_torrent_stats(): "Uploaded:": humanbytes(s["cumulative-stats"]["uploadedBytes"]), "Active time:": str(datetime.timedelta(seconds = s["cumulative-stats"]["secondsActive"])), "Files added:": s["cumulative-stats"]["filesAdded"], - "Current upload speed": humanbytes(s["uploadSpeed"]) + "s/S", + "Current upload speed:": humanbytes(s["uploadSpeed"]) + "s/S", "Current download speed:": humanbytes(s["downloadSpeed"]) + "s/S" } @@ -359,7 +388,8 @@ def get_recent_commits(db, max_per_repo = 3): return sorted(out, key = lambda a: a["datetime"], reverse = True) if __name__ == "__main__": - import database + print(scrape_whispa(CONFIG.get("qnas", "url"))) + # import database - with database.Database() as db: - print(json.dumps(get_recent_commits(db), indent=4)) + # with database.Database() as db: + # print(json.dumps(get_recent_commits(db), indent=4)) diff --git a/edaweb/static/images/1583581996540.jpg b/edaweb/static/images/1583581996540.jpg Binary files differnew file mode 100755 index 0000000..53ceaae --- /dev/null +++ b/edaweb/static/images/1583581996540.jpg diff --git a/edaweb/static/images/20251111_102045.jpg b/edaweb/static/images/20251111_102045.jpg Binary files differnew file mode 100755 index 0000000..9f4c94b --- /dev/null +++ b/edaweb/static/images/20251111_102045.jpg diff --git a/edaweb/static/images/20251111_102045.png b/edaweb/static/images/20251111_102045.png Binary files differnew file mode 100755 index 0000000..e7d7700 --- /dev/null +++ b/edaweb/static/images/20251111_102045.png diff --git a/edaweb/static/images/2209509307.jpg b/edaweb/static/images/2209509307.jpg Binary files differnew file mode 100755 index 0000000..1b5d515 --- /dev/null +++ b/edaweb/static/images/2209509307.jpg diff --git a/edaweb/static/images/2684330373.jpg b/edaweb/static/images/2684330373.jpg Binary files differnew file mode 100755 index 0000000..b050888 --- /dev/null +++ b/edaweb/static/images/2684330373.jpg diff --git a/edaweb/static/images/GZhgzaK.png b/edaweb/static/images/GZhgzaK.png Binary files differnew file mode 100755 index 0000000..c73e8b4 --- /dev/null +++ b/edaweb/static/images/GZhgzaK.png diff --git a/edaweb/static/images/GegzRla.png b/edaweb/static/images/GegzRla.png Binary files differnew file mode 100755 index 0000000..cf12555 --- /dev/null +++ b/edaweb/static/images/GegzRla.png diff --git a/edaweb/static/images/JwL2S2V.png b/edaweb/static/images/JwL2S2V.png Binary files differnew file mode 100755 index 0000000..9394c56 --- /dev/null +++ b/edaweb/static/images/JwL2S2V.png diff --git a/edaweb/static/images/PXL_20251108_063442686.MP.jpg b/edaweb/static/images/PXL_20251108_063442686.MP.jpg Binary files differnew file mode 100755 index 0000000..86171bb --- /dev/null +++ b/edaweb/static/images/PXL_20251108_063442686.MP.jpg diff --git a/edaweb/static/images/aLvcFjj.png b/edaweb/static/images/aLvcFjj.png Binary files differnew file mode 100755 index 0000000..c928ba7 --- /dev/null +++ b/edaweb/static/images/aLvcFjj.png diff --git a/edaweb/static/images/bdd_fuel.png b/edaweb/static/images/bdd_fuel.png Binary files differnew file mode 100755 index 0000000..e79522e --- /dev/null +++ b/edaweb/static/images/bdd_fuel.png diff --git a/edaweb/static/images/iKVCEoy.png b/edaweb/static/images/iKVCEoy.png Binary files differnew file mode 100755 index 0000000..05d6d70 --- /dev/null +++ b/edaweb/static/images/iKVCEoy.png diff --git a/edaweb/static/images/photo_2025-12-04_22-34-24.jpg b/edaweb/static/images/photo_2025-12-04_22-34-24.jpg Binary files differnew file mode 100755 index 0000000..51ced37 --- /dev/null +++ b/edaweb/static/images/photo_2025-12-04_22-34-24.jpg diff --git a/edaweb/static/images/rOJXmjG.png b/edaweb/static/images/rOJXmjG.png Binary files differnew file mode 100755 index 0000000..58a4ae4 --- /dev/null +++ b/edaweb/static/images/rOJXmjG.png diff --git a/edaweb/static/images/random.jpg b/edaweb/static/images/random.jpg Binary files differdeleted file mode 100644 index 4e23beb..0000000 --- a/edaweb/static/images/random.jpg +++ /dev/null diff --git a/edaweb/static/images/v2Yfoou.jpg b/edaweb/static/images/v2Yfoou.jpg Binary files differnew file mode 100755 index 0000000..f3a3249 --- /dev/null +++ b/edaweb/static/images/v2Yfoou.jpg diff --git a/edaweb/static/images/wxbKYVv.png b/edaweb/static/images/wxbKYVv.png Binary files differnew file mode 100755 index 0000000..75feb10 --- /dev/null +++ b/edaweb/static/images/wxbKYVv.png diff --git a/edaweb/static/index.md b/edaweb/static/index.md index a676d59..0d45f12 100644 --- a/edaweb/static/index.md +++ b/edaweb/static/index.md @@ -6,10 +6,6 @@ site now also avaliable under the domain [boymoder.blog](https://boymoder.blog)! my name is eden and im a 23yo (boymoder/[fujoshi](https://www.urbandictionary.com/define.php?term=fujoshi)) computer science/robotics PhD student. i made my own website to encourage others to do so too. i'll post my thoughts on here sometimes, and use this site to link to other stuff i host [more about me](/thought?id=2). -[click here for a random image of lio fotia](/random?tags=lio_fotia) - -[click here for a random KawoShin image](/random?tags=nagisa_kaworu+ikari_shinji+yaoi) - ## FOSS alternative services - [nextcloud - dropbox (+ much more!) alternative](https://nc.eda.gay) @@ -26,6 +22,8 @@ these sites are hosted on my [homelab system](https://wiki.eda.gay) ## nice websites - [wiby.me](http://wiby.me/) - search engine for old style websites with limited javascript (my site used to be on here but it got blacklisted for some reason?) - [dysmorph.nekoweb.org](https://dysmorph.nekoweb.org/) - a site that is very based because it looks similar +- [transsexual.org](https://web.archive.org/web/20010802032136/http://transsexual.org/Toon.html) - awesome and relatable transsexual comics from a website that's slightly older than me +- [norfolkchurches.co.uk](http://www.norfolkchurches.co.uk/norwichintro.htm) - site about all the churches in norwich (and norfolk!), the city that has far too many medieval churches than it knows what to do with. this site is preciesly what the internet should be, the muted ramblings of someone with an expert knowledge on his preferred niche interest. without any javascript. nice if, like me, you have a middling interest in theology - [boymoder.network](https://boymoder.network/) - website for boymoder awareness - [4chan.org/lgbt/](https://boards.4channel.org/lgbt/) - but dont blame me if u catch brainworms - [https://www.math.uni-bielefeld.de/~sillke/Twister/fun/elevator-fun90.html](https://www.math.uni-bielefeld.de/~sillke/Twister/fun/elevator-fun90.html) any website with a URL like this is gonna be good diff --git a/edaweb/static/robots.txt b/edaweb/static/robots.txt index c2aab7e..04154e9 100644 --- a/edaweb/static/robots.txt +++ b/edaweb/static/robots.txt @@ -1,2 +1,7 @@ User-agent: *
-Disallow: /
\ No newline at end of file +Allow: /
+User-agent: Googlebot-Image
+Disallow: *
+User-agent: *
+Disallow: /random*
+
diff --git a/entrypoint.sh b/entrypoint.sh index 335ad66..f8664f0 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,3 +1,5 @@ +rm -rvf /app/edaweb/edaweb.conf/ +ln -s /app/edaweb.conf /app/edaweb/edaweb.conf printenv | grep -v "no_proxy" >> /etc/environment -tmux new-session -d -s "cron" 'cron -f || bash && bash'; -python3 /app/edaweb/app.py --production
\ No newline at end of file +#tmux new-session -d -s "cron" 'cron -f || bash && bash'; +python3 /app/edaweb/app.py --production @@ -0,0 +1,69 @@ + + +Quite a lot of people have asked me questions about my FFS experience, so I don't have to repeat myself, +I write this detailed post about how it went for me, the questions to ask, and the recovery process etc. + +Once I'm more healed up I will consider adding before/after pictures, but for now there are no pictures. + +## Selecting your surgeon and what procedures to get + +For me, I was raised on transgender imageboards where surgeons are openly discussed, where people know +every single FFS surgeon in the world, call them by their first name, and have opinions on every single +one of them. It's almost funny that there is this group of people, who are extremely famous to this tiny +niche audience. But for those of us who are unfamiliar with surgeons, and who don't know what to look for +in their results, this section describes your options. + +I consider there to be three categories of surgeons: + +1. Big-name American surgeons who also do midface (maxillofacial/double jaw surgery work) +2. European surgeons, and local (state-level/no-name) American surgeons +3. South American surgeons + +With price reducing proportionally for each category. American surgeons are generally significantly more +expensive, since the assumption is that they're being paid for by insurance. The top level surgeons +could cost you $80-100k, and are thus basically out of reach unless you have an America-tier salary or an +American insurance plan who agrees to pay for it. + +If you're American, you can probably afford to shop round, and choose your surgeon in accordance to the results +you like, but the rest of us (me) had to dictate their choice by budget. I knew my only real choice was to +go to a European surgeon, but my personal choices are discussed later. + +How do you decide if a surgeon's results are good? I think most of us have an implicit, subconcious, vibes-based impression of facial sexual dimorphism, but if you're like me and spent too much time on /lgbt/, we can get more specific on the features that define how we are gendered. + + + +I wish I could use a real human face instead of a skull, but I feel weird about using someone else's picture, +so for now a skull will do. In this picture above, we basically can't help A and E, unless we find some way of +shrinking the brain, and C doesn't matter imo, but FFS surgery aims to fix the bone-based deviations of the others: + +- Orbitoplasty fixes B, by shaving down the orbital bones, which really help bring out the eyes, it is normally done in conjunciton with a frontoplasty +- V-line genioplasty (right) and mandible angle contouring (left) fixes D, and is imo one of the most important procedures. A genioplasty shifts round bones and re-attaches them with metal plates, other times if chin projection doesn't need to be changed, surgeons simply just remove and cut away mandible bone, thus making a 'V' shape instead of a 'U' shape. The incision is made inside the mouth, at the gumline and thus their is no visible scar. + +  + +- Frontoplasty reduces the browbone, which is especially obvious in profile. This can either consist of just shaving down the bone, or can be *Type-3 forehead construction* for cases in which there is a cavity/sinus in the browbone, in this case the bone above the sinus is removed completely, shaved down, and then reinserted and set with metalwork. The way this is achieved is rather scary- the incision is made at the hairline (some surgeons also do a "coronal" incision, in which the incision is made at the top of the head), and the skin is pulled almost as down as the eyes to expose the browbone. See the below pictures. + + + +- Not discussed by the top image, but important nonetheless is *midface*, by which I mean overall face length. Some tgirls can look uncanny if they get other aspects of their face fixed, but leave the midface untouched. It can be fixed with orthadontic techniques, like *Le Fort* by taking out bits of bone above the top jaw, but only a few American FFS surgeons do this, because it is usually considered a separate medical dicipline to the other stuff. + + + +So so far we've talked about bone differences, but what about soft tissue differences? What procedures are avaliable then? (I really wish I could use pictures to demonstrate here) + +- Forehead shape: The female hairline is different to the male hairline, the latter is more round, and less square. This is the case even if you don't have hair loss. You can essentially get this fixed for free if you're having forehead work done anyway, the surgeon just stitches your hairline back in a different shape. +- Nose: despite what some wokescolds on twitter would tell you, yes, human noses are sexually dimorphic, and getting a rhinoplasty is not enforcing "western european beauty standards", especially if you happen to be a western european. The main sexual difference is nasal projection and the shape of the tip, the female nose is tipped up more at the end. If you're getting a rhinoplasty at the same time anyway, you might as well get other aesthetic improvements, such as dorsal hump reduction, width reduction, and nostril size reduction. American surgeons love to do this beverly-hills look, I call it a "ski slope nose", in which the nose is made completely concave, but unless you're lucky to have a tiny round face with zero midface, I think a simple straight nose is going to suit you better. European surgeons are better about this imo. +- Cheeks: A rarer procedure that some people get is implants or fat grafting into the cheeks to make them look fuller. Perhaps this could help with midface, but this is just a theory of mine, the aesthetic improvements are besides this. +- Blepharoplasty: Reduction of excess skin above the eyes. This is an age related surgery that you don't need to get done if you're young, but some people get it done at the same time as FFS. +- Lip lift: An underrated dimorphic feature is the size of the lips, the top lift especially. Males have a bigger philtrum length (the space between the bottom of the nose and the top of the lip) and a lip lift can improve this, and make the lips look fuller. Lip injections can also help with this, but in this aspect you should be conservative imo unless you want to look like a bimbo. Just be tasteful with it. Things to look out for here are that the shape of the top lip is preserved, a nice "bow" shape. +- Tracheal shave: Males obviously have a bigger Adam's apple. Some people are scared it affects voice and are nervous to get it done, especially after FFS, but personally my surgeon advised me that it deals with tissue far away from the tissue that affects voice and was extremely confident my voice would be unaffected. Nonetheless, it is under the area in which an ENT surgeon would be its speciality, thus FFS surgeons may not be as familiar with this region. I would advise that if you're getting VFS from an ENT surgeon anyway, you get a trach shave done by them instead. My VFS surgeon did offer this but I wasn't aware to ask for it at the time. + +Now we know what to look for in a surgeon's results pictures, we can better guage the surgeon we want to pick. But still, it is common to have consultations with multiple surgeons so you can decide which one you want to choose that way. + +## My FFS journey + + + +*The last picture of me that exists pre-FFS* + +This section discusses my personal experiences, which might be a good way of knowing what to expect during the recovery process. I write it in the first person present tense because I've been reading a lot of fiction like that recently. Nonetheless, my experiences remain personal, and your recovery could well be different. diff --git a/homelab-wiki/Dockerfile b/homelab-wiki/Dockerfile index 445bcc3..62b1f60 100644 --- a/homelab-wiki/Dockerfile +++ b/homelab-wiki/Dockerfile @@ -1,4 +1,4 @@ -FROM mediawiki:1.39.3 +FROM mediawiki:1.43.3 ENV MW_HOME=/var/www/html diff --git a/homelab-wiki/LocalSettings.php b/homelab-wiki/LocalSettings.php index e3c1d5a..e8e5eb2 100644 --- a/homelab-wiki/LocalSettings.php +++ b/homelab-wiki/LocalSettings.php @@ -30,7 +30,7 @@ $wgMetaNamespace = "Eden's_Homelab_Wiki"; $wgScriptPath = ""; ## The protocol and server name to use in fully-qualified URLs -$wgServer = "https://wiki.eda.gay"; +$wgServer = "https://homelabwiki.boymoder.blog"; ## The URL path to static resources (images, scripts, etc.) $wgResourceBasePath = $wgScriptPath; @@ -159,7 +159,6 @@ wfLoadExtension( 'ParserFunctions' ); wfLoadExtension( 'PdfHandler' ); wfLoadExtension( 'Poem' ); wfLoadExtension( 'PortableInfobox' ); -wfLoadExtension( 'Renameuser' ); wfLoadExtension( 'ReplaceText' ); wfLoadExtension( 'Scribunto' ); wfLoadExtension( 'SecureLinkFixer' ); @@ -174,7 +173,11 @@ wfLoadExtension( 'WikiEditor' ); # End of automatically generated settings. # Add more configuration options below. -$wgShowDebug = false; -$wgDevelopmentWarnings = false; -$wgShowExceptionDetails = false; -$wgDebugToolbar = false; +# $wgShowDebug = false; +# $wgDevelopmentWarnings = false; +# $wgShowExceptionDetails = false; +# $wgDebugToolbar = false; + +$wgShowExceptionDetails = true; +$wgShowDBErrorBacktrace = true; +$wgShowSQLErrors = true; diff --git a/nitter/nitter b/nitter/nitter deleted file mode 160000 -Subproject fcd74e8048362fcf8284871ee067099e8de28a8 diff --git a/papers.md b/papers.md deleted file mode 100644 index 8da5119..0000000 --- a/papers.md +++ /dev/null @@ -1,25 +0,0 @@ -this page lists some of the papers i have written! it's not an exhaustive list, just mostly the ones i'm most proud of the latex of - -## published papers - -i pinky promise i've had academic papers published, im just going to add them when they've actually been published not just accepted - -## coursework - -### level 7 - -#### advanced ai - -<iframe class="pdf" src="/pdf/aai.pdf" width="65%" height="500pt"></iframe> - -this was part of the assessment for an 'advanced ai' module, it mostly pertains to bayesian networks - -#### advanced robotics - -<iframe class="pdf" src="/pdf/ar2.pdf" width="65%" height="500pt"></iframe> - -this assessment pertains to learning from demonstration with manipulators in robotics, and mostly talks about and does some experiments with dynamic movement primitives (DMPs) and stable estimator of dynamic systems (SEDs) - - - - diff --git a/scripts/export.sh b/scripts/export.sh index 1d17cf1..a2ecb6f 100755 --- a/scripts/export.sh +++ b/scripts/export.sh @@ -9,4 +9,4 @@ read export_name echo "Exporting blog post " $id " to " $export_name touch $export_name -sudo docker run -it --entrypoint python3 -v "$(pwd)/edaweb.conf":/app/edaweb/edaweb.conf -v "$(pwd)/$export_name":/app/$export_name --network mariadb --rm reg.reaweb.uk/edaweb /app/edaweb/parser.py export -i $id -u root -o $export_name +sudo docker run -it --entrypoint python3 -v "$(pwd)/edaweb.conf":/app/edaweb.conf -v "$(pwd)/edaweb.conf":/app/edaweb/edaweb.conf -v "$(pwd)/$export_name":/app/$export_name --network mariadb --rm reg.reaweb.uk/edaweb /app/edaweb/parser.py export -i $id -u root -o $export_name diff --git a/scripts/update.sh b/scripts/update.sh index fe225cb..32b3b2a 100755 --- a/scripts/update.sh +++ b/scripts/update.sh @@ -3,4 +3,4 @@ echo -n "Input blog post ID to update: " read id -sudo docker run -it --entrypoint python3 -v "$(pwd)/edaweb.conf":/app/edaweb/edaweb.conf -v "$(pwd)/$1":/app/$1 --network mariadb --rm reg.reaweb.uk/edaweb /app/edaweb/parser.py update -i $id -u root -m $1 +sudo docker run -it --entrypoint python3 -v "$(pwd)/edaweb.conf":/app/edaweb.conf -v "$(pwd)/edaweb.conf":/app/edaweb/edaweb.conf -v "$(pwd)/$1":/app/$1 --network mariadb --rm reg.reaweb.uk/edaweb /app/edaweb/parser.py update -i $id -u root -m $1 |
