I hereby claim:
- I am haliphax on github.
- I am haliphax (https://keybase.io/haliphax) on keybase.
- I have a public key ASC0LFekXGTz3OedyiQZMCgD_CiApPRAvykdZJCJsqv5wgo
To claim this, I am signing this object:
| // Generates a grid of body meshes with pad meshes between them. | |
| // "Fence-post" pattern: N bodies get N-1 pads between them. | |
| // | |
| // STL files must be in the same directory as this script, | |
| // or provide absolute paths. | |
| // | |
| // Pad STLs should have their geometry positioned in object-local | |
| // coordinates so that when placed at the same grid points as the | |
| // bodies, they naturally align into the gaps: | |
| // - h_pad.stl: offset to bridge the horizontal gap |
| """ | |
| BodyExport.FCMacro | |
| Export each selected solid as both STEP and STL into the project file's directory. | |
| Files are named: <project name> - <body name>.<extension> | |
| If no solid objects are selected, top-level results are exported: | |
| - PartDesign::Body objects (unless they are operands of a standalone | |
| boolean result) | |
| - Standalone boolean results (Part::Cut, Part::Fuse, Part::Common) |
| #!/usr/bin/env -S uv run --script | |
| # /// script | |
| # dependencies = ["numpy-stl"] | |
| # /// | |
| """ | |
| This script is for creating stacks of more-or-less flat meshes that have | |
| symmetrical top and bottom faces (e.g. Multiboard). The gap (default 0.2mm) | |
| should be set to your slicer's layer height. The resulting file should be | |
| printed with 3 walls, 15% infill, with ironing of all top surfaces enabled. |
| """ | |
| Parse Guild Wars Reforged skill template codes | |
| See https://wiki.guildwars.com/wiki/Skill_template_format for reference and | |
| profession/attribute/skill indexes. | |
| """ | |
| # stdlib | |
| from dataclasses import dataclass | |
| from typing import Any, Generator |
| /** printable ASCII characters */ | |
| const ascii = []; | |
| for (let i = 33; i <= 126; ascii.push(String.fromCharCode(i++))); | |
| /** generate random string */ | |
| const randomString = limit => { | |
| const result = []; | |
| for (let i = 0; i < limit; i++) { | |
| const index = Math.floor(Math.random() * (126 - 33) + 33); |
| import { UserConfig } from "@11ty/eleventy"; | |
| import { DOMParser } from "@xmldom/xmldom"; | |
| import { transform } from "esbuild"; | |
| import { minify } from "html-minifier"; | |
| /** cache for content of script tags with an ID */ | |
| const scriptCache = new Map<string, string>(); | |
| /** DOM parser for navigating the rendered document; warnings are ignored */ | |
| const parser = new DOMParser({ errorHandler: { warning: () => {} } }); |
| #!/usr/bin/env bash | |
| # install gitmoji as a commit hook | |
| # | |
| # - uses https://www.npmjs.com/package/gitmoji-cli | |
| # - does not require global module installation | |
| # - skips hook if message already starts with gitmoji | |
| root="$(git rev-parse --show-toplevel)" | |
| hook="$root/.git/hooks/prepare-commit-msg" |
I hereby claim:
To claim this, I am signing this object:
| # Merges a pull request (if able) when a comment is added by a collaborator, | |
| # contributor, or owner with the word "merge" as its only content | |
| name: Merge on comment | |
| on: | |
| issue_comment: | |
| types: [created] | |
| jobs: |
| """ | |
| Unicode utility for splitting a string into grapheme clusters | |
| This gist was further developed into https://github.com/haliphax/giraph | |
| """ | |
| # stdlib | |
| import logging | |
| from os import environ | |
| from sys import stdout |