Skip to content

Instantly share code, notes, and snippets.

View seamusv's full-sized avatar

Seamus Venasse seamusv

  • Whitehorse, Yukon, Canada
View GitHub Profile
@seamusv
seamusv / lcache.go
Created July 5, 2021 17:05
Golang example of wrapping local cache and not have cache stampeding
package lcache
import (
"context"
"github.com/patrickmn/go-cache"
"golang.org/x/sync/singleflight"
"time"
)
type Cache struct {
@seamusv
seamusv / rxgo_panic_handler.go
Created May 21, 2021 04:15
Captures a panic from calling Map
package main
import (
"context"
"fmt"
"github.com/reactivex/rxgo/v2"
)
type MapFunc = func(ctx context.Context, i interface{}) (interface{}, error)
@seamusv
seamusv / usersShard.go
Created April 25, 2021 19:53
DynamoDB Table Querier with RxGo
package cmd
import (
"context"
"fmt"
"github.com/aws/aws-sdk-go-v2/service/dynamodb/types"
"github.com/seamusv/sparx/table_scanner/scanner"
"time"
"github.com/spf13/cobra"
@seamusv
seamusv / users.go
Created April 25, 2021 19:52
DynamoDB Table Querier with RxGo
package scanner
import (
"context"
"fmt"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/dynamodb"
"github.com/aws/aws-sdk-go-v2/service/dynamodb/types"
"github.com/reactivex/rxgo/v2"
)
@seamusv
seamusv / main.go
Created December 5, 2020 18:11
Dynamic sizing of worker pool
package main
import (
"log"
"sync"
"time"
)
type Processor struct {
queue chan int
@seamusv
seamusv / main.go
Last active October 1, 2020 20:59
Logger Linter
package main
import (
"fmt"
"go/ast"
"golang.org/x/tools/go/analysis"
"golang.org/x/tools/go/analysis/singlechecker"
)
var Analyzer = &analysis.Analyzer{
@seamusv
seamusv / main.go
Created October 1, 2020 20:19
AST Walker
package main
import (
"fmt"
"go/ast"
"go/parser"
"go/token"
)
func main() {
package pgsql
import (
"database/sql"
"errors"
"github.com/gogo/protobuf/jsonpb"
"github.com/gogo/protobuf/proto"
"strings"
)
@seamusv
seamusv / main.go
Created September 7, 2020 20:50
Test Distributed Lock
package main
import (
"fmt"
goredislib "github.com/go-redis/redis"
"github.com/go-redsync/redsync/v3"
"github.com/go-redsync/redsync/v3/redis"
"github.com/go-redsync/redsync/v3/redis/goredis"
"sync"
"time"