Skip to content

Instantly share code, notes, and snippets.

@danfoust
danfoust / gist:0a85eca3fe71e69ecfeb1851fb7d5fb6
Created February 23, 2025 19:23
uBlock Origin - Hide search results by domain
# Desktop
www.google.com##div[class="g"]:has(a[href*="example.com"])
# Mobile
www.google.com##div[lang="en"]:has(a[href*="example.com"])
@danfoust
danfoust / .aliases
Last active December 22, 2024 15:40
Useful shell aliases
# Copy last command
alias copy_last_cmd="fc -ln -1 | tr -d '\n' | xclip -selection clipboard"
# Disk usage
alias usage='du -ch | grep total'
# Permissions
alias perm='stat -c "%a %n" *'
# Print $PATH entries on newlines
@danfoust
danfoust / Dockerfile
Created October 27, 2024 17:53
Local Ansible - Vagrant with Docker Provider
##############################################################################################
# This helps unblock me on following a long with materials for learning Ansible and Kubernetes
# locally, which rely on a VM service.
#
# I did not want to use VirtualBox, because on Linux it requires tainting the kernel. I also
# already have Docker installed and it's said to have better performance/less overhead.
#
# This Dockerfile will setup an Ubuntu container and configure it to support SSH, which is
# required for testing Ansible locally with Vagrant.
#
@danfoust
danfoust / launch.json | with npm script
Created April 13, 2022 01:27
Serverless Offline launch.json for breakpoints
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Serverless Offline",
"type": "node",
"request": "launch",
"cwd": "${workspaceRoot}/backend",
"runtimeExecutable": "npm",
"runtimeArgs": ["run-script", "debug"]
@danfoust
danfoust / string-keys.type.ts
Created April 8, 2022 15:11
Narrow string | number union with utility type
/*
If you try to do `keyof SomeType`, and `SomeType` has an interface of `[key: string]: x`
TypeScript will infer that to a union of `string | number` because JavaScript coerces numeric
indexes to strings.
Example: obj[0] -> obj["0"]
This can make it annoying to try to create an interface for interacting with one of these
types when we know we only want to accept string values, or that's a rule we want to enforce.
@danfoust
danfoust / scatter-gather.go
Created December 30, 2020 12:55
Work will only take as long as slowest process
// Scatter
c := make(chan result, 10)
for i := 0; i < cap(c); i++ {
go func() {
val, err := process()
c <- result{val, err}
}()
}
// Gather
@danfoust
danfoust / async-await.go
Created December 30, 2020 12:52
Async/Await in Golang
c := make(chan User, 1)
go func() { c <- getUser() }() // async
user := <-c // await
@danfoust
danfoust / nginx_Dockerfile
Created November 23, 2020 02:39
Basic Nginx + PHP-FPM Docker config
FROM nginx:1.19.4-alpine
COPY default.conf /etc/nginx/conf.d/
WORKDIR /var/www/html
@danfoust
danfoust / main.go
Last active November 22, 2020 15:11
Simple Go HTTP Test
package main
import (
"fmt"
"net/http"
)
func IndexHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello World")
}
@danfoust
danfoust / settings.json
Created October 29, 2020 12:21
VSCode Settings
{
// -> Files
"files.trimTrailingWhitespace": true,
// -> Editor
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.renderWhitespace": "all",
"editor.formatOnPaste": true,
"editor.codeActionsOnSave": {