Skip to content

Instantly share code, notes, and snippets.

View dlisboa's full-sized avatar

Diogo Lisboa dlisboa

View GitHub Profile
@dlisboa
dlisboa / foo.go
Created July 26, 2024 21:17
Set global variables on build time in Go
package main
import "fmt"
// set these vars on build time:
// go build -ldflags "-X main.version=v1.2.3 -X main.commit=$(git rev-parse --short HEAD) -X main.date=$(date -u '+%Y-%m-%dT%H:%M:%S')" -o foo -v ./foo.go
var (
service = "some-service"
version string
commit string
@dlisboa
dlisboa / pprof_example.go
Last active July 19, 2024 19:14
pprof_example.go
package main
import (
"flag"
"log"
"os"
"runtime/pprof"
)
var (
@dlisboa
dlisboa / load_render.go
Last active July 12, 2024 17:38
Example Page Load/Render phase
package main
import (
"io"
"net/http"
"net/url"
)
func main() {
// ...
@dlisboa
dlisboa / after_rangefunc.go
Last active July 18, 2024 17:14
Go Range over Func refactoring
func SeedTable(t *testing.T, db *sql.DB, data string) error {
for _, seed := range seeds(data) {
_, err := db.Exec(query(seed))
if err != nil {
return err
}
}
return nil
}
@dlisboa
dlisboa / tee_handler_with_signal.go
Last active July 3, 2024 12:10
Slog TeeHandler with signal for level change
package main
import (
"context"
"errors"
"fmt"
"log/slog"
"os"
"os/signal"
"syscall"
package main
import "net/url"
import "regexp"
import "fmt"
import "os"
import "encoding/json"
type Username struct {
String string
@dlisboa
dlisboa / middleware.go
Last active May 9, 2024 17:56
Go Middlewares
package middleware
import (
"net/http"
"strings"
)
func Method(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.Method == http.MethodPost {
@dlisboa
dlisboa / Makefile
Last active May 3, 2024 18:35 — forked from alexedwards/Makefile
Boilerplate Makefile for Go projects
# !!!!!
# VEJA A VERSÃO SIMPLIFICADA ABAIXO
# !!!!!
# Change these variables as necessary.
MAIN_PACKAGE_PATH := ./cmd/example
BINARY_NAME := example
# ==================================================================================== #
# HELPERS

Casos de uso

Cliente compra uma subscription

sequenceDiagram
    App->>Customer: purchase(plan, recurrence)
    Customer->>Subcription: constructor(plan, recurrence)
    Subcription->>Plan: get_products
 Plan-->>Subcription: list of products
@dlisboa
dlisboa / reset.css
Created March 31, 2022 17:19
Modern CSS reset
/*
Josh's Custom CSS Reset
https://www.joshwcomeau.com/css/custom-css-reset/
*/
*, *::before, *::after {
box-sizing: border-box;
}
* {
margin: 0;
}