Skip to content

Instantly share code, notes, and snippets.

View f3nry's full-sized avatar

Paul Henry f3nry

  • Coinbase
  • Oakland, CA
View GitHub Profile
@f3nry
f3nry / main.go
Created February 1, 2019 01:17
Third Attempt: Length-prefix Construction
const (
payloadLen = 1
sizeLen = 4
headerLen = payloadLen + sizeLen
)
func msgHeader(data []byte) (hdr []byte, payload []byte) {
hdr = make([]byte, headerLen)
hdr[0] = byte(uint8(0))
@f3nry
f3nry / main.go
Created February 1, 2019 01:17
Second Attempt: Responding with protobuf
func handler(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
message := &api.AliveResponse{Message: "Hello, world."}
b, err := proto.Marshal(message)
if err != nil {
return events.APIGatewayProxyResponse{
StatusCode: 500,
}, err
}
@f3nry
f3nry / output.log
Created February 1, 2019 01:16
gRPC Log Output
http2: Framer 0xc0002c8380: wrote SETTINGS len=0
http2: Framer 0xc0002c8380: read SETTINGS len=18, settings: MAX_CONCURRENT_STREAMS=128, INITIAL_WINDOW_SIZE=65536, MAX_FRAME_SIZE=16777215
http2: Framer 0xc0002c8380: read WINDOW_UPDATE len=4 (conn) incr=2147418112
http2: Framer 0xc0002c8380: wrote SETTINGS flags=ACK len=0
http2: Framer 0xc0002c8380: wrote HEADERS flags=END_HEADERS stream=1 len=84
http2: Framer 0xc0002c8380: wrote DATA flags=END_STREAM stream=1 len=12 data="\x00\x00\x00\x00\a\n\x05Hello"
http2: Framer 0xc0002c8380: read SETTINGS flags=ACK len=0
http2: Framer 0xc0002c8380: read HEADERS flags=END_HEADERS stream=1 len=313
http2: Framer 0xc0002c8380: read DATA stream=1 len=15 data="\n\rHello, world."
http2: Framer 0xc0002c8380: read DATA flags=END_STREAM stream=1 len=0 data=""
@f3nry
f3nry / main.go
Created February 1, 2019 01:15
API Gateway gRPC: First attempt
func handler(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
return events.APIGatewayProxyResponse{
Body: "Hello, world.",
Headers: map[string]string{
"Content-Type": "application/grpc+proto",
},
StatusCode: 200,
}, nil
}
@f3nry
f3nry / main.go
Last active February 12, 2019 00:38
Simple Go gRPC Client
package main
import (
"context"
"flag"
"fmt"
"log"
"google.golang.org/grpc"
@f3nry
f3nry / protoc-gen-go.sh
Created February 1, 2019 01:12
Generating proto Go code from a definition
brew install protobuf
go get -u google.golang.org/grpc
go get -u github.com/golang/protobuf/protoc-gen-go
protoc -I=./api --go_out=plugins=grpc:./api ./api/hello.proto
@f3nry
f3nry / hello.proto
Created February 1, 2019 01:10
Simple gRPC Protobuf
// Location: api/hello.proto
syntax = "proto3";
option go_package = "api";
service Prod {
rpc Alive(AliveRequest) returns (AliveResponse) {}
}
message AliveRequest {
### Keybase proof
I hereby claim:
* I am f3nry on github.
* I am fenry (https://keybase.io/fenry) on keybase.
* I have a public key ASBPaQKqvBh3005h5-Y0h5Itb0kOhYOc-jtjEI1zHDu8vwo
To claim this, I am signing this object:
adder(3) do
adder(2) do
3
end
end
# => 8
@f3nry
f3nry / gist:4753221
Last active December 12, 2015 09:39
Initializing an array and setting an incredibly high index causes Ruby to immediately use all of the available memory due to initializing all previous values in the array to the high index. I'm using ruby 1.9.3p286 on a Macbook with 8 gb of ram.
some_array = []
some_array[Time.now.to_i] = 1