Skip to content

Instantly share code, notes, and snippets.

View gustavohenrique's full-sized avatar

Gustavo Henrique gustavohenrique

View GitHub Profile

Golang Styleguide

Esse guia tem como objetivo manter um estilo de codificação consistente dentro de uma organização com foco em melhorar a legibilidade, a manutenção e a colaboração do código.

Formatação do código

  • Utilize gofmt e goimports antes de fazer um commit, via make lint
  • O código dever ser indentado com tabs. Configure .editorconfig para aplicar suas preferências no seu editor
  • Utilize CamelCase para variables, types, functions e constants
  • Utilize line length de 130 caracteres
@gustavohenrique
gustavohenrique / docker-multipass-macos.md
Created December 3, 2023 13:43
Rodar docker dentro do multipass ao invés do docker desktop no Mac

O ano é 2023 e a experiência de utilizar Docker no Mac continua sofrível se comparado com rodar no Linux. Então voltei a utilizar o Multipass no lugar do Docker Desktop.

Criar uma instancia do multipass contendo Docker

multipass launch docker --name docker
multipass shell docker
package main
import (
"fmt"
"log"
"os"
"path/filepath"
"github.com/fsnotify/fsnotify"
)
@gustavohenrique
gustavohenrique / photo-organize.py
Last active May 5, 2023 11:31
Organize my photos taken by my smartphone
# SETUP
# pip install exif geopy
# python photo-organize.py ~/Pictures/Camera
#
# What happens?
# Organize all photos in Camera dir to dirs according to datetime and location. Ex: ~/Pictures/Camera/2023-05-06_rj-cabo-frio
import sys
import os
import re
@gustavohenrique
gustavohenrique / k8s-lxd.md
Last active March 8, 2023 13:24
Configure kubernetes on LXD containers

Create LXD containers

cat > k8s-profile.yaml <<EOF
config:
  linux.kernel_modules: xt_conntrack,ip_tables,ip6_tables,netlink_diag,nf_nat,overlay
  raw.lxc: "lxc.apparmor.profile=unconfined\nlxc.cap.drop= \nlxc.cgroup.devices.allow=a\nlxc.mount.auto=proc:rw sys:rw\nlxc.mount.entry=/dev/kmsg dev/kmsg none defaults,bind,create=file"
  security.privileged: "true"
  security.nesting: "true"
EOF
@gustavohenrique
gustavohenrique / sendmail.go
Created June 20, 2022 15:18
Send mail using Go stdlib
package main
import (
"fmt"
"bytes"
"crypto/tls"
"encoding/base64"
"fmt"
"net/mail"
"net/smtp"
@gustavohenrique
gustavohenrique / kops-kubernetes.md
Created May 18, 2022 13:49
Kubernetes in AWS by Kops [2018]

Kubernetes na AWS

1. Criando o cluster com Kops

  1. Crie um grupo kops contendo as rules abaixo, crie também um usuário kops e adicione-o ao grupo:
AmazonEC2FullAccess
AmazonRoute53FullAccess
AmazonS3FullAccess
@gustavohenrique
gustavohenrique / gocache-magento2.md
Last active June 7, 2022 22:58
Estória para desenvolvimento do módulo do Magento 2

Cenário

Utilizamos a GoCache como CDN para fazer cache de arquivos estáticos (imagens, css e javascript) e conteúdo dinâmico, como nome, descrição e preço de um produto.

Todo o tráfego do usuário passa pela CDN antes de chegar no sistema Magento. Então a CDN faz cache do conteúdo e os usuários passam a obter a informação do site à partir do cache, não mais do Magento.

É comum que uma plataforma de ecommerce precise alterar imagens, descrição e preços dos produtos com frequência. Mesmo depois dessa alteração ser feita no Magento, os usuários continuam obtendo as informações desatualizadas do cache. Por isso, precisamos de um módulo no qual consiga limpar o cache da CDN sempre que alguma informação for alterada no Magento.

Solução

@gustavohenrique
gustavohenrique / Makefile
Created February 1, 2022 18:15
Auto documentation makefile
.DEFAULT_GOAL := help # Sets default action to be help
define PRINT_HELP_PYSCRIPT # start of Python section
import re, sys
output = []
# Loop through the lines in this file
for line in sys.stdin:
# if the line has a command and a comment start with
# two pound signs, add it to the output
@gustavohenrique
gustavohenrique / openurl.go
Created November 17, 2021 13:51
open url golang
func openURL(url string) error {
var err error
switch runtime.GOOS {
case "linux":
err = exec.Command("xdg-open", url).Start()
case "windows":
err = exec.Command("rundll32", "url.dll,FileProtocolHandler", "http://localhost:4001/").Start()
case "darwin":
err = exec.Command("open", url).Start()
default: