Skip to content

Instantly share code, notes, and snippets.

View jacc's full-sized avatar
☁️

Jack LaFond jacc

☁️
View GitHub Profile

Keybase proof

I hereby claim:

  • I am jacc on github.
  • I am lafond (https://keybase.io/lafond) on keybase.
  • I have a public key ASAQAxmEJKiJIvqgNISuQB9JGrRvkVSAkS-3wDSvV5bppgo

To claim this, I am signing this object:

@jacc
jacc / convert.js
Created June 27, 2021 20:29
Function to convert Hypixel network experience to a level in JS/TS
// Code adapted from https://github.com/HypixelDev/PublicAPI/blob/master/Java/src/main/java/net/hypixel/api/util/ILeveling.java
const BASE = 10_000
const GROWTH = 2_500
console.log(BASE + GROWTH)
const REVERSE_PQ_PREFIX = -(BASE - 0.5 * GROWTH) / GROWTH;
const REVERSE_CONST = REVERSE_PQ_PREFIX * REVERSE_PQ_PREFIX;
const GROWTH_DIVIDES_2 = 2 / GROWTH;
@jacc
jacc / docker-compose.yaml
Last active June 9, 2024 02:38
Latest Plausible configuration for Coolify
services:
plausible:
image: ghcr.io/plausible/community-edition:v2.1.1
command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
environment:
- DATABASE_URL=postgres://postgres:$SERVICE_PASSWORD_POSTGRES@plausible_db/plausible
- BASE_URL=$SERVICE_FQDN_PLAUSIBLE_8000
- SECRET_KEY_BASE=$SERVICE_BASE64_64_PLAUSIBLE
- TOTP_VAULT_KEY=$SERVICE_REALBASE64_TOTP
depends_on:
@jacc
jacc / canvas question and answers.js
Last active December 10, 2024 04:27
Download all questions and (correct) answers from a Canvas quiz to a text file
function cleanText(e){return e.trim().replace(/\s+/g," ")}function downloadText(e){const t=new Blob([e],{type:"text/plain"}),o=window.URL.createObjectURL(t),n=document.createElement("a");n.href=o,n.download=document.querySelector("#quiz_title").textContent.trim().replace(/\s+/g," ").replace(/[^a-z0-9]/gi,"_").toLowerCase()+".txt",document.body.appendChild(n),n.click(),document.body.removeChild(n),window.URL.revokeObjectURL(o)}let questions=document.querySelectorAll(".question_text.user_content"),output=[];questions.forEach(e=>{let t=cleanText(e.textContent),o=e.closest(".question").querySelector(".answers_wrapper").querySelector('div[class*="correct_answer"]');if(o){let e=o.querySelector(".answer_text");if(e){let o=cleanText(e.textContent);output.push(`${t} - ${o}`)}}}),output.length>0&&downloadText(output.join("\n"));