This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
window.jColors = ['red', 'blue', 'brown', 'orange', 'yellow', 'pink', 'lightblue', 'lightgreen', 'lightgray']; | |
window.lColors = ['white', 'black', 'purple', 'darkgray', '#009']; | |
window.lWidths = [5, 10, 20]; | |
window.jCols = parseInt(document.getElementById('info-creator').innerText.match(/(\d+)×/)[1]); | |
window.jC = 0; | |
CanvasRenderingContext2D.prototype.putImageData = function(imageData, dx, dy){ | |
const col = window.jC % window.jCols; | |
const row = Math.floor(window.jC / window.jCols); | |
this.fillStyle = window.jColors[col % window.jColors.length]; | |
this.fillRect(-1000,-1000,2000,2000); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Given an array of points, returns the convex hull over those points. | |
*/ | |
function convex_hull_over( array $points ): array { | |
$cross = function($o, $a, $b) { | |
return ($a[0] - $o[0]) * ($b[1] - $o[1]) - ($a[1] - $o[1]) * ($b[0] - $o[0]); | |
}; | |
$pointCount = count($points); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name WooCom Component Enumerator | |
// @namespace woo.com.danq.me | |
// @match https://woo.com/* | |
// @match https://woocommerce.test/* | |
// @grant none | |
// @version 1.0 | |
// @author - | |
// @description Lists detected WooCom PHP/React components in the console.log as-you-browse. | |
// ==/UserScript== |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SITE = 'https://danq.me/'; | |
NEW_SIZE = 234; | |
me = document.querySelector(`a[href="${SITE}"]`).closest('li'); | |
before = me.querySelector('.before'); | |
after = me.querySelector('.after'); | |
i = parseInt(after.innerText); | |
ticker = function(){ | |
i += (i > NEW_SIZE ? -1 : 1); | |
before.style.setProperty('--data-size', i); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
require 'bundler/inline' | |
# # Sample crontab: | |
# # Every twenty minutes, run the script and log the results | |
# */20 * * * * ~/bbc-news-rss-filter-sport-out.rb > ~/bbc-news-rss-filter-sport-out.log 2>>&1 | |
# Dependencies: | |
# * open-uri - load remote URL content easily | |
# * nokogiri - parse/filter XML |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Footnotes | |
*/ | |
function footnote($atts, $content = '') { | |
global $footnote_number, $footnote_contents; | |
$footnote_number ??= 0; | |
$footnote_contents ??= []; | |
$footnote_number++; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Download JSON cachelogs | |
// @namespace dllogs.geocaching.danq.me | |
// @match https://www.geocaching.com/geocache/* | |
// @grant GM_registerMenuCommand | |
// @version 1.0 | |
// @author Dan Q | |
// @description Download all logs against a particular Geocaching.com geocache as a JSON file | |
// ==/UserScript== |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// half-hearted CSS minification | |
$css = preg_replace( | |
array('/\s*(\w)\s*{\s*/','/\s*(\S*:)(\s*)([^;]*)(\s|\n)*;(\n|\s)*/','/\n/','/\s*}\s*/'), | |
array('$1{ ','$1$3;',"",'} '), | |
file_get_contents('linked.css') | |
); | |
// embed as a data: uri | |
$base64css = rtrim(strtr(base64_encode($css), '+/', '-_'), '='); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Foundry + Nginx install script for Debian 12 | |
# -------------------------------------------- | |
# Perequisites: | |
# - unzip - used to decompress Foundry once downloaded | |
# - nodejs - required to run Foundry | |
# - nvm - used to install pm2 | |
# - ufw - firewall: used to ensure that connections can only be made to Foundry via Nginx, among other benefits | |
# - nginx - provides HTTPS frontend to Foundry | |
# - certbot - gets free SSL certificate, used by Nginx |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
define('SECRET_PASSWORD', 'YOUR-SECRET-PASSWORD-GOES-HERE'); | |
if($_GET['pw'] != SECRET_PASSWORD) http_response_code(403) && die(); | |
$ch = curl_init(); | |
curl_setopt($ch, CURLOPT_URL, $_GET['url']); | |
curl_setopt($ch, CURLOPT_HEADER, 0); | |
curl_setopt($ch, CURLOPT_REFERER, $_GET['referer']); | |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); |
NewerOlder