Skip to content

Instantly share code, notes, and snippets.

@Snarp
Snarp / google-docs-copy.js
Last active May 10, 2024 19:41
Script to allow copying from a protected Google Doc
/*
<https://stackoverflow.com/questions/40296831/is-it-possible-to-force-a-copy-of-a-protected-google-doc>
NOTE - 2021-05-24
-----------------
The script below isn't the fastest way to copy-and-paste from a protected
Google Doc. Before trying it, I'd suggest following MikoFrosty's advice from
the comments:
require 'fileutils'
# For use in cleaning scanned book/magazine/etc pages and preparing the scans
# for distribution/OCR.
#
# Assume you've been scanning a book as double-page scans. You can
# automatically split them into two files via ImageMagick `mogrify`:
#
# mogrify -path "./Auto-Halved Pages" -format png -crop 50%x100% +repage "./Double-Page Scans/*.png"
#
@Snarp
Snarp / HTML Named Color Keywords.md
Last active April 24, 2024 02:52 — forked from jennyknuth/README.md
140 html color names as an array of json objects—enjoy!

HTML Colors

All 140 HTML colors as JSON objects with fields:

  • name
  • hex
  • rgb
  • families

Changelog

@Snarp
Snarp / superscripts_subscripts_normalized_via_nfkc.yml
Last active February 18, 2024 00:40
Unicode superscripts and subscripts normalized via NFKC
---
:subscripts:
"₀": '0'
"₁": '1'
"₂": '2'
"₃": '3'
"₄": '4'
"₅": '5'
"₆": '6'
"₇": '7'
@Snarp
Snarp / 01_tumblr_glitch_demonstration_text_raw.txt
Last active December 9, 2023 01:31
Tumblr WYSWIG editor formatting offset glitch raw demonstration text (the sourcing line is not part of the post)
Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/em#i_vs._em
&lt;i&gt; vs. &lt;em&gt;
Some developers may be confused by how multiple elements seemingly produce similar visual results. &lt;em&gt; and &lt;i&gt; are a common example, since they both italicize text. What's the difference? Which should you use?
By default, the visual result is the same. However, the semantic meaning is different. The &lt;em&gt; element represents stress emphasis of its contents, while the &lt;i&gt; element represents text that is set off from the normal prose, such as a foreign word, fictional character thoughts, or when the text refers to the definition of a word instead of representing its semantic meaning. (The title of a work, such as the name of a book or movie, should use &lt;cite&gt;.)
This means the right one to use depends on the situation. Neither is for purely decorative purposes, that's what CSS styling is for.
@Snarp
Snarp / sticky_footer_example_flexbox.html
Last active December 7, 2023 18:50
Minimal sticky footer examples - vertical flexbox
@Snarp
Snarp / compress-pdf-with-gs.md
Created August 11, 2023 19:59 — forked from mammuth/compress-pdf-with-gs.md
Compress PDF files with ghostscript

This can reduce files to ~15% of their size (2.3M to 345K, in one case) with no obvious degradation of quality.

ghostscript -r72 -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -dCompressFonts=true -sOutputFile=output.pdf input.pdf

Change -r for the resolution.

Other options for PDFSETTINGS:

  • /screen selects low-resolution output similar to the Acrobat Distiller "Screen Optimized" setting.
  • /ebook selects medium-resolution output similar to the Acrobat Distiller "eBook" setting.
@Snarp
Snarp / hash_array_to_csv.rb
Created April 10, 2023 19:07
Array of hashes to CSV
require 'csv'
def hash_array_to_csv(hash_arr, fname='csv.csv')
headers = hash_arr.map{|hsh| hsh.keys}.flatten.uniq
csv = CSV.generate do |csv|
csv << headers
hash_arr.each do |hsh|
csv << (headers.map{|k| hsh[k]})
end
end
@Snarp
Snarp / exposeClassKeys.js
Created April 4, 2023 00:05 — forked from AprilSylph/exposeClassKeys.js
expose source names on Tumblr
tumblr.getCssMap().then(cssMap => {
const keys = Object.keys(cssMap);
const elements = document.querySelectorAll("[class]");
for (const {classList} of elements) {
for (const className of classList) {
const mappedClassName = keys.find(key => cssMap[key].includes(className));
if (mappedClassName) classList.add(`tumblr--${mappedClassName}`);
}
}
});
@Snarp
Snarp / javascript_spoilers.html
Last active January 19, 2023 19:05
Javascript spoilers hide-and-show. Leaves spoiler text visible if Javascript isn't enabled.
<!DOCTYPE html>
<html>
<head>
<style>
.spoiler-hidden { background-color: gray; color: gray; cursor: pointer; }
</style>
</head>
<body>
<p class="spoiler">CONTENT FLAGS: Clowns, Rich People, Extended Sounds Of Brutal Pipe Murder</p>