Skip to content

Instantly share code, notes, and snippets.

View konsumer's full-sized avatar

David Konsumer konsumer

View GitHub Profile
@konsumer
konsumer / setup.sh
Created June 3, 2022 01:01
make a debian-based os image and chroot for arm (run in arm64 qemu)
#!/bin/bash -e
apt install -y build-essential debootstrap unzip git
# create image
qemu-img create -f qcow2 -o preallocation=metadata rknullos.qcow2 2G
modprobe nbd max_part=8
qemu-nbd --connect=/dev/nbd0 rknullos.qcow2
# paritition
@konsumer
konsumer / mime.c
Created September 24, 2023 11:37
Rudimentary mimetype detection, from first few bytes, in C.
#include "stdio.h"
// Get more from https://en.wikipedia.org/wiki/List_of_file_signatures
const char* detectMime(unsigned char* bytes) {
if (bytes[0] == 0xFF && bytes[1] == 0xD8 && bytes[2] == 0xFF) {
return "image/jpeg";
}
if (bytes[0] == 0x89 && bytes[1] == 0x50 && bytes[2] == 0x4E) {
return "image/png";
import 'https://cdn.jsdelivr.net/pyodide/v0.23.4/full/pyodide.js'
import setup from 'https://konsumer.js.org/raylib-python-web/python-raylib-web.js'
class RaylibPythonComponent extends HTMLElement {
constructor () {
super()
this.shadow = this.attachShadow({ mode: 'open' })
this.canvas = document.createElement('canvas')
this.style.display = 'none'
window.addEventListener('resize', this.onResize.bind(this))
@konsumer
konsumer / demo.sh
Last active September 4, 2023 07:14
Quick wasm demo with raylib
#!/bin/bash
wget https://github.com/raysan5/raylib/releases/download/4.5.0/raylib-4.5.0_webassembly.zip
unzip raylib-4.5.0_webassembly.zip
cd raylib-4.5.0_webassembly/
wget https://raw.githubusercontent.com/raysan5/raylib/master/examples/core/core_basic_window.c
emcc -Os -I./include -s USE_GLFW=3 -s ASYNCIFY -DPLATFORM_WEB -o index.html core_basic_window.c lib/libraylib.a
npx -y live-server
@konsumer
konsumer / firewall_and_pass_notes.js
Last active April 30, 2023 04:29
Tricks with your save-file in Hacknet
// this will make a note (to be re-inserted in your save-file) for all the passwords and firewall-codes
// your save file here
var fname = '/Users/konsumer/Library/Application Support/Hacknet/Accounts/save_konsumer.xml'
// var fname = 'C:\\Program Files (x86)\\Steam\\userdata\\93631843\\365450\\remote\\save_konsumer.xml'
var fs = require('fs')
var xml2js = require('xml2js')
var parser = new xml2js.Parser()
@konsumer
konsumer / example.js
Last active March 17, 2023 23:58
This will give you a nice clean list of wasm imports/exports which is useful for making minimal wasm-loaders.
import getWasmInterface from './get_wasm_interface.js'
// usage
const bytes = await fetch('mine.wasm').then(r => r.arrayBuffer())
const m = await WebAssembly.compile(bytes)
// imports is minimal stub (empty functions) and exports is a list of things it exports
const { imports } = await getWasmInterface(m)
// now I can inject my own functions
@konsumer
konsumer / Makefile
Created January 27, 2023 23:45
Self-help for a Makefile in a python project
.PHONY: help clean
help: ## Show this help
@python tools/help.py "$(MAKEFILE_LIST)"
clean: ## Remove all built files
@rm -f FILES
@konsumer
konsumer / kali_gpi2.md
Last active October 10, 2022 04:54
Install Kali on GPI2
@konsumer
konsumer / Router.js
Created December 4, 2018 01:06
Tiny react router that uses hooks
/**
* My lightweight router using hooks
*/
import React, { cloneElement, useContext, useState, useEffect } from 'react'
import createHistory from 'history/createBrowserHistory'
import Path from 'path-parser'
// for direct import
export const history = createHistory()
import React form 'react'
import { compose, withHandlers } from 'recompose'
import { formHandler } from './utils'
// usage example
export const MyCoolForm = ({form, setForm, onSubmit}) => (
<form onSubmit={onSubmit}>
<input type="name" value={form.name} onChange={setForm('name')} />
<input type="email" value={form.email} onChange={setForm('email')} />
<input type="password" value={form.password} onChange={setForm('password')} />