Skip to content

Instantly share code, notes, and snippets.

View JamesTheAwesomeDude's full-sized avatar

James E. A. JamesTheAwesomeDude

View GitHub Profile
@JamesTheAwesomeDude
JamesTheAwesomeDude / maybeuninit_struct_interface.rs
Last active April 25, 2024 20:15
Rust write to fields of MaybeUninit struct
/* Example Usage:
#[repr(C,packed)]
struct Foo {
data1: [u8; 3]
data2: [u8; 5],
};
let baz: Foo;
{
let mut baz_wip = core::mem::MaybeUninit::<Foo>::uninit();
@JamesTheAwesomeDude
JamesTheAwesomeDude / randombytes.rs
Last active April 24, 2024 20:51
rust randombytes function that returns an array
/* Written on Rust 1.77.2 (Stable), should run on even older builds.
Usage Example:
let my_buffer: [u8; 42] = randombytes().unwrap();
*/
extern crate getrandom; // https://github.com/rust-random/getrandom
use core::mem::MaybeUninit;
@JamesTheAwesomeDude
JamesTheAwesomeDude / reify_error_event.mjs
Last active April 11, 2024 19:24
JavaScript convert error event to error object
export function error_fromEvent(event) {
const error = new Error(event.message, {cause: event});
if (event.type === 'error')
error.name = `${event.target.__proto__.constructor.name}Error`;
else
error.name = `${event.__proto__.constructor.name}`;
return error;
}
@JamesTheAwesomeDude
JamesTheAwesomeDude / get_transferables.js
Last active March 28, 2024 20:20
Javascript recursively get all transferables from object
// This is also a demonstration of the Z-combinator.
// h/t https://thenewobjective.com/types-and-programming-languages/deriving-the-z-combinator
const Z = (f => (u => f((...x) => u(u)(...x)))(u => f((...x) => u(u)(...x))));
/* Example usage:
a = new MessageChannel().port1;
b = new ArrayBuffer(42);
my_obj = {a, x: {b, a_again: a}}
get_transferables(my_obj);
! James Edington Administrator – Popups
||accounts.google.com/gsi/iframe$subdocument
@JamesTheAwesomeDude
JamesTheAwesomeDude / uah_transcript.user.js
Last active March 26, 2024 00:26
UAH get machine-readable transcript
// ==UserScript==
// @name UAH Transcript to TXT
// @version 0.0.3
// @match https://ssbprod.uah.edu/PROD/bwskotrn.P_ViewTran
// @grant none
// @namespace james.edington@uah.edu
// ==/UserScript==
// To install from GitHub, click the "Raw" button on the top-right.
// Requires Userscript support:
@JamesTheAwesomeDude
JamesTheAwesomeDude / ts3h.ex
Last active March 15, 2024 16:37
[DRAFT] TeamSpeak 3 Hasher in Elixir
import Bitwise
require Logger
# "MEkDAgcAAgEgAh9n5rQmt3zJukGmwwvEVwfbZFS3NJ9oW7hgpJ0Db5ORAh8mOLmbP3+DfEQvEFbOcqymWoF6s9GHVcv8UegJBcWz" 3210790 1959110000000
defmodule TS3H do
def cmd_main(argv) do
[pk_str, ctr_best, ctr_cur] =
@JamesTheAwesomeDude
JamesTheAwesomeDude / bitstringstream.ex
Last active March 14, 2024 18:02
Elixir lazy iterate over byte string (aka "binary" type)
defmodule BitStringStream do
def binary_to_stream(s) do
Stream.unfold(s, fn
<<next::8, rem::binary>> -> {next, rem}
<<>> -> nil
end)
end
def bitstring_to_stream(s, n) do
@JamesTheAwesomeDude
JamesTheAwesomeDude / _maybe_open.py
Last active March 11, 2024 19:11
Safely open path if not already open, but don't mess with pre-openend files
from contextlib import contextmanager, ExitStack
import io
__all__ = ['maybe_open']
@contextmanager
def maybe_open(file_or_path, mode, *, **k, mode_strict=False):
with ExitStack() as _inner_ctx:
if isinstance(file_or_path, io.IOBase):
@JamesTheAwesomeDude
JamesTheAwesomeDude / _abc_bufferlike.py
Last active April 11, 2024 14:22
Buffer (ABC type) ponyfill for Python 3.11 and older
"""*BufferLike*, a quasi-ponyfill for collections.abc.Buffer
When collections.abc.Buffer is available, exports it directly.
Otherwise, crudely constructs an Abstract Base Class via mass ABC.register().
May not be suitable for all use-cases."""
try:
# version_info >= (3, 12)
from collections.abc import Buffer as BufferLike
except ImportError: