Skip to content

Instantly share code, notes, and snippets.

@danfoust
danfoust / launch.json | with npm script
Created Apr 13, 2022
Serverless Offline launch.json for breakpoints
View launch.json | with npm script
{
"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 Apr 8, 2022
Narrow string | number union with utility type
View string-keys.type.ts
/*
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 Dec 30, 2020
Work will only take as long as slowest process
View scatter-gather.go
// 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 Dec 30, 2020
Async/Await in Golang
View async-await.go
c := make(chan User, 1)
go func() { c <- getUser() }() // async
user := <-c // await
@danfoust
danfoust / .vimrc
Created Dec 2, 2020
My custom Vim configuration
View .vimrc
" Show line numbers
set nu
" Enable filetype plugins
filetype plugin on
filetype indent on
"Always show current position
set ruler
@danfoust
danfoust / nginx_Dockerfile
Created Nov 23, 2020
Basic Nginx + PHP-FPM Docker config
View nginx_Dockerfile
FROM nginx:1.19.4-alpine
COPY default.conf /etc/nginx/conf.d/
WORKDIR /var/www/html
@danfoust
danfoust / main.go
Last active Nov 22, 2020
Simple Go HTTP Test
View main.go
package main
import (
"fmt"
"net/http"
)
func IndexHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello World")
}
View settings.json
{
// -> Files
"files.trimTrailingWhitespace": true,
// -> Editor
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.renderWhitespace": "all",
"editor.formatOnPaste": true,
"editor.codeActionsOnSave": {
@danfoust
danfoust / actions.php
Last active Nov 21, 2020
Useful Wordpress setup
View actions.php
add_action( 'init', function() {
// Remove the REST API endpoint.
remove_action('rest_api_init', 'wp_oembed_register_route');
// Turn off oEmbed auto discovery.
// Don't filter oEmbed results.
remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10);
// Remove oEmbed discovery links.
@danfoust
danfoust / certgen.sh
Last active Nov 21, 2020
Create new SSL certs
View certgen.sh
#!/bin/bash
source /usr/bin/cprintf.sh
###########################################################
# Generate a new SSL
# @param string $1 domain
if [ -n "$1" ]; then
domain="$1"