Skip to content

Instantly share code, notes, and snippets.

View bgadrian's full-sized avatar
✍️
available for OSS Go packages

B.G.Adrian bgadrian

✍️
available for OSS Go packages
View GitHub Profile
@bgadrian
bgadrian / app.yaml
Created November 4, 2018 17:58
App Engine for Go 1.11 servers (goswagger.io or custom)
runtime: go111
service: myservice
env_variables:
HOST: "0.0.0.0"
instance_class: B1
basic_scaling:
max_instances: 2
idle_timeout: 15m
@bgadrian
bgadrian / Dockerfile
Last active March 19, 2019 08:36
Multi phase Go 1.11 module builder and scratch container for a swagger web service
FROM golang:1.11.1 AS builder
WORKDIR /src
#avoid downloading the dependencies on succesive builds
COPY go.mod go.sum ./
RUN go mod download
RUN go mod verify
COPY . .
RUN mkdir -p ./build/
@bgadrian
bgadrian / gracefulshutdown.go
Last active October 31, 2018 08:35
Secure simple web server in Go (general snippets)
c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt)
// Block until we receive our signal.
<-c
log.Println("shutting down signal received, waiting ...")
ctx, cancel := context.WithTimeout(context.Background(), time.Second*15)
defer cancel()
srv.Shutdown(ctx)
@bgadrian
bgadrian / create-VM-with-dockermachine-gcloud.sh
Last active September 28, 2018 08:32
Google cloud gists
#if you use gcloud but the app requires
gcloud auth application-default login
export GOOGLE_APPLICATION_CREDENTIALS="/home/$USER/.config/gcloud/application_default_credentials.json"
#https://docs.docker.com/machine/drivers/gce/#example
docker-machine create --driver google --google-project YOURPORJECTID --google-machine-type f1-micro VMNAME
@bgadrian
bgadrian / GolangCPUProfiles.sh
Last active February 28, 2024 04:05
Golang Flame graph profiles
#install FlameGraph library
cd /opt/
sudo git clone https://github.com/brendangregg/FlameGraph.git
#make it accesible from any folder
vim ~/.bashrc
##add these lines anywhere and exit vim (if you can)
export FLAMEPATH=/opt/FlameGraph
PATH=$PATH:$FLAMEPATH
@bgadrian
bgadrian / set.go
Last active April 23, 2024 13:50
How to implement a simple set data structure in golang
type Set struct {
list map[int]struct{} //empty structs occupy 0 memory
}
func (s *Set) Has(v int) bool {
_, ok := s.list[v]
return ok
}
@bgadrian
bgadrian / setup.dev.sh
Last active October 25, 2022 21:38
Linux web dev setup (made for ubuntu 17+)
#chrome
cd /tmp
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt-get -f install
#docker
sudo apt-get update
sudo apt-get install -y \
apt-transport-https \
@bgadrian
bgadrian / fibonacci_test.go
Created December 17, 2017 13:47
Fibonacci in Go
func TestFibonacci(t *testing.T) {
f := func(n int) (r int) {
a, b := 0, 1
for i := 2; i <= n; i++ {
b, a = a+b, b
}
return b
}
@bgadrian
bgadrian / vncserver@.service
Last active December 1, 2017 19:57
AWS - ubuntu - GUI setup
#/etc/systemd/system/ folder
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=YOURUSER
PAMName=login
PIDFile=/home/YOURUSER/.vnc/%H:%i.pid
@bgadrian
bgadrian / basic.sh
Created November 17, 2017 20:27
GCloud SDK first deploy
gcloud init
gcloud auth login
gcloud config set project newID
#create the app from the UI or ... gcloud app create --region="us-central"
gcloud app deploy --verbosity="info"