Skip to content

Instantly share code, notes, and snippets.

View STRML's full-sized avatar

Samuel Reed STRML

View GitHub Profile
@STRML
STRML / bat-download.js
Last active March 22, 2024 22:58
A simple script for downloading all images for a listing on BringATrailer.com
async function ensureCarouselVisible() {
const imgWrap = document.elementFromPoint(100, 100);
if (!imgWrap.classList.contains('pswp__item')) {
// carousel isn't active, make it so
document.querySelector('.gallery img').click();
while (!document.elementFromPoint(100, 100).classList.contains('pswp__item')) {
await delay(50);
}
}
}
@STRML
STRML / zha-lutron-aurora-smart-area-blueprint.yaml
Last active September 12, 2023 19:42 — forked from blizzrdof77/zha-lutron-aurora-smart-area-blueprint.yaml
HASS Blueprint | ZHA - Lutron Aurora Smart Area with Night-Light Dimmer
blueprint:
name: ZHA - Lutron Aurora Dimmer Expanded v1.5
description: Control lights with a Lutron Aurora Dimmer Pressing in the dimmer button will toggle between turning lights on to full brightness, and turning the lights off. Rotating the dimmer will increase and decrease the light brightness. Adjust the sensitivity if updates from the dimmer are being sent too quickly.
domain: automation
input:
remote:
name: Lutron Aurora Dimmer Switch
description: Lutron Aurora Z3-1BRL
selector:
device:
@STRML
STRML / gist:2117f574726bdf0b8d58
Created June 24, 2015 19:38
Relying on React as an external

The problem:

When writing a React component, you want to target all environments. It is easy to generate a build that will work on the server and browser with Webpack, and as a bonus you can use loaders (like babel-loader for ES6 code).

When you generate this bundle, you should rely on "react" as an external so it isn't included in the bundle. In all environments this is desired behavior so you don't duplicate "react" and break it. This is necessary both because it would make a much larger bundle than necessary, but also because React behaves badly when multiple copies are loaded.

If you do this, you'll end up with a UMD shim like:

(function webpackUniversalModuleDefinition(root, factory) {
@STRML
STRML / ResizeSensor.js
Created April 21, 2018 03:49
A resize sensor component for React that doesn't use iframes, objects, or require ResizeObservers.
// @flow
import * as React from 'react';
type Dimensions = {width: number, height: number, ref: ?HTMLElement};
type Props = {
children?: React.Node,
className?: string,
onResize: (dimensions: Dimensions) => any,
};
// @flow
const crypto = require('crypto');
module.exports = WebpackStableChunkHash;
function WebpackStableChunkHash() {}
WebpackStableChunkHash.prototype.apply = function(compiler) {
//
// For a while, webpack has had issues with [chunkhash] being unstable and not reflecting the actual
@STRML
STRML / overrideSlack.lua
Created July 10, 2015 14:14
Lua snippet for Hammerspoon to bind ctrl-tab and ctrl-shift-tab back to switching channels.
--
-- Fix Slack's channel switching.
-- This rebinds ctrl-tab and ctrl-shift-tab back to switching channels,
-- which is what they did before the Teams update.
--
-- Slack only provides alt+up/down for switching channels, (and the cmd-t switcher,
-- which is buggy) and have 3 (!) shortcuts for switching teams, most of which are
-- the usual tab switching shortcuts in every other app.
--
local ctrlTab = hotkey.new({"ctrl"}, "tab", function()
@STRML
STRML / gist:3154212
Created July 21, 2012 01:47
Variable declaration hoisting
(function foo(){bar = 10; var bar = 20;}());
alert(bar) // ReferenceError: bar is not defined
(function foo(){bar = 10;}());
alert(bar) // 10
@STRML
STRML / fixperms.sh
Created June 30, 2012 19:11
A few useful files for running a nodejs server. I keep update-project.js in /root so when I ssh in I can just run it. my-project.conf runs the project as the user 'www-data', and so fixperms.sh makes sure the project folder is readable/writable.
#!/bin/sh
T=/usr/local/mycompany/my-project
chown -R www-data:root $T
find $T -type d ! -perm 770 -print -exec chmod 770 {} \;
find $T -type f ! -perm 660 ! -name "*.sh" -print -exec chmod 660 {} \;
find $T -type f ! -perm 770 -name "*.sh" -print -exec chmod 770 {} \;
@STRML
STRML / dumpExtLoader.js
Created May 10, 2012 13:51
Simple PhantomJS file that dumps the contents of Ext.Loader
var page = require('webpage').create(),
t, address;
if (phantom.args.length === 0) {
console.log('Usage: dumpExtLoader.js <some URL>');
phantom.exit();
} else {
page.onConsoleMessage = function (msg) {
console.log(msg);
};
@STRML
STRML / phantomjs-jsb.js
Created May 10, 2012 13:07
Working phantomjs-jsb.js for use with ExtJS4 & (experimentally) Sencha Touch 2
// This belongs in %SDK%/compat/scripts/
(function() {
var defaultJsb3Object = {
"projectName": "Project Name",
"licenseText": "Copyright(c) 2012 Company Name",
"builds": [
{
"name": "All Classes",
"target": "all-classes.js",