Skip to content

Instantly share code, notes, and snippets.

func populate(v reflect.Value, value string) error {
switch v.Kind() {
case reflect.String:
v.SetString(value)
case reflect.Int:
i, err := strconv.ParseInt(value, 10, 64)
if err != nil {
return err
}
v.SetInt(i)
@unwosu
unwosu / file_size_checker.go
Last active September 11, 2019 14:07
File Size Checker
import (
"errors"
"io"
)
type FileSizeReader struct {
reader io.Reader
currentSize int64
limit int64
exceededErr bool
@unwosu
unwosu / defer.h
Created June 20, 2019 22:49
Go defer impl in cpp
#ifndef _DEFER_FN
#define _DEFER_FN
#include <functional>
#include <utility>
#define CONCAT_(a, b) a##b
#define CONCAT(a, b) CONCAT_(a, b)
#define DEFER(fn) ScopeGuard CONCAT(__defer__, __LINE__) = [&] ( ) { fn ; }
@unwosu
unwosu / counting_sort.cpp
Last active May 31, 2019 12:59
counting sort with negative numbers
#include <iostream>
#include <vector>
#include <unordered_map>
#include <limits>
void counting_sort(vector<int> &v)
{
int n = v.size();
unordered_map<int, int> map;
@unwosu
unwosu / counting_sort_with_map.py
Created March 28, 2019 10:53
Counting sort with map
import sys
from random import randint
def counting_sort(nums):
pair = {}
# set the min num
min_num = sys.maxsize
# set the max number
max_num = -sys.maxsize - 1
@unwosu
unwosu / zombie_cluster.py
Created March 2, 2019 23:45
Zombie Cluster Problem
mat = [
[1, 0, 0, 1],
[0, 1, 0, 0],
[1, 0, 1, 0],
[0, 1, 0, 1],
]
def dfs(mat, x: int, y: int) -> int:
if ((x < 0) or
@unwosu
unwosu / bulkinsert.go
Created October 11, 2018 22:44
Bulk Insert with postgres
func BulkInsert(unsavedRows []*ExampleRowStruct) error {
valueStrings := make([]string, 0, len(unsavedRows))
valueArgs := make([]interface{}, 0, len(unsavedRows) * 3)
i := 0
for _, post := range unsavedRows {
valueStrings = append(valueStrings, fmt.Sprintf("($%d, $%d, $%d)", i*3+1, i*3+2, i*3+3))
valueArgs = append(valueArgs, post.Column1)
valueArgs = append(valueArgs, post.Column2)
valueArgs = append(valueArgs, post.Column3)
i++
@unwosu
unwosu / merge.js
Created October 5, 2018 16:02
ReadStream concatenation
const merge = (...streams) => {
let pass = new PassThrough();
let waiting = streams.length;
for (let stream of streams) {
pass = stream.pipe(pass, {end: false})
stream.once("end", () => --waiting === 0 && pass.emit("end"));
}
return pass
}
@unwosu
unwosu / concat.go
Last active March 28, 2019 10:54
faster string concat golang
func concat(s ...string) string {
var sum int
for _, i := range s {
sum += len(i)
}
res := make([]byte, sum)
var counter int
for _, y := range s {
for i := 0; i < len(y); i++ {
res[counter] = y[i]
@unwosu
unwosu / mmapgo.go
Last active November 27, 2022 23:14
Using mmap to perform encryption of files on disk in golang
package main
import (
"crypto/cipher"
"crypto/rand"
"encoding/binary"
"io"
"io/ioutil"
"net/http"
"os"