Skip to content

Instantly share code, notes, and snippets.

View KaiserWerk's full-sized avatar

Robin K. KaiserWerk

  • Germany
  • 11:04 (UTC +02:00)
View GitHub Profile
@KaiserWerk
KaiserWerk / IoC.cs
Last active December 30, 2020 20:54
C# MVVM Simple Implementation
using System;
using System.Collections.Generic;
namespace Mvvm
{
public class Ioc
{
private static Dictionary<Type, object> classes = new Dictionary<Type, object>();
public static void Register<T>(params object[] parameters) where T : class
{
@KaiserWerk
KaiserWerk / gracefulShutdownWebserver.go
Last active February 29, 2024 18:06
Golang: Webserver with graceful shutdown
package main
import (
"context"
"fmt"
"net/http"
"os"
"os/signal"
"time"
)
@KaiserWerk
KaiserWerk / console_input_nonblocking.go
Created May 20, 2020 08:33
Golang read console input in a non-blocking way
go func() {
reader := bufio.NewReader(os.Stdin)
for {
input, _, err := reader.ReadLine()
if err != nil {
fmt.Printf("could not process input %v\n", input)
}
switch string(input) {
case "hello":
fmt.Println("hello world")
@KaiserWerk
KaiserWerk / dummy.service
Last active July 24, 2022 11:13
Barebone systemd user service
// place into ~/.config/systemd/user/your-service-file.service
// more info: https://www.unixsysadmin.com/systemd-user-services/
[Unit]
Description=Run dummy service as user X
DefaultDependencies=no
After=network.target
[Service]
Type=simple
@KaiserWerk
KaiserWerk / basic_webserver_setup.go
Last active November 24, 2020 18:03
Basic Golang Webserver Setup
package main
var (
env string
)
func main() {
flag.StringVar(&env, "e", "dev", "The environment to run at (prod, test, dev)")
flag.Parse()
@KaiserWerk
KaiserWerk / slices1.go
Last active November 17, 2020 18:25
Why does this not work?
package main
import "fmt"
type myStruct struct {
id int
messages []Message
}
type Message struct {
@KaiserWerk
KaiserWerk / populate_templates.go
Created October 31, 2020 20:56
Populate template map in Go
func populateTemplates(fm template.FuncMap) map[string]*template.Template {
result := make(map[string]*template.Template)
const basePath = "templates"
layout := template.Must(template.ParseFiles(basePath + "/_layout.html")).Funcs(fm)
dir, err := os.Open(basePath + "/content")
if err != nil {
panic("failed to open template base directory: " + err.Error())
}
defer dir.Close()
fis, err := dir.Readdir(-1)
// inspired by https://gist.github.com/samuel/8b500ddd3f6118d052b5e6bc16bc4c09
func generateSelfSignedCert(certPath string, keyPath string) {
// priv, err := rsa.GenerateKey(rand.Reader, *rsaBits)
priv, err := ecdsa.GenerateKey(elliptic.P521(), rand.Reader)
if err != nil {
log.Fatal(err)
}
template := x509.Certificate{
SerialNumber: big.NewInt(time.Now().UnixNano()),
@KaiserWerk
KaiserWerk / GenericRepository.cs
Last active January 9, 2021 22:28
C# Repository pattern
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
namespace Core.Repositories
{
public abstract class GenericRepository<T> : IRepository<T> where T : class
{
protected MyDbContext context;
@KaiserWerk
KaiserWerk / ConcurrentList.cs
Last active January 12, 2021 12:12
C' Example Concurrent Collection Implementations
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConcurrencyTests
{
public class ConcurrentList<T>
{
private List<T> internalList = new List<T>();
private object listLock = new object();