Skip to content

Instantly share code, notes, and snippets.

View myfonj's full-sized avatar

Michal Čaplygin myfonj

View GitHub Profile
@myfonj
myfonj / dabblet.css
Last active October 17, 2024 14:17
font-feature-values styleset test for Arial and Verdana
/* font-feature-values styleset test for Arial and Verdana */
@font-feature-values Arial { @styleset {slabbed-I: 1; } }
@font-feature-values Verdana { @styleset { slabless-I: 1; } }
(()=>{
const l = 26 // lower
const u = 26 // upper
const d = 10 // digits
const length = 8 // size
const possible = (l + u + d)**length
const invalid =
(l + d)**length // missing upper
+ (u + d)**length // missing lower
+ (u + l)**length // missing digit
@myfonj
myfonj / dabblet.css
Created August 12, 2024 19:12
Chrome radial-gradient closest-side color stop nearing 100% clamps to infinity
/** Chrome radial-gradient closest-side color stop nearing 100% clamps to infinity
*/
.a { background-image: radial-gradient(closest-side, red 50%, white 0) }
.b { background-image: radial-gradient(closest-side, red 99%, white 0) }
.c { background-image: radial-gradient(closest-side, red 99.609371185302727214061491167740314267575740814208984374%, white 0)}
.d { background-image: radial-gradient(closest-side, red 99.609371185302727214061491167740314267575740814208984375%, white 0)}
.e { background-image: radial-gradient(closest-side, red 100%, white 0)}
p { width: 15vw; height: 15vw; margin-right: 2vw; background-color: #ccc; float: left; word-break: break-all; word-wrap: break-word; border: 1px solid; }
@namespace "http://www.w3.org/1999/xhtml";
/*
Matches any non-built in element *from the HTML namespace*
- Credits: https://meiert.com/en/indices/html-elements/ (every existing tag)
- Data obtained from the page through devtools console:
copy($$('th[scope="row"] a code')
.map(_ => _.textContent)
.filter(_ => HTMLUnknownElement !== document.createElement(_).constructor)
.join()
)
javascript:/*pub↔edit*/(function (mappings) {
const currentURL = String(document.location.href);
const currentHost = document.location.hostname;
const currentProtocol = (document.location.protocol + '//');
const gi = '.github.io';
const gr = /github.com\/([^\/]+)\/\1.github.io\/edit\/([^\/]+)\//;
let gh_handle = '';
if ( currentHost.endsWith(gi) ) {
gh_handle = currentHost.replace(gi,'');
} else if(gr.test(currentURL)) {
// https://stackoverflow.com/questions/40958727/javascript-generate-unique-number-based-on-string
(() => {
function base0xFFFFtoBigInt(str) {
const base = BigInt(0xFFFF);
let result = BigInt(0);
let pow = 0;
let i = str.length;
while (i-->0) {
const charCode = BigInt(str.charCodeAt(i));
@myfonj
myfonj / objectStringifyToWallOfTextWithFullPaths.js
Last active February 2, 2024 19:48
Object Stringify to Wall of Text With Full Paths
/**
* Wall of text
* @param {Object} inputVar
* @returns {string}
* @description Takes nested object ("JSON") and returns its serialized "wall of text" representation:
* - Each scalar value is printed on its own line, after its full path.
* - Strings are quoted.
* - Complex values are converted to their string representation.
* - Dates are converted to ISO 8601 strings.
* Input:
@myfonj
myfonj / semver.2.0.0.modified.bnf
Last active October 16, 2023 12:19
semver.bnf
# taken from https://semver.org/spec/v2.0.0.html#backusnaur-form-grammar-for-valid-semver-versions
# modified to be "more clear"
<semver> ::= <version>
| <version> "-" <pre>
| <version> "+" <build>
| <version> "-" <pre> "+" <build>
<version> ::= <major> "." <minor> "." <patch>
(() => {
let nowTS = Date.now();
const archiveDate = document.location.href.match(/web.archive.org\/web\/([0-9]+)/);
if (archiveDate) {
const c = archiveDate[1].match(/(....)(..)(..)(..)(..)(..)/);
const d = new Date(`${c[1]}-${c[2]}-${c[3]}T${c[4]}:${c[6]}:${c[6]}Z`);
nowTS = d.getTime();
}
const ageSpans = document.querySelectorAll('.age[title]');
const data = Array.from(ageSpans).map(
@myfonj
myfonj / prompts.md
Last active September 14, 2023 18:16
LLM chat prompts

Could you point out any grammatical errors or instances of awkward or unnatural phrasing I’ve made in this conversation? Please skip minor typos that result in non-existent words, but do let me know if I’ve used the wrong word entirely. Please format the feedback with the original and corrected versions on separate lines, and bold the differences.