Skip to content

Instantly share code, notes, and snippets.

View yakuter's full-sized avatar
💭
Working #golang @binalyze

Erhan Yakut yakuter

💭
Working #golang @binalyze
View GitHub Profile
@yakuter
yakuter / empty-struct-1.go
Last active November 3, 2022 19:40
Empty Struct
// Versiyon 1
package main
import "fmt"
type Foo struct{}
func main() {
a := &Foo{}
b := &Foo{}
@yakuter
yakuter / multipart-pipe.go
Last active September 27, 2022 08:42
Multipart and Pipe file stream
// This example shows how to send files via pipe using multipart package
package main
import (
"errors"
"fmt"
"io"
"mime/multipart"
"os"
@yakuter
yakuter / distro.sh
Created May 2, 2022 04:30
distro sh function
# distro prints the detected operating system including linux distros.
# Also parses ID_LIKE for common distro bases.
#
# Example outputs:
# - macos -> macos
# - freebsd -> freebsd
# - ubuntu, raspbian, debian ... -> debian
# - amzn, centos, rhel, fedora, ... -> fedora
# - opensuse-{leap,tumbleweed} -> opensuse
# - alpine -> alpine
# Private Keys and Certificates in this file generated with the commands below
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 365000 \
-key ca-key.pem \
-out ca-cert.pem \
-addext "subjectAltName = IP:127.0.0.1"
openssl req -newkey rsa:2048 -nodes -days 365000 \
@yakuter
yakuter / ast_walk.go
Created February 24, 2022 06:56
AST walk example
func main() {
fs := token.NewFileSet()
f, err := parser.ParseFile(fs, "", "package main\nvar x int = 9\nfunc main(){b:=2}", parser.AllErrors)
if err != nil {
log.Fatal(err)
}
var v visitor
ast.Walk(v, f)
//fmt.Printf("%#v",f)
}
@yakuter
yakuter / golang-ca-certs-windows.go
Last active February 14, 2022 08:55
Golang Windows System CA Certificates
// +build windows
package main
import (
"crypto/x509"
"fmt"
"syscall"
"unsafe"
)
@yakuter
yakuter / args.go
Last active February 7, 2022 06:18
A nice args (arguments) interface for golang projects
type Args interface {
// Get returns the nth argument, or else a blank string
Get(n int) string
// First returns the first argument, or else a blank string
First() string
// Tail returns the rest of the arguments (not the first one)
// or else an empty string slice
Tail() []string
// Len returns the length of the wrapped slice
Len() int
@yakuter
yakuter / cancel-io-copy.go
Created April 25, 2021 19:25
IO Copy cancellation
// Source: https://ixday.github.io/post/golang-cancel-copy/
import (
"io"
"context"
)
// here is some syntaxic sugar inspired by the Tomas Senart's video,
// it allows me to inline the Reader interface
type readerFunc func(p []byte) (n int, err error)
@yakuter
yakuter / geekday.go
Created April 4, 2021 13:21
Go parametreleri dosyaya yazan uygulama
package main
import (
"log"
"os"
)
func main() {
file, err := os.OpenFile("geekday.txt", os.O_CREATE|os.O_APPEND|os.O_RDWR, 0644)
if err != nil {
@yakuter
yakuter / convert.go
Created July 28, 2020 00:07
String Byte Conversion Without Memory Allocation
// b2s converts byte slice to a string without memory allocation.
// See https://groups.google.com/forum/#!msg/Golang-Nuts/ENgbUzYvCuU/90yGx7GUAgAJ .
//
// Note it may break if string and/or slice header will change
// in the future go versions.
func b2s(b []byte) string {
/* #nosec G103 */
return *(*string)(unsafe.Pointer(&b))
}